@one-paragon/angular-utilities 0.1.20 → 0.1.21
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/karma.conf.js +44 -0
- package/ng-package.json +7 -0
- package/package.json +16 -36
- package/src/action-state/action-state-spinner/action-state-spinner.component.css +16 -0
- package/src/action-state/action-state-spinner/action-state-spinner.component.html +3 -0
- package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +25 -0
- package/src/action-state/action-state-spinner/action-state-spinner.component.ts +22 -0
- package/src/action-state/action-state-ui/action-state-ui.module.ts +19 -0
- package/{action-state/index.d.ts → src/action-state/index.ts} +8 -4
- package/src/action-state/ngrx-ext/ngrx-ext.module.ts +15 -0
- package/src/action-state/ngrx.ts +69 -0
- package/src/http-request-state/HttpRequestStateFactory.ts +26 -0
- package/src/http-request-state/HttpRequestStateStore.ts +147 -0
- package/src/http-request-state/directives/HttpStateDirectiveBase.ts +38 -0
- package/src/http-request-state/directives/http-error-state-directive.ts +32 -0
- package/src/http-request-state/directives/http-inProgress-state-directive.ts +32 -0
- package/src/http-request-state/directives/http-notStarted-state-directive.ts +31 -0
- package/src/http-request-state/directives/http-success-state-directive.ts +31 -0
- package/{http-request-state/directives/index.d.ts → src/http-request-state/directives/index.ts} +0 -0
- package/src/http-request-state/directives/request-state-directive.spec.ts +72 -0
- package/src/http-request-state/directives/request-state-directive.ts +70 -0
- package/src/http-request-state/helpers.ts +30 -0
- package/src/http-request-state/http-request-state.ts +69 -0
- package/src/http-request-state/http-state-module.ts +26 -0
- package/{http-request-state/index.d.ts → src/http-request-state/index.ts} +1 -1
- package/src/http-request-state/observable.spec.ts +43 -0
- package/src/http-request-state/rxjs/getRequestorBody.ts +10 -0
- package/src/http-request-state/rxjs/getRequestorState.ts +8 -0
- package/{http-request-state/rxjs/index.d.ts → src/http-request-state/rxjs/index.ts} +0 -0
- package/src/http-request-state/rxjs/tapError.ts +16 -0
- package/src/http-request-state/rxjs/tapSuccess.ts +16 -0
- package/src/http-request-state/strategies.spec.ts +42 -0
- package/src/http-request-state/types.ts +50 -0
- package/src/ngrx/actionable-selector.ts +95 -0
- package/src/ngrx/index.ts +1 -0
- package/{public-api.d.ts → src/public-api.ts} +33 -15
- package/src/rxjs/defaultShareReplay.ts +8 -0
- package/{rxjs/index.d.ts → src/rxjs/index.ts} +4 -4
- package/src/rxjs/mapError.ts +8 -0
- package/src/rxjs/rxjs-operators.ts +130 -0
- package/src/rxjs/subjectifier.ts +15 -0
- package/src/specs/clickSubject.spec.ts +95 -0
- package/src/specs/dialog.spec.ts +101 -0
- package/src/specs/toggleGroupDirective.spec.ts +231 -0
- package/src/table-builder/classes/DefaultSettings.ts +10 -0
- package/src/table-builder/classes/GenericTableDataSource.ts +22 -0
- package/src/table-builder/classes/MatTableObservableDataSource.ts +23 -0
- package/src/table-builder/classes/TableBuilderConfig.ts +19 -0
- package/src/table-builder/classes/TableState.ts +63 -0
- package/src/table-builder/classes/data-filter.spec.ts +72 -0
- package/src/table-builder/classes/data-filter.ts +32 -0
- package/{table-builder/classes/display-col.d.ts → src/table-builder/classes/display-col.ts} +0 -0
- package/src/table-builder/classes/filter-info.ts +132 -0
- package/src/table-builder/classes/table-builder-general-settings.ts +73 -0
- package/src/table-builder/classes/table-builder.ts +71 -0
- package/src/table-builder/classes/table-store.ts +360 -0
- package/src/table-builder/components/array-column.component.ts +39 -0
- package/src/table-builder/components/column-builder/column-builder.component.html +66 -0
- package/src/table-builder/components/column-builder/column-builder.component.scss +43 -0
- package/src/table-builder/components/column-builder/column-builder.component.spec.ts +51 -0
- package/src/table-builder/components/column-builder/column-builder.component.ts +126 -0
- package/src/table-builder/components/date-filter/date-filter.component.html +24 -0
- package/src/table-builder/components/date-filter/date-filter.component.ts +17 -0
- package/src/table-builder/components/filter/filter.component.html +78 -0
- package/src/table-builder/components/filter/filter.component.scss +64 -0
- package/src/table-builder/components/filter/filter.component.spec.ts +89 -0
- package/src/table-builder/components/filter/filter.component.ts +35 -0
- package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +82 -0
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +52 -0
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +57 -0
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +44 -0
- package/src/table-builder/components/generic-table/generic-table.component.html +77 -0
- package/src/table-builder/components/generic-table/generic-table.component.scss +45 -0
- package/src/table-builder/components/generic-table/generic-table.component.ts +221 -0
- package/src/table-builder/components/generic-table/paginator.component.ts +89 -0
- package/src/table-builder/components/group-by-list/group-by-list.component.css +8 -0
- package/src/table-builder/components/group-by-list/group-by-list.component.html +10 -0
- package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +23 -0
- package/src/table-builder/components/group-by-list/group-by-list.component.ts +16 -0
- package/src/table-builder/components/header-menu/header-menu.component.html +117 -0
- package/src/table-builder/components/header-menu/header-menu.component.scss +92 -0
- package/src/table-builder/components/header-menu/header-menu.component.ts +81 -0
- package/src/table-builder/components/in-filter/in-filter.component.css +3 -0
- package/src/table-builder/components/in-filter/in-filter.component.html +13 -0
- package/src/table-builder/components/in-filter/in-filter.component.ts +60 -0
- package/{table-builder/components/index.d.ts → src/table-builder/components/index.ts} +9 -9
- package/src/table-builder/components/initialization-component/initialization-component.html +21 -0
- package/src/table-builder/components/initialization-component/initialization-component.ts +15 -0
- package/src/table-builder/components/link-column.component.ts +33 -0
- package/src/table-builder/components/number-filter/number-filter.component.css +10 -0
- package/src/table-builder/components/number-filter/number-filter.component.html +21 -0
- package/src/table-builder/components/number-filter/number-filter.component.spec.ts +30 -0
- package/src/table-builder/components/number-filter/number-filter.component.ts +19 -0
- package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +59 -0
- package/src/table-builder/components/sort-menu/sort-menu.component.html +101 -0
- package/src/table-builder/components/sort-menu/sort-menu.component.scss +119 -0
- package/src/table-builder/components/sort-menu/sort-menu.component.ts +82 -0
- package/src/table-builder/components/table-container/table-container.css +26 -0
- package/src/table-builder/components/table-container/table-container.html +113 -0
- package/src/table-builder/components/table-container/table-container.spec.ts +157 -0
- package/src/table-builder/components/table-container/table-container.ts +344 -0
- package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +26 -0
- package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +38 -0
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +37 -0
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +8 -0
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +88 -0
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +27 -0
- package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +23 -0
- package/src/table-builder/directives/custom-cell-directive.ts +45 -0
- package/{table-builder/directives/index.d.ts → src/table-builder/directives/index.ts} +6 -5
- package/src/table-builder/directives/multi-sort.directive.spec.ts +124 -0
- package/src/table-builder/directives/multi-sort.directive.ts +41 -0
- package/src/table-builder/directives/resize-column.directive.ts +104 -0
- package/src/table-builder/directives/table-wrapper.directive.ts +16 -0
- package/src/table-builder/directives/tb-filter.directive.ts +363 -0
- package/src/table-builder/enums/filterTypes.ts +65 -0
- package/src/table-builder/functions/boolean-filter-function.ts +13 -0
- package/src/table-builder/functions/date-filter-function.ts +40 -0
- package/src/table-builder/functions/download-data.ts +11 -0
- package/src/table-builder/functions/null-filter-function.ts +9 -0
- package/src/table-builder/functions/number-filter-function.ts +42 -0
- package/src/table-builder/functions/sort-data-function.ts +8 -0
- package/src/table-builder/functions/string-filter-function.ts +52 -0
- package/{table-builder/interfaces/ColumnInfo.d.ts → src/table-builder/interfaces/ColumnInfo.ts} +3 -2
- package/src/table-builder/interfaces/column-template.ts +9 -0
- package/{table-builder/interfaces/dictionary.d.ts → src/table-builder/interfaces/dictionary.ts} +3 -3
- package/src/table-builder/interfaces/report-def.ts +131 -0
- package/src/table-builder/material.module.ts +95 -0
- package/src/table-builder/ngrx/actions.ts +7 -0
- package/src/table-builder/ngrx/effects.ts +54 -0
- package/src/table-builder/ngrx/reducer.ts +72 -0
- package/src/table-builder/ngrx/selectors.ts +37 -0
- package/src/table-builder/pipes/column-total.pipe.ts +15 -0
- package/src/table-builder/pipes/format-filter-type.pipe.ts +12 -0
- package/src/table-builder/pipes/format-filter-value.pipe.ts +40 -0
- package/src/table-builder/pipes/key-display.ts +16 -0
- package/src/table-builder/services/export-to-csv.service.ts +92 -0
- package/src/table-builder/services/link-creator.service.ts +48 -0
- package/src/table-builder/services/table-template-service.ts +44 -0
- package/src/table-builder/services/transform-creator.ts +61 -0
- package/src/table-builder/specs/table-custom-filters.spec.ts +262 -0
- package/src/table-builder/styles/collapser.styles.scss +21 -0
- package/src/table-builder/table-builder.module.ts +138 -0
- package/src/test.ts +17 -0
- package/src/utilities/directives/auto-focus.directive.ts +19 -0
- package/src/utilities/directives/clickEmitterDirective.ts +15 -0
- package/src/utilities/directives/clickSubject.ts +19 -0
- package/src/utilities/directives/conditional-classes.directive.ts +35 -0
- package/src/utilities/directives/dialog-service.ts +22 -0
- package/src/utilities/directives/dialog.ts +142 -0
- package/src/utilities/directives/mat-toggle-group-directive.ts +60 -0
- package/src/utilities/directives/prevent-enter.directive.ts +12 -0
- package/src/utilities/directives/stop-propagation.directive.ts +19 -0
- package/src/utilities/directives/styler.ts +16 -0
- package/src/utilities/directives/trim-whitespace.directive.ts +20 -0
- package/{utilities/index.d.ts → src/utilities/index.ts} +22 -15
- package/src/utilities/module.ts +58 -0
- package/src/utilities/pipes/function.pipe.ts +15 -0
- package/src/utilities/pipes/phone.pipe.ts +15 -0
- package/src/utilities/pipes/space-case.pipes.spec.ts +47 -0
- package/src/utilities/pipes/space-case.pipes.ts +23 -0
- package/tsconfig.lib.json +19 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/action-state/action-state-spinner/action-state-spinner.component.d.ts +0 -12
- package/action-state/action-state-ui/action-state-ui.module.d.ts +0 -9
- package/action-state/ngrx-ext/ngrx-ext.module.d.ts +0 -8
- package/action-state/ngrx.d.ts +0 -31
- package/esm2020/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -23
- package/esm2020/action-state/action-state-ui/action-state-ui.module.mjs +0 -28
- package/esm2020/action-state/index.mjs +0 -8
- package/esm2020/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
- package/esm2020/action-state/ngrx.mjs +0 -42
- package/esm2020/http-request-state/HttpRequestStateFactory.mjs +0 -27
- package/esm2020/http-request-state/HttpRequestStateStore.mjs +0 -97
- package/esm2020/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -34
- package/esm2020/http-request-state/directives/http-error-state-directive.mjs +0 -29
- package/esm2020/http-request-state/directives/http-inProgress-state-directive.mjs +0 -29
- package/esm2020/http-request-state/directives/http-notStarted-state-directive.mjs +0 -29
- package/esm2020/http-request-state/directives/http-success-state-directive.mjs +0 -29
- package/esm2020/http-request-state/directives/index.mjs +0 -6
- package/esm2020/http-request-state/directives/request-state-directive.mjs +0 -57
- package/esm2020/http-request-state/helpers.mjs +0 -22
- package/esm2020/http-request-state/http-request-state.mjs +0 -39
- package/esm2020/http-request-state/http-state-module.mjs +0 -41
- package/esm2020/http-request-state/index.mjs +0 -7
- package/esm2020/http-request-state/rxjs/getRequestorBody.mjs +0 -4
- package/esm2020/http-request-state/rxjs/getRequestorState.mjs +0 -3
- package/esm2020/http-request-state/rxjs/index.mjs +0 -5
- package/esm2020/http-request-state/rxjs/tapError.mjs +0 -12
- package/esm2020/http-request-state/rxjs/tapSuccess.mjs +0 -12
- package/esm2020/http-request-state/types.mjs +0 -16
- package/esm2020/ngrx/actionable-selector.mjs +0 -76
- package/esm2020/ngrx/index.mjs +0 -2
- package/esm2020/one-paragon-angular-utilities.mjs +0 -5
- package/esm2020/public-api.mjs +0 -19
- package/esm2020/rxjs/defaultShareReplay.mjs +0 -7
- package/esm2020/rxjs/index.mjs +0 -5
- package/esm2020/rxjs/mapError.mjs +0 -8
- package/esm2020/rxjs/rxjs-operators.mjs +0 -91
- package/esm2020/rxjs/subjectifier.mjs +0 -15
- package/esm2020/table-builder/classes/DefaultSettings.mjs +0 -6
- package/esm2020/table-builder/classes/GenericTableDataSource.mjs +0 -13
- package/esm2020/table-builder/classes/MatTableObservableDataSource.mjs +0 -21
- package/esm2020/table-builder/classes/TableBuilderConfig.mjs +0 -3
- package/esm2020/table-builder/classes/TableState.mjs +0 -32
- package/esm2020/table-builder/classes/data-filter.mjs +0 -26
- package/esm2020/table-builder/classes/display-col.mjs +0 -2
- package/esm2020/table-builder/classes/filter-info.mjs +0 -71
- package/esm2020/table-builder/classes/table-builder-general-settings.mjs +0 -68
- package/esm2020/table-builder/classes/table-builder.mjs +0 -61
- package/esm2020/table-builder/classes/table-store.mjs +0 -292
- package/esm2020/table-builder/components/array-column.component.mjs +0 -57
- package/esm2020/table-builder/components/column-builder/column-builder.component.mjs +0 -111
- package/esm2020/table-builder/components/date-filter/date-filter.component.mjs +0 -25
- package/esm2020/table-builder/components/filter/filter.component.mjs +0 -53
- package/esm2020/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -91
- package/esm2020/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -45
- package/esm2020/table-builder/components/generic-table/generic-table.component.mjs +0 -198
- package/esm2020/table-builder/components/generic-table/paginator.component.mjs +0 -74
- package/esm2020/table-builder/components/group-by-list/group-by-list.component.mjs +0 -21
- package/esm2020/table-builder/components/header-menu/header-menu.component.mjs +0 -90
- package/esm2020/table-builder/components/in-filter/in-filter.component.mjs +0 -66
- package/esm2020/table-builder/components/index.mjs +0 -10
- package/esm2020/table-builder/components/initialization-component/initialization-component.mjs +0 -33
- package/esm2020/table-builder/components/link-column.component.mjs +0 -66
- package/esm2020/table-builder/components/number-filter/number-filter.component.mjs +0 -27
- package/esm2020/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -42
- package/esm2020/table-builder/components/sort-menu/sort-menu.component.mjs +0 -75
- package/esm2020/table-builder/components/table-container/table-container.mjs +0 -312
- package/esm2020/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -42
- package/esm2020/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -30
- package/esm2020/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
- package/esm2020/table-builder/directives/custom-cell-directive.mjs +0 -59
- package/esm2020/table-builder/directives/index.mjs +0 -6
- package/esm2020/table-builder/directives/multi-sort.directive.mjs +0 -42
- package/esm2020/table-builder/directives/resize-column.directive.mjs +0 -86
- package/esm2020/table-builder/directives/table-wrapper.directive.mjs +0 -26
- package/esm2020/table-builder/directives/tb-filter.directive.mjs +0 -403
- package/esm2020/table-builder/enums/filterTypes.mjs +0 -59
- package/esm2020/table-builder/functions/boolean-filter-function.mjs +0 -10
- package/esm2020/table-builder/functions/date-filter-function.mjs +0 -32
- package/esm2020/table-builder/functions/download-data.mjs +0 -12
- package/esm2020/table-builder/functions/null-filter-function.mjs +0 -8
- package/esm2020/table-builder/functions/number-filter-function.mjs +0 -32
- package/esm2020/table-builder/functions/sort-data-function.mjs +0 -5
- package/esm2020/table-builder/functions/string-filter-function.mjs +0 -41
- package/esm2020/table-builder/interfaces/ColumnInfo.mjs +0 -2
- package/esm2020/table-builder/interfaces/dictionary.mjs +0 -2
- package/esm2020/table-builder/interfaces/report-def.mjs +0 -34
- package/esm2020/table-builder/material.module.mjs +0 -221
- package/esm2020/table-builder/ngrx/actions.mjs +0 -5
- package/esm2020/table-builder/ngrx/effects.mjs +0 -48
- package/esm2020/table-builder/ngrx/reducer.mjs +0 -52
- package/esm2020/table-builder/ngrx/selectors.mjs +0 -24
- package/esm2020/table-builder/pipes/column-total.pipe.mjs +0 -20
- package/esm2020/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
- package/esm2020/table-builder/pipes/format-filter-value.pipe.mjs +0 -46
- package/esm2020/table-builder/pipes/key-display.mjs +0 -20
- package/esm2020/table-builder/services/export-to-csv.service.mjs +0 -84
- package/esm2020/table-builder/services/link-creator.service.mjs +0 -42
- package/esm2020/table-builder/services/table-template-service.mjs +0 -43
- package/esm2020/table-builder/services/transform-creator.mjs +0 -70
- package/esm2020/table-builder/table-builder.module.mjs +0 -204
- package/esm2020/utilities/directives/auto-focus.directive.mjs +0 -26
- package/esm2020/utilities/directives/clickEmitterDirective.mjs +0 -21
- package/esm2020/utilities/directives/clickSubject.mjs +0 -27
- package/esm2020/utilities/directives/conditional-classes.directive.mjs +0 -35
- package/esm2020/utilities/directives/dialog-service.mjs +0 -25
- package/esm2020/utilities/directives/dialog.mjs +0 -131
- package/esm2020/utilities/directives/mat-toggle-group-directive.mjs +0 -59
- package/esm2020/utilities/directives/prevent-enter.directive.mjs +0 -19
- package/esm2020/utilities/directives/stop-propagation.directive.mjs +0 -25
- package/esm2020/utilities/directives/styler.mjs +0 -26
- package/esm2020/utilities/directives/trim-whitespace.directive.mjs +0 -29
- package/esm2020/utilities/index.mjs +0 -16
- package/esm2020/utilities/module.mjs +0 -91
- package/esm2020/utilities/pipes/function.pipe.mjs +0 -21
- package/esm2020/utilities/pipes/phone.pipe.mjs +0 -20
- package/esm2020/utilities/pipes/space-case.pipes.mjs +0 -28
- package/fesm2015/one-paragon-angular-utilities.mjs +0 -4698
- package/fesm2015/one-paragon-angular-utilities.mjs.map +0 -1
- package/fesm2020/one-paragon-angular-utilities.mjs +0 -4666
- package/fesm2020/one-paragon-angular-utilities.mjs.map +0 -1
- package/http-request-state/HttpRequestStateFactory.d.ts +0 -14
- package/http-request-state/HttpRequestStateStore.d.ts +0 -48
- package/http-request-state/directives/HttpStateDirectiveBase.d.ts +0 -16
- package/http-request-state/directives/http-error-state-directive.d.ts +0 -12
- package/http-request-state/directives/http-inProgress-state-directive.d.ts +0 -12
- package/http-request-state/directives/http-notStarted-state-directive.d.ts +0 -12
- package/http-request-state/directives/http-success-state-directive.d.ts +0 -14
- package/http-request-state/directives/request-state-directive.d.ts +0 -29
- package/http-request-state/helpers.d.ts +0 -9
- package/http-request-state/http-request-state.d.ts +0 -12
- package/http-request-state/http-state-module.d.ts +0 -11
- package/http-request-state/rxjs/getRequestorBody.d.ts +0 -3
- package/http-request-state/rxjs/getRequestorState.d.ts +0 -3
- package/http-request-state/rxjs/tapError.d.ts +0 -3
- package/http-request-state/rxjs/tapSuccess.d.ts +0 -3
- package/http-request-state/types.d.ts +0 -36
- package/index.d.ts +0 -5
- package/ngrx/actionable-selector.d.ts +0 -15
- package/ngrx/index.d.ts +0 -1
- package/rxjs/defaultShareReplay.d.ts +0 -2
- package/rxjs/mapError.d.ts +0 -2
- package/rxjs/rxjs-operators.d.ts +0 -12
- package/rxjs/subjectifier.d.ts +0 -9
- package/table-builder/classes/DefaultSettings.d.ts +0 -8
- package/table-builder/classes/GenericTableDataSource.d.ts +0 -8
- package/table-builder/classes/MatTableObservableDataSource.d.ts +0 -9
- package/table-builder/classes/TableBuilderConfig.d.ts +0 -19
- package/table-builder/classes/TableState.d.ts +0 -46
- package/table-builder/classes/data-filter.d.ts +0 -9
- package/table-builder/classes/filter-info.d.ts +0 -40
- package/table-builder/classes/table-builder-general-settings.d.ts +0 -43
- package/table-builder/classes/table-builder.d.ts +0 -14
- package/table-builder/classes/table-store.d.ts +0 -114
- package/table-builder/components/array-column.component.d.ts +0 -14
- package/table-builder/components/column-builder/column-builder.component.d.ts +0 -50
- package/table-builder/components/date-filter/date-filter.component.d.ts +0 -10
- package/table-builder/components/filter/filter.component.d.ts +0 -294
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -27
- package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +0 -16
- package/table-builder/components/generic-table/generic-table.component.d.ts +0 -71
- package/table-builder/components/generic-table/paginator.component.d.ts +0 -28
- package/table-builder/components/group-by-list/group-by-list.component.d.ts +0 -10
- package/table-builder/components/header-menu/header-menu.component.d.ts +0 -25
- package/table-builder/components/in-filter/in-filter.component.d.ts +0 -22
- package/table-builder/components/initialization-component/initialization-component.d.ts +0 -12
- package/table-builder/components/link-column.component.d.ts +0 -17
- package/table-builder/components/number-filter/number-filter.component.d.ts +0 -12
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +0 -24
- package/table-builder/components/sort-menu/sort-menu.component.d.ts +0 -25
- package/table-builder/components/table-container/table-container.d.ts +0 -65
- package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +0 -17
- package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +0 -14
- package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +0 -14
- package/table-builder/directives/custom-cell-directive.d.ts +0 -19
- package/table-builder/directives/multi-sort.directive.d.ts +0 -11
- package/table-builder/directives/resize-column.directive.d.ts +0 -43
- package/table-builder/directives/table-wrapper.directive.d.ts +0 -11
- package/table-builder/directives/tb-filter.directive.d.ts +0 -120
- package/table-builder/enums/filterTypes.d.ts +0 -31
- package/table-builder/functions/boolean-filter-function.d.ts +0 -3
- package/table-builder/functions/date-filter-function.d.ts +0 -3
- package/table-builder/functions/download-data.d.ts +0 -1
- package/table-builder/functions/null-filter-function.d.ts +0 -2
- package/table-builder/functions/number-filter-function.d.ts +0 -4
- package/table-builder/functions/sort-data-function.d.ts +0 -3
- package/table-builder/functions/string-filter-function.d.ts +0 -7
- package/table-builder/interfaces/report-def.d.ts +0 -135
- package/table-builder/material.module.d.ts +0 -34
- package/table-builder/ngrx/actions.d.ts +0 -23
- package/table-builder/ngrx/effects.d.ts +0 -19
- package/table-builder/ngrx/reducer.d.ts +0 -15
- package/table-builder/ngrx/selectors.d.ts +0 -22
- package/table-builder/pipes/column-total.pipe.d.ts +0 -8
- package/table-builder/pipes/format-filter-type.pipe.d.ts +0 -8
- package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -14
- package/table-builder/pipes/key-display.d.ts +0 -11
- package/table-builder/services/export-to-csv.service.d.ts +0 -22
- package/table-builder/services/link-creator.service.d.ts +0 -12
- package/table-builder/services/table-template-service.d.ts +0 -14
- package/table-builder/services/transform-creator.d.ts +0 -19
- package/table-builder/table-builder.module.d.ts +0 -45
- package/utilities/directives/auto-focus.directive.d.ts +0 -10
- package/utilities/directives/clickEmitterDirective.d.ts +0 -7
- package/utilities/directives/clickSubject.d.ts +0 -9
- package/utilities/directives/conditional-classes.directive.d.ts +0 -14
- package/utilities/directives/dialog-service.d.ts +0 -10
- package/utilities/directives/dialog.d.ts +0 -45
- package/utilities/directives/mat-toggle-group-directive.d.ts +0 -21
- package/utilities/directives/prevent-enter.directive.d.ts +0 -6
- package/utilities/directives/stop-propagation.directive.d.ts +0 -7
- package/utilities/directives/styler.d.ts +0 -9
- package/utilities/directives/trim-whitespace.directive.d.ts +0 -9
- package/utilities/module.d.ts +0 -19
- package/utilities/pipes/function.pipe.d.ts +0 -7
- package/utilities/pipes/phone.pipe.d.ts +0 -7
- package/utilities/pipes/space-case.pipes.d.ts +0 -17
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/http-request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateFactory.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.html","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/GenericTableDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/material.module.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/table-builder/classes/data-filter.ts","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/ngrx/selectors.ts","../../../projects/angular-utilities/src/table-builder/ngrx/actions.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.html","../../../projects/angular-utilities/src/table-builder/ngrx/reducer.ts","../../../projects/angular-utilities/src/table-builder/ngrx/effects.ts","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nexport enum HttpRequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\n export type HttpRequestStateCancelled = {\r\n status: HttpRequestStatus.cancelled\r\n }\r\n\r\n export type HttpRequestStateNotStarted = {\r\n status: HttpRequestStatus.notStarted\r\n }\r\n\r\n export type HttpRequestStateInProgress = {\r\n status: HttpRequestStatus.inProgress\r\n }\r\n\r\n export type HttpRequestStateSuccess<T> = {\r\n status: HttpRequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type HttpRequestStateError = {\r\n status: HttpRequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export type HttpRequestState<T = any> =\r\n HttpRequestStateCancelled |\r\n HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\nexport enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions {\r\n strategy?: HttpRequestStrategy\r\n}\r\n\r\nexport type HttpRequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { HttpRequestState, HttpRequestStateError, HttpRequestStateInProgress, HttpRequestStateNotStarted, HttpRequestStateSuccess, HttpRequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: HttpRequestState<T>): state is HttpRequestStateError {\r\n return state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: HttpRequestState<T>): state is HttpRequestStateSuccess<T> {\r\n return state.status === HttpRequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: HttpRequestState<T>): state is (HttpRequestStateSuccess<T> | HttpRequestStateError) {\r\n return state.status === HttpRequestStatus.success || state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): HttpRequestStateSuccess<T> {\r\n return { status: HttpRequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): HttpRequestStateError {\r\n return { status: HttpRequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: HttpRequestStateNotStarted = { status: HttpRequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: HttpRequestStateInProgress = { status: HttpRequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: HttpRequestStatus) {\r\n return [HttpRequestStatus.success, HttpRequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nexport function defaultShareReplay<T>() {\n return function (src: Observable<T>): Observable<T> {\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n };\n}","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestState<T>;\r\n state?: HttpRequestState<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]' })\r\nexport class HttpRequestStateDirective<TParam extends any[],T> {\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<HttpRequestState<T>>>();\r\n state = this.subject.pipe(switchAll(),defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: HttpRequestState<T>) => void) [] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: HttpRequestStateStore<TParam,T> | Observable<HttpRequestState<T>> ) {\r\n if(isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n ) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe( state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === HttpRequestStatus.success;\r\n this.ViewContext.status.error = state.status === HttpRequestStatus.fail;\r\n this.hooks.forEach( hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase {\r\n hasView = false;\r\n constructor(\r\n private injector: Injector,\r\n protected templateRef: TemplateRef<any>,\r\n protected viewContainer: ViewContainerRef,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if(parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n ngOnDestroy() {\r\n \r\n }\r\n\r\n private baseRender = (state:HttpRequestState ) : void => {\r\n if (this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: HttpRequestState) => boolean;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]' })\r\nexport class HttpErrorStateDirective<TParam extends any[], T> extends HttpStateDirectiveBase {\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector, templateRef, viewContainer);\r\n }\r\n\r\n render = (state: HttpRequestState<any>) => {\r\n if (isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]' })\r\nexport class HttpInProgressStateDirective extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]' })\r\nexport class HttpNotStartedStateDirective<TParam extends any[],T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\n\r\n@Directive({ selector: '[httpSuccessState]'})\r\nexport class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(isSuccessState(state)){\r\n this.viewContainer.createEmbeddedView(this.templateRef,{ $implicit: state.body} );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<{$implicit: T}>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\nimport { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport const getRequestorBody = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n filter(isSuccessState),\n map( res => res.body)\n );","import { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const getRequestorStatus = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n map( res => res.status)\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<HttpRequestState>): Observable<HttpRequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<HttpRequestState<T>>): Observable<HttpRequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\n return function (src: Observable<T>): Observable<T | TResult> {\n return src.pipe(catchError(e => of(projection(e))),);\n };\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { HttpRequestFactory, HttpRequestState, HttpRequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<HttpRequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<HttpRequestState<Res>>;\r\n status$: Observable<HttpRequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: HttpRequestFactory<TParam,T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<HttpRequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<HttpRequestState<T>>,\r\n request:HttpRequestFactory<TParam,TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n ): Observable<HttpRequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === HttpRequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n providers:[],\r\n declarations: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule {\r\n\r\n}","import { Observable, of, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, pluck, startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Directive } from '@angular/core';\r\n\r\nexport interface RequestResponse<TParam extends any[],T> {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n}\r\n\r\n@Directive()\r\nexport class HttpRequestStateStore<TParam extends any[], T> extends ComponentStore<RequestResponse<TParam,T>> {\r\n\r\n constructor(private req: HttpRequestFactory<TParam,T> ,private options?: RequestStateOptions) {\r\n super({ requestParams: null as any ,response: notStarted });\r\n this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n }\r\n\r\n reset() {\r\n this.setState({ requestParams:null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === HttpRequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n if(this.options?.strategy === HttpRequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {\r\n return (obs).pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n );\r\n });\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if (this.get().response.status !== HttpRequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n\r\n selectHttpState$ = this.state$.pipe(map(a => a.response));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));\r\n\r\n selectError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isErrorState),\r\n map( state => state.error)\r\n );\r\n\r\n selectResponse$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n selectSuccessOrError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map( () => null)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.on(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body: T) => void) {\r\n this.on(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.on(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(func: (state: {\r\n requestParams: [...TParam];\r\n body: T;\r\n }) => void) {\r\n this.onUpdate(({ requestParams, response }) => {\r\n if(isSuccessState(response)){\r\n func({requestParams,body: response.body});\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(func: (state: {\r\n error: HttpErrorResponse;\r\n requestParams: [...TParam];\r\n }) => void) {\r\n this.onUpdate( ({ requestParams, response }) => {\r\n if(isErrorState(response)){\r\n func({ requestParams, error: response.error });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam,T>> {\r\n return this.req(...params).pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n onUpdate(func: (state: {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n }) => void) {\r\n this.on(this.state$, func);\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return this.effect((src: Observable<V>) => {\r\n return src.pipe(tap(func));\r\n })(srcObservable) as Subscription;\r\n }\r\n\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n }\r\n\r\n export class CancellationToken {}\r\n","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { HttpRequestFactory, RequestStateOptions } from \"./types\";\r\nimport { HttpRequestStateStore } from './HttpRequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class HttpRequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.ngOnDestroy());\r\n }\r\n private requestors: OnDestroy[] = [];\r\n create<TParam extends any[], T>( req: HttpRequestFactory<TParam,T>, options?: RequestStateOptions ) : HttpRequestStateStore<TParam,T> {\r\n const requestor = new HttpRequestStateStore(req, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions ) {\r\n const requestor = new HttpRequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n}","import { Dictionary } from './dictionary';\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\nimport { QueryParamsHandling } from '@angular/router';\n\n\nexport enum FieldType {\n Unknown = 0,\n Date = 1,\n Link = 2,\n ImageUrl = 3,\n Currency = 4,\n Array = 5,\n Hidden = 6,\n Number = 7,\n String = 8,\n Boolean = 9,\n PhoneNumber = 10,\n Expression = 11,\n Enum = 12,\n}\n\nexport enum SortDirection {\n asc= 'asc',\n desc= 'desc'\n}\n\nexport enum Target {\n Blank = '_blank',\n Self = '_self',\n Parent = '_parent',\n Top = '_top'\n}\n\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\n key: (keyof T | AdditionalFields[number]) & string;\n displayName?: string;\n fieldType: FieldType;\n additional?: Additional<T>;\n order?: number;\n preSort?: SortDef;\n _internalNotUserDefined?: boolean;\n width?: string;\n noExport?: boolean;\n noFilter?: boolean;\n customCell?: boolean;\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\n click?: (element: T, key: string ) => void;\n template?: TemplateRef<any>;\n classes?: Dictionary<Predicate<T>>;\n toolTip?: string;\n useIcon?: boolean;\n}\nexport interface ReportDef<DataType = any> {\n data: DataType[];\n metaData: MetaData [];\n totalRecords?: number;\n count: number;\n}\n\nexport interface SortDef {\n direction: SortDirection;\n precedence?: number;\n}\n\nexport interface FilterOptions {\n filterableValues : string[]\n}\ntype interpolatedRoute = string;\nexport interface Additional<T = any> {\n link? : {\n base?: string;\n urlKey?: string;\n target?: Target;\n useRouterLink?: boolean;\n /**\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\n */\n interpolatedRoute?: interpolatedRoute;\n routerLinkOptions?:{\n queryParams?: [string, interpolatedRoute][];\n fragment?: string;\n preserveFragment?: boolean;\n queryParamsHandling?: QueryParamsHandling;\n }\n }\n /**\n * @deprecated Please use link.base\n */\n base?: string;\n /**\n * @deprecated Please use link.urlKey\n */\n urlKey?: string;\n /**\n * @deprecated Please use link.target\n */\n target?: Target;\n /**\n * @deprecated Please use link.useRouterLink\n */\n useRouterLink?: boolean;\n footer?: { type: 'sum' };\n grouping?: { groupBy?: boolean, sum?: boolean; groupTitleFn?: (val: any) => string }\n export?: TableBuilderExport;\n dateFormat?: string;\n filterOptions?: FilterOptions;\n styles?: Dictionary<string>;\n columnPartStyles?: {\n header?: Dictionary<string>,\n body?: Dictionary<string>,\n footer?: Dictionary<string>,\n }\n enumMap?: {[key:number]:string};\n boolean? : {\n showForFalse? : true | { icon : string },\n forTrue? : { icon : string }\n }\n}\n\nexport enum ArrayStyle {\n CommaDelimited,\n NewLine\n}\n\nexport interface ArrayAdditional extends Additional {\n metaData?: MetaData;\n limit?: number;\n arrayStyle?: ArrayStyle;\n}\n","import { Predicate } from '@angular/core';\nimport { flatten } from 'lodash';\nimport {\n filter,\n first,\n map,\n pairwise,\n startWith,\n Observable,\n combineLatest,\n Subscription,\n MonoTypeOperatorFunction,\n OperatorFunction,\n concatMap,\n merge,\n of,\n delay\n} from 'rxjs';\n\n\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\n return src.pipe(filter(predicate),first());\n}\n\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.map(mapFunc) ) );\n\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.filter(filterFunc) ) );\n\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n return new Observable<T>(subscriber => {\n let emitted = false;\n setTimeout(() => {\n if(!emitted) {\n subscriber.next(val);\n }\n }, 0);\n source.subscribe({\n next(x) { emitted = true; subscriber.next(x) },\n error(err) { emitted = true; subscriber.error(err) },\n complete() { emitted = true; subscriber.complete(); }\n });\n });\n }\n\n}\n\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\n return combineLatest(\n sources.map( src => src.pipe(onWait([])))\n ).pipe(\n map( res => flatten(res) )\n );\n};\n\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsciber => {\n let isOn = defaultState;\n const subscription = new Subscription();\n subscription.add( switchSource.subscribe( on => isOn = on ));\n subscription.add(source.subscribe({\n next(value) {\n if(isOn) {\n subsciber.next(value);\n }\n },\n error: error => subsciber.error(error),\n complete: () => subsciber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function skipOneWhen( skipper: Observable<any> ) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsriber => {\n const subscription = new Subscription();\n let skipNext = false;\n subscription.add(skipper.subscribe( _ => skipNext = true));\n subscription.add(source.subscribe({\n next(value) {\n if(skipNext) {\n skipNext = false;\n } else {\n subsriber.next(value);\n }\n },\n error: error => subsriber.error(error),\n complete: () => subsriber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\n return (source: Observable<T>) => {\n return source.pipe(startWith(startingValue), pairwise());\n }\n}\n\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\n return (source: Observable<T | null | undefined>) => {\n return source.pipe(filter( (o: T | null | undefined): o is T => !!o) )\n }\n}\n\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\n return (src: Observable<T>) => {\n return src.pipe(\n concatMap(r => {\n if (predicate(r)) {\n return merge(\n of({ r }),\n of(null).pipe(delay(delayTime))\n ).pipe(\n notNull(),\n map(d => d.r)\n );\n } else {\n return of(r);\n }\n })\n );\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { TableState } from './TableState';\nimport { DefaultSettings } from './DefaultSettings';\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\nexport interface TableBuilderConfig {\n defaultTableState: Partial<TableState>;\n export?: TableBuilderExport;\n defaultSettings?: DefaultSettings;\n arrayInfo?: ArrayAdditional;\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\n}\n\nexport interface TableBuilderExport {\n dateFormat?: string;\n onSave?: (event?: any) => void;\n prepend? : string;\n}\n\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'phone'})\nexport class PhoneNumberPipe implements PipeTransform {\n\n transform(phoneNum: string): any {\n if (phoneNum) {\n phoneNum = phoneNum.replace(/\\D/g,'');\n if(phoneNum[0] === '1') {\n phoneNum = phoneNum.substring(1);\n }\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'preventEnter'\n})\nexport class PreventEnterDirective {\n\n @HostListener('keydown.enter', ['$event'])\n onKeyDown() {\n return false\n }\n}\n","import {Directive, HostListener} from \"@angular/core\";\n\n@Directive({\n selector: \"[stop-propagation]\"\n})\nexport class StopPropagationDirective\n{\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: any): void\n {\n event.stopPropagation();\n }\n\n @HostListener(\"mousedown\", [\"$event\"])\n public onMousedown(event: any): void\n {\n event.stopPropagation();\n }\n}\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\n\n@Directive({\n selector: '[autoFocus]'\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n @Input() autoFocus = true;\n constructor(private elementRef: ElementRef) { }\n\n ngAfterViewInit() {\n if(this.autoFocus){\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[clickSubject]',\n exportAs: 'clickSubject',\n host: {\n '(click)': 'next(this._val)'\n }\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\n constructor( ) {\n super();\n }\n _val!: T;\n\n @Input('clickSubject') set clickSubject( val: T) {\n this._val = val;\n }\n}\n","import { Directive } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Directive({\n selector: '[clickEmitter]',\n exportAs: 'clickEmitter',\n host: {\n '(click)': 'next(true)'\n }\n}) export class ClickEmitterDirective extends Subject<boolean> {\n constructor() {\n super();\n }\n}\n","import { Injectable} from '@angular/core';\nimport { MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\n\n\n\n@Injectable({\n providedIn: 'root'\n })\n\nexport class DialogService {\n allOpenAppDialogs: MatDialogRef<any>[] = [];\n\n addDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs.push(ref);\n }\n\n removeDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs = this.allOpenAppDialogs.filter(rf => ref.id !== rf.id);\n }\n\n closeAllAppDialogs() {\n this.allOpenAppDialogs.forEach(ref => ref.close());\n }\n}\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';\nimport { MatLegacyDialog as MatDialog, MatLegacyDialogRef as MatDialogRef, MatLegacyDialogConfig as MatDialogConfig } from '@angular/material/legacy-dialog';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { switchAll } from 'rxjs/operators';\nimport { DialogService } from './dialog-service';\n\n\ninterface DialogViewContext<T> {\n $implicit: T,\n opDialog: T,\n close: () => void,\n\n}\n\n@Component({\n selector: 'app-dialog-content',\n template: ``\n})\nexport class DialogWrapper<T = any> {\n viewEmbeded = false;\n viewContext = {\n close: () => {},\n } as DialogViewContext<T>;\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\n if (this.viewEmbeded) {\n this.vcr.clear();\n }\n this.viewEmbeded = true;\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\n }\n\n set close(closeMethod: () => void ) {\n this.viewContext.close = closeMethod;\n }\n\n set data(value: T) {\n this.viewContext.$implicit = value;\n this.viewContext.opDialog = value;\n }\n constructor(private vcr: ViewContainerRef ) {\n }\n\n}\n\n\nconst defaultDialogConfig: MatDialogConfig = {\n maxHeight: '95vh'\n}\n\n\n@Directive(\n { selector: '[opDialog]' }\n) export class DialogDirective<T> implements OnDestroy {\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\n _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\n this._dialogConfig = {...defaultDialogConfig, ...config};\n }\n\n get opDialogConfig() : MatDialogConfig<T> {\n return this._dialogConfig;\n }\n @Input('opDialog') set state(open_close: Observable<T>) {\n this._data.next(open_close);\n }\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\n dialogRef?: MatDialogRef<any, boolean>;\n subscription: Subscription;\n componentWrapper?: DialogWrapper<T>;\n\n constructor(\n private templateRef: TemplateRef<DialogViewContext<T>>,\n private dialog: MatDialog,\n private service: DialogService) {\n this.subscription = this._data.pipe(\n switchAll()\n ).subscribe(d => {\n if (d) {\n this.opDialogConfig.data = d;\n this.setDialogState(true);\n } else {\n this.setDialogState(false);\n }\n });\n }\n\n _data = new Subject<Observable<T>>();\n\n close() {\n this.dialogRef?.close();\n }\n\n initDialog() {\n if(this.nativeElement){\n const rect = this.nativeElement.getBoundingClientRect();\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\n this.opDialogConfig = {...this.opDialogConfig , position};\n }\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\n this.componentWrapper = this.dialogRef.componentInstance;\n this.componentWrapper!.close = () => this.dialogRef?.close();\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n this.componentWrapper!.template = this.templateRef;\n if (!this.opDialogConfig.disableClose) {\n this.service.addDialogRef(this.dialogRef);\n }\n const sub = this.dialogRef.afterClosed().subscribe(() => {\n this.opDialogClosed.emit(true);\n this.service.removeDialogRef(this.dialogRef!);\n this.dialogRef = undefined;\n sub.unsubscribe();\n });\n }\n\n setDialogState(open: boolean) {\n if (open) {\n if (!this.dialogRef) {\n this.initDialog();\n } else {\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n }\n } else if (!open && this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false|0|''|null|undefined>> {\n return true;\n }\n\n}\n","import { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\r\n}) export class StylerDirective {\r\n @Input() set styler(styles){\r\n if(styles){\r\n Object.keys(styles).forEach( style => {\r\n this.el.nativeElement.style[style] = styles[style];\r\n });\r\n }\r\n };\r\n constructor(private el: ElementRef) {\r\n }\r\n}\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\nimport { MatLegacySlideToggle as MatSlideToggle } from \"@angular/material/legacy-slide-toggle\";\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\n\n\n@Directive(\n { selector: '[opMatSlideToggleGroup]' ,\n}\n) export class MatSlideToggleGroupDirective {\n @Input() allowMultiple = false;\n\n _toggles!: QueryList<MatSlideToggle>;\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\n this._toggles = val;\n this._ready.next(true);\n }\n\n private _ready = new ReplaySubject<boolean>(1);\n\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\n return this._ready.pipe( switchMap( _ => this.getObs()));\n }\n\n\n getInitValue() {\n const startValue = this._toggles.reduce( (prev,cur) => {\n if(!cur.name) {\n throw new Error('toggle must have the name attribute set');\n }\n prev[cur.name] = cur.checked\n return prev;\n }, {} as {[k:string]: boolean});\n return startValue;\n }\n\n getObs() {\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\n\n const startValue = this.getInitValue();\n\n return toggleChanges.pipe(\n scan( (prev,cur) => {\n const toggleName = cur.source.name!;\n const newVal = {...prev,[toggleName]:cur.checked};\n if(cur.checked && !this.allowMultiple) {\n Object.keys(prev)\n .filter( key => key !== toggleName && prev[key])\n .forEach( key => {\n newVal[key] = false;\n this._toggles.find( toggle => toggle.name === key)!.toggle();\n });\n }\n return newVal;\n },startValue),\n startWith(startValue),\n );\n\n }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'input[trimWhitespace]',\n})\nexport class TrimWhitespaceDirective {\n\n constructor(private elem: ElementRef) { }\n\n @HostListener('blur') onBlur() {\n const inputString = this.elem.nativeElement.value;\n if(inputString) {\n const newValue = inputString.trim().replace(/\\t/g, '');\n if(inputString !== newValue) {\n this.elem.nativeElement.value = newValue;\n this.elem.nativeElement.dispatchEvent(new Event('input', {bubbles:true}));\n }\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'func'\n})\nexport class FunctionPipe implements PipeTransform {\n transform(func: ( (...args: any[])=> any ) | string, ...args: any[]): any {\n if(typeof func === 'string') {\n const [instance, ...tail] = args;\n const method = instance[func].bind(instance);\n return method(...tail);\n }\n return func(...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'spaceCase'})\nexport class SpaceCasePipe implements PipeTransform {\n transform(value: string): string {\n return spaceCase(value);\n }\n}\n\n/**\n * Adds a space before uppercase letters that either\n * 1. follows a lowercase letter or digit\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\n * \n * Uppercases the first digit\n * \n * Turns underscores into spaces\n */\nexport function spaceCase(value: string){\n const phrase = value?.replace(/([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, '$1$3 $2$4')\n // uppercase the first character of every word\n return phrase?.replace(/(^| )(\\w)/g, x => x.toUpperCase());\n}\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\nimport { Dictionary, Predicate } from '@ngrx/entity';\n\n@Directive({\n selector: '[conditionalClasses]'\n})\nexport class ConditionalClassesDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n }\n\n @Input() element?: any;\n @Input('conditionalClasses') classes?: Dictionary<Predicate<any>>;\n\n classesApplied: string[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n let toApply: string [] = [];\n if(this.classes) {\n toApply = Object.keys(this.classes)\n .filter( key => this.classes![key]!(this.element) );\n }\n\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\n\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\n\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement , c ) );\n\n this.classesApplied = toApply;\n }\n\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\nimport { DialogDirective } from \"./directives/dialog\";\nimport { DialogService } from \"./directives/dialog-service\";\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\nimport { StylerDirective } from \"./directives/styler\";\nimport { FunctionPipe } from \"./pipes/function.pipe\";\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\n\n@NgModule({\n imports: [\n\n ],\n exports: [\n StopPropagationDirective,\n PreventEnterDirective,\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n TrimWhitespaceDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ConditionalClassesDirective,\n ],\n declarations: [\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n TrimWhitespaceDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ConditionalClassesDirective,\n ],\n providers : [\n DialogService\n ]\n})\nexport class UtilitiesModule {\n}\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\nimport { FieldType, MetaData } from '../interfaces/report-def';\nimport { DatePipe, CurrencyPipe } from '@angular/common';\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\nimport { SpaceCasePipe } from '../../utilities';\nimport { get } from 'lodash';\nexport function isPipe(o : any ): o is PipeTransform {\n return typeof ((o as PipeTransform).transform ) === 'function';\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TransformCreator {\n constructor(\n private datePipe: DatePipe,\n private currencyPipe: CurrencyPipe,\n private phonePipe: PhoneNumberPipe,\n private casePipe: SpaceCasePipe,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n ) {}\n createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any) {\n const defaultFunc = (value: any) => get( value, metaData.key);\n if(metaData.transform) {\n if(isPipe(metaData.transform)){\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\n }\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any,b:any)=>any)(defaultFunc(value),value);\n }\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\n var tranformer = this.config.transformers![metaData.fieldType]!;\n return (value: any) => tranformer(defaultFunc(value));\n }\n switch(metaData.fieldType) {\n case FieldType.Date:\n const dateFormat = metaData.additional?.dateFormat ?? this.config.defaultSettings?.dateFormat ?? 'shortDate';\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateFormat);\n case FieldType.Currency:\n return (value: any) => this.currencyPipe.transform(defaultFunc(value));\n case FieldType.PhoneNumber:\n return (value: any) => this.phonePipe.transform(defaultFunc(value));\n case FieldType.Enum:\n return (value: any) => this.casePipe.transform(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\n case FieldType.Boolean:\n let forTrue = 'check'\n let forFalse = '';\n if(metaData.additional?.boolean?.forTrue) {\n forTrue = metaData?.additional.boolean.forTrue.icon;\n }\n if(metaData.additional?.boolean?.showForFalse === true) {\n forFalse = 'clear';\n } else if (metaData.additional?.boolean?.showForFalse?.icon) {\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\n }\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\n }\n return defaultFunc;\n }\n\n}\n","import { merge } from \"lodash\";\n\nexport class GeneralTableSettings {\n constructor(settings? : TableBuilderSettings){\n if(settings){\n merge(this.headerSettings, settings.headerSettings);\n merge(this.footerSettings, settings.footerSettings);\n merge(this.columnHeaderSettings, settings.columnHeaderSettings);\n }\n }\n headerSettings = new TableWrapperHeaderSettings();\n footerSettings = new TableWrapperFooterSettings();\n columnHeaderSettings = new TableColumnHeaderSettings();\n}\n\nexport interface TableBuilderSettings {\n headerSettings? : Partial<TableWrapperHeaderSettings>;\n footerSettings? : Partial<TableWrapperFooterSettings>;\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\n}\n\nexport class TableWrapperHeaderSettings {\n hideExport = false\n hideFilter = false\n hideColumnSettings = false\n hideHeader = false\n hideSort = false\n collapse = false\n showTitleWhenCollapsed = true;\n}\n\nexport class TableWrapperFooterSettings {\n collapse = false\n}\n\nexport class TableColumnHeaderSettings {\n noFilters = false;\n noHeader = false;\n}\n\nexport class PesrsistedTableSettings {\n constructor(tableSettings? :GeneralTableSettings | PesrsistedTableSettings){\n if (tableSettings){\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseHeader;\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseFooter;\n }\n }\n collapseHeader = false;\n collapseFooter = false;\n}\n\nexport class NotPersisitedTableSettings {\n constructor(tableSettings? :GeneralTableSettings){\n if(tableSettings){\n this.hideExport = tableSettings.headerSettings.hideExport;\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\n this.hideFilter = tableSettings.headerSettings.hideFilter;\n this.hideSort = tableSettings.headerSettings.hideSort;\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\n this.hideHeader = tableSettings.headerSettings.hideHeader;\n this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;\n this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;\n }\n }\n hideExport = true\n hideFilter = true\n hideColumnSettings = true\n hideSort = true\n showTitleWhenHeaderCollapsed = true;\n hideHeader = true\n hideColumnHeaderFilters = true;\n hideColumnHeader = true;\n}\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData, Target } from '../interfaces/report-def';\r\nimport { NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface Group {\r\n groupName?: string;\r\n parentGroupName?: string;\r\n isExpanded?: boolean;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n pageSize?: number;\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : {order:Dictionary<number>,widths:Dictionary<number>,table:{width?:number}};\r\n persistedTableSettings : PesrsistedTableSettings;\r\n groupByKeys: string[];\r\n groups: Group[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersisitedTableSettings : NotPersisitedTableSettings;\r\n linkMaps:{[key:string]:{\r\n link: (t:any)=>string,\r\n useRouterLink: boolean,\r\n target: Target\r\n }};\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersisitedTableSettings = null;\r\n linkMaps = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n LoadedFromStore,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{order:{},widths:{},table:{}},\r\n persistedTableSettings : new PesrsistedTableSettings(),\r\n notPersisitedTableSettings : new NotPersisitedTableSettings(),\r\n pageSize: 10,\r\n linkMaps:{},\r\n groupByKeys: [],\r\n groups: []\r\n};\r\n","\nexport enum FilterType {\n NumberEquals = 'Equals',\n NumberNotEqual = 'Does Not Equal',\n NumberGreaterThan = 'Greater Than',\n NumberLessThan = 'Less Than',\n NumberBetween = 'Between',\n StringEquals = 'Equals',\n StringContains = 'Contains',\n StringDoesNotContain = 'Does Not Contain',\n StringStartWith = 'Start With',\n StringEndsWith = 'Ends With',\n DateIsOn = 'Is on',\n DateIsNotOn = 'Is Not On',\n DateOnOrAfter = 'On or After',\n DateOnOrBefore = 'On or Before',\n DateBetween = 'Between',\n BooleanEquals = 'Is',\n IsNull = 'Is Blank',\n Or = 'Or',\n And = 'And',\n In = 'In',\n Custom = 'Custom',\n}\n\nexport const NumberFilterMap:FilterToFiltersMap = {\n [FilterType.NumberEquals]: [FilterType.NumberEquals],\n [FilterType.NumberNotEqual]: [FilterType.NumberNotEqual],\n [FilterType.NumberGreaterThan]: [FilterType.NumberGreaterThan],\n [FilterType.NumberLessThan]: [FilterType.NumberLessThan],\n [FilterType.NumberBetween]: [FilterType.NumberBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const StringFilterMap:FilterToFiltersMap = {\n [FilterType.StringEquals]: [FilterType.StringEquals],\n [FilterType.StringContains]: [FilterType.StringContains],\n [FilterType.StringDoesNotContain]: [FilterType.StringDoesNotContain],\n [FilterType.StringStartWith]: [FilterType.StringStartWith],\n [FilterType.StringEndsWith]: [FilterType.StringEndsWith],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const DateFilterMap:FilterToFiltersMap = {\n [FilterType.DateIsOn]: [FilterType.DateIsOn],\n [FilterType.DateIsNotOn]: [FilterType.DateIsNotOn],\n [FilterType.DateOnOrAfter]: [FilterType.DateOnOrAfter],\n [FilterType.DateOnOrBefore]: [FilterType.DateOnOrBefore],\n [FilterType.DateBetween]: [FilterType.DateBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const BooleanFilterMap :FilterToFiltersMap = {\n [FilterType.BooleanEquals]: [FilterType.BooleanEquals],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const EnumFilterMap : FilterToFiltersMap = {\n [FilterType.IsNull] : [FilterType.IsNull],\n [FilterType.In] : [FilterType.In]\n}\n\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType[]}>;\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\n\nexport const isNull:FilterFunc<boolean,any> = (filterInfo:FilterInfo) => {\n const func = filterInfo.filterValue ?\n (val: any) => val == null || val === ''\n :\n (val: any) => val != null && val !== '';\n return func;\n}\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const equelsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val) === equelsVal );\n}\n\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).includes(containsVal));\n}\n\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>!prepareForStringCompare(val)?.includes(doesNotContainVal));\n}\n\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).startsWith(startsWith));\n}\n\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).endsWith(startsWith));\n}\n\nconst multipleStringValuesEqualsFunc:FilterFunc<string[],string> = (filterInfo:FilterInfo) => {\n const filterVals = filterInfo.filterValue.map( (v: string) => prepareForStringCompare(v));\n return ((val)=> filterVals.some((s:string) => prepareForStringCompare(val) === s));\n}\n\nexport const StringFilterFuncs: {[k:string]: FilterFunc<any,any>} = {\n [FilterType.StringEquals]: stringEqualFunc,\n [FilterType.StringContains]: stringContainsFunc,\n [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\n [FilterType.StringStartWith]: stringStartsWithFunc,\n [FilterType.StringEndsWith]: stringEndsWithFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleStringValuesEqualsFunc,\n};\n\nexport const EnumFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.IsNull]: isNull,\n [FilterType.In] : multipleStringValuesEqualsFunc,\n};\n\nexport const prepareForStringCompare = (val : any):string => val?.toString().trim().toLowerCase();\n","import { Range, FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\ntype NumberFilterFunc = FilterFunc<number>\n\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val === filterInfo.filterValue;\n}\n\nconst numberNotEqualFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val !== filterInfo.filterValue;\n}\n\nconst numberGreaterThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val > filterInfo.filterValue;\n}\n\nconst numberLessThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val < filterInfo.filterValue;\n}\n\nconst numberBetweenFunc:FilterFunc<Range<number>,number> = (filterInfo : FilterInfo) => {\n const startVal = Number(filterInfo.filterValue.Start);\n const endVal = Number(filterInfo.filterValue.End);\n return ((val)=>(val > startVal) && (val < endVal));\n}\n\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[],number> = (filterInfo:FilterInfo) => {\n return ((val)=>filterInfo.filterValue.some((value: any) => val === value));\n}\n\nexport const NumberFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.NumberEquals]: numberEqalsFunc,\n [FilterType.NumberNotEqual]: numberNotEqualFunc,\n [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\n [FilterType.NumberLessThan]: numberLessThanFunc,\n [FilterType.NumberBetween]: numberBetweenFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleNumberValuesEqualsFunc,\n};\n","import { FilterFunc, FilterInfo, Range } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() === isOnVal);\n}\n\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val?.getTime() !== isNotOnVal);\n}\n\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const afterVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() >= afterVal);\n}\n\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const beforeVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() <= beforeVal);\n}\n\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\n const startVal = new Date(filterInfo.filterValue.Start);\n const endVal = new Date(filterInfo.filterValue.End);\n return ((val)=>val>=startVal && val <= endVal);\n}\n\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.DateIsOn]: dateIsOnFunc,\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\n [FilterType.DateBetween]: dateBetweenFunc,\n [FilterType.IsNull]: isNull,\n};\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\n return filterInfo.filterValue === val;\n}\n\nexport const BooleanFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.BooleanEquals]: booleanEqualsFunc,\n [FilterType.IsNull]: isNull,\n};\n","import { StringFilterMap, DateFilterMap, NumberFilterMap, BooleanFilterMap, FilterType, FilterToFiltersMap, EnumFilterMap } from '../enums/filterTypes';\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\nimport { DateFilterFuncs } from '../functions/date-filter-function';\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\nimport { FieldType } from '../interfaces/report-def';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { Predicate } from '@angular/core';\nimport { get } from 'lodash';\n\ntype FilterTypeMapType = { [key in FieldType]: FilterToFiltersMap};\nexport type UnmappedTypes = FieldType.Expression |\n FieldType.Hidden |\n FieldType.ImageUrl;\n\n\nexport type mappedFieldTypes =\n FieldType.Unknown |\n FieldType.Date |\n FieldType.Currency |\n FieldType.Array |\n FieldType.Number |\n FieldType.String |\n FieldType.Boolean |\n FieldType.PhoneNumber |\n FieldType.Link |\n FieldType.Enum;\n\nexport const filterTypeMap: Omit<FilterTypeMapType, UnmappedTypes> = {\n [FieldType.Unknown] : StringFilterMap,\n [FieldType.Date] : DateFilterMap,\n [FieldType.Currency] : NumberFilterMap,\n [FieldType.Array] : StringFilterMap,\n [FieldType.Number] : NumberFilterMap,\n [FieldType.String] : StringFilterMap,\n [FieldType.Boolean] : BooleanFilterMap,\n [FieldType.PhoneNumber] : StringFilterMap,\n [FieldType.Link] : StringFilterMap,\n [FieldType.Enum] : EnumFilterMap,\n};\n\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\n [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.every( f => f(obj));\n },\n [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.some( f => f(obj));\n },\n};\n\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\n [FieldType.String] : StringFilterFuncs,\n [FieldType.Array] : StringFilterFuncs,\n [FieldType.Currency] : NumberFilterFuncs,\n [FieldType.PhoneNumber] : StringFilterFuncs,\n [FieldType.Date] : DateFilterFuncs,\n [FieldType.Number] : NumberFilterFuncs,\n [FieldType.Boolean] : BooleanFilterFuncs,\n [FieldType.Unknown] : StringFilterFuncs,\n [FieldType.Enum] : EnumFilterFuncs ,\n [FieldType.Link] : StringFilterFuncs,\n};\n\nexport interface FilterState {\n filterId: string;\n filterType: FilterType;\n filterValue?: any;\n active?: boolean;\n\n}\n\nexport interface FilterInfo<T extends FieldType = any> extends FilterState {\n key: string;\n fieldType: T;\n _isExternalyManaged?: boolean;\n}\n\nexport interface PartialFilter<T extends FieldType = any> {\n filterId?: string;\n key: string;\n fieldType: T;\n filterType?: FilterType;\n filterValue?: any;\n}\n\n\n\nexport interface CustomFilter<T extends FieldType = any> extends FilterState {\n predicate: Predicate<T>;\n filterType: FilterType.Custom;\n}\n\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\n return filter && filter.filterType === FilterType.Custom;\n}\n\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\n}\n\nconst defaultPredicate: Predicate<any> = () => true;\n\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\n if(isCustomFilter(filter)) {\n return filter.active ? filter.predicate : defaultPredicate;\n }\n if (filter.filterValue === undefined) {\n return defaultPredicate;\n }\n\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\n if(!func) {\n if(filterFactoryMap[filter.filterType]){\n return filterFactoryMap[filter.filterType!](filter);\n }\n }\n\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\n return (rowObj) => {\n const value = get(rowObj, filter.key);\n return ((value == undefined) && cannotBeTrueForNull)\n ? false\n : func( value);\n };\n}\n\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\nexport type Range<T> = {Start:T,End:T};\n\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\nimport { v4 as uuid } from 'uuid';\nimport { Observable } from 'rxjs';\nimport { defaultTableState, Group, InitializationState, keysToDelete, PersistedTableState, TableState } from './TableState';\nimport { Injectable, Inject, Predicate } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\nimport { Sort, SortDirection } from '@angular/material/sort' ;\nimport { ComponentStore } from '@ngrx/component-store' ;\nimport update from 'immutability-helper';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { filter, last, map, tap } from 'rxjs/operators'\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { notNull, onceWhen } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\n\nexport function stateIs(initializationState: InitializationState) {\n return (state: TableState) => state.initializationState === initializationState;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TableStore extends ComponentStore<TableState> {\n\n constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\n super( { ...defaultTableState, ...config.defaultTableState});\n }\n\n getSavableState() : Observable<PersistedTableState> {\n return this.state$.pipe(\n map( s => {\n const savableState = {...s} as Partial<TableState>;\n keysToDelete.forEach(key => delete savableState[key]);\n return savableState as PersistedTableState;\n })\n );\n }\n\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\n this.effect(() => srcObservable.pipe(\n tap(func)\n ))\n }\n\n onLast(callback: (state: TableState) => void ) {\n this.on(this.state$.pipe(last()),callback);\n }\n\n readonly metaData$ = this.select( state => state.metaData);\n\n readonly metaDataArray$ = this.select(\n this.state$,\n orderMetaData\n );\n\n getMetaData$ = (key: string) : Observable<MetaData> => {\n return this.select( state => state.metaData[key] ).pipe(\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\n notNull())\n }\n\n getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\n getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\n\n private displayedColumns = (state:TableState) => orderMetaData(state).map(md => md.key)\n .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\n readonly displayedColumns$ = this.select(this.displayedColumns);\n readonly hideColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\n }));\n\n readonly resetState = this.updater((state) => {\n const hiddenColumns = Object.values(state.metaData)\n .filter(md => md.fieldType === FieldType.Hidden)\n .map(md => md.key);\n const sorted = this.createPreSort(state.metaData);\n return update(state, {\n hiddenKeys: { $set: [...hiddenColumns] },\n filters: { $set: {} },\n sorted: {$set: sorted},\n userDefined : {$set: {widths:{},order:{},table:{}}},\n });\n });\n\n readonly showColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\n }));\n\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\n\n var hiddenKeysSet= new Set<string>(\n [\n ...displayCols.filter(col => !col.visible).map(col => col.key),\n ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\n ]\n );\n\n return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\n });\n\n\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\n const userDefinedWidths = {...state.userDefined.widths};\n colWidths.forEach(cw => {\n userDefinedWidths[cw.key] = cw.widthInPixel;\n });\n return {...state, userDefined: {...state.userDefined,widths:userDefinedWidths}};\n });\n\n setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\n const {newOrder ,oldOrder} = moved;\n const mdsArr = orderViewableMetaData(state);\n moveItemInArray(mdsArr,oldOrder,newOrder);\n\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\n aggregate[current.key] = index;\n return aggregate\n },{});\n return({...state, userDefined:{...state.userDefined,order:userDefinedOrder}})\n })\n\n\n readonly filters$ = this.select(state => state.filters );\n\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | CustomFilter | undefined> => {\n return this.select( state => state.filters[filterId] );\n }\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\n return this.addFiltersToState(state, [filter]);\n });\n\n readonly addFilters = this.updater((state,filters:(FilterInfo | CustomFilter )[])=>{\n return this.addFiltersToState(state, filters);\n })\n\n\n private addFiltersToState = (state:TableState,filters:(FilterInfo | CustomFilter)[]) : TableState => {\n\n var customFilters = filters.filter( isCustomFilter );\n\n var filterInfos = filters.filter(isFilterInfo);\n\n const filtersObj = filterInfos\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\n .reduce((filtersObj: {[k: string]: any},filter)=>{\n if (!filter.filterId) {\n filter.filterId = uuid();\n }\n filtersObj[filter.filterId] = filter;\n return filtersObj;\n },{});\n\n customFilters.forEach( fltr => {\n if(!fltr.filterId) {\n fltr.filterId = uuid();\n }\n filtersObj[fltr.filterId] = fltr;\n })\n return {\n ...state,\n filters : {...state.filters, ...filtersObj }\n };\n }\n\n readonly removeFilter = this.updater( (state, filterId: string) =>\n update(state, {filters: {$unset : [filterId ]}})\n );\n\n readonly removeFilters = this.updater( (state, filterIds: string[]) =>\n update(state, {filters: {$unset : [...filterIds ]}})\n );\n\n readonly clearFilters = this.updater((state)=>\n ({...state,filters:{}}))\n\n\n readonly sorted$ = this.state$.pipe(\n filter(stateIs(InitializationState.Ready)),\n map( state => state.sorted)\n );\n\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\n .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\n }\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\n const sortArray = state.sorted.filter( s => s.active !== key );\n if(direction) {\n sortArray.unshift({active: key, direction});\n }\n return {\n ...state,\n sorted: sortArray,\n };\n });\n\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\n return {\n ...state,\n sorted: sortArray,\n };\n });\n\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\n const metaData = state.metaData;\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\n : state.initializationState === InitializationState.Created ? this.createPreSort(metaData) : state.sorted;\n return {...state, ...incomingTableState, metaData , sorted};\n }\n\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({...state,pageSize}));\n\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\n\n cleanPersistedState(state: TableState,pState: PersistedTableState) {\n const metas = Object.values(state.metaData);\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\n obj[filter.filterId!] = pState.filters[filter.filterId!];\n return obj;\n }, {});\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\n return ({...pState,filters,sorted})\n }\n\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\n const incomingTableState: Partial<TableState> = this.cleanPersistedState(state,persistedState);\n const newState = this.updateStateFunc(state,incomingTableState);\n newState.initializationState = state.initializationState === InitializationState.MetaDataLoaded ? InitializationState.LoadedFromStore : state.initializationState;\n return newState;\n });\n\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\n setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\n\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\n return {\n key: orig.key,\n displayName: merge.displayName ?? orig.displayName,\n fieldType: merge.fieldType || orig.fieldType,\n additional: {...orig.additional, ...merge.additional},\n order: merge.order ?? orig.order,\n preSort: merge.preSort ?? orig.preSort,\n _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\n width: merge.width ?? orig.width,\n noExport: merge.noExport || orig.noExport,\n noFilter: merge.noFilter || orig.noFilter,\n customCell: merge.customCell ?? orig.customCell,\n transform: merge.transform ?? orig.transform,\n click: merge.click ?? orig.click,\n };\n }\n\n readonly setIntializationState = this.updater( (state, initializationState: InitializationState) => {\n return {...state, initializationState};\n });\n\n runOnceWhen(predicate: Predicate<TableState>, func: (state:TableState) => void) {\n const obs = this.state$.pipe(onceWhen(predicate));\n this.on(obs, (state) => {\n func(state);\n });\n }\n\n onReady( func: (state: TableState) => void ) {\n this.runOnceWhen(stateIs(InitializationState.Ready),func);\n }\n\n readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\n const metaData = ( Array.isArray(md) ? [...md] : [md] )\n .reduce((prev: Dictionary<MetaData>,curr) => {\n if(prev[curr.key]) {\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\n } else {\n prev[curr.key] = curr;\n }\n return prev;\n } ,{});\n let sorted = state.sorted;\n if(sorted.length === 0) {\n sorted = this.createPreSort(metaData);\n }\n const order = this.initializeOrder(state, metaData);\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\n return {...state, initializationState, metaData, sorted, userDefined:{...state.userDefined,order:order}};\n });\n\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\n let userDefinedOrder = state.userDefined.order;\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\n return {}\n }\n return userDefinedOrder;\n }\n\n toggleCollapseHeader = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n toggleCollapseFooter = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n addGroupByKey = this.updater((state, groupByKey: string) => ({\n ...state,\n groupByKeys: [...state.groupByKeys, groupByKey]\n }));\n\n removeGroupByKey = this.updater((state, groupByKey: string) => ({\n ...state,\n groupByKeys: state.groupByKeys.filter(key => groupByKey != key)\n }));\n\n updateGroup = this.updater((state, group: Group) => ({\n ...state,\n groups: [...state.groups.filter(g => g.groupName != group.groupName), group]\n }))\n\n groupByKeys$ = this.select(state => state.groupByKeys);\n groups$ = this.select(state => state.groups);\n\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\n const s:TableState = {\n ...state,\n persistedTableSettings : new PesrsistedTableSettings(settings),\n notPersisitedTableSettings : new NotPersisitedTableSettings(settings)\n };\n return s;\n });\n\n tableSettings$ = this.select(state => {\n const ts : PesrsistedTableSettings & NotPersisitedTableSettings =\n {...state.persistedTableSettings,...state.notPersisitedTableSettings};\n return ts;\n })\n\n setLinkMaps = this.updater((state,maps: any)=>{\n return {...state,linkMaps:maps};\n });\n getLinkMap = (md:MetaData) =>{\n return this.select(state => {\n return state.linkMaps[md.key]})};\n}\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\n\nexport const orderMetaData = (state:TableState) => {\n const userOrderArr = Object.entries(state.userDefined.order);\n return userOrderArr.length ?\n Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\n :\n Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\n}\n","import { ChangeDetectionStrategy, Component, Input, Inject } from '@angular/core';\r\nimport { ArrayStyle, ArrayAdditional, MetaData } from '../interfaces/report-def';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\n\r\n\r\n@Component({\r\n selector: 'tb-array-column',\r\n template: `\r\n <ng-container *ngIf=\"array.length === 0; else hasVals\">-</ng-container>\r\n <ng-template #hasVals>\r\n <ng-container [ngSwitch]=\"additional.arrayStyle\">\r\n <ng-container *ngSwitchCase=\"ArrayStyle.CommaDelimited\">\r\n <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\">, </ng-container> </span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ArrayStyle.NewLine\">\r\n <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\"><br /></ng-container> </span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayColumnComponent {\r\n ArrayStyle = ArrayStyle;\r\n additional!: ArrayAdditional;\r\n @Input() array!: any[];\r\n @Input() metaData!: MetaData;\r\n\r\n constructor( @Inject(TableBuilderConfigToken) private config: TableBuilderConfig\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.additional = this.metaData?.additional ?? this.config.arrayInfo ?? { limit: 3, arrayStyle: ArrayStyle.NewLine } as ArrayAdditional;\r\n this.array = (this.array ?? []).slice(0, this.additional.limit );\r\n\r\n }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\nimport { TableStore } from \"../classes/table-store\";\nimport { MetaData } from \"../interfaces/report-def\";\n\n@Component({\n selector: \"tb-link-column\",\n template: `\n <ng-container *ngrxLet=\"(link | func : (metaData)) as linkInfo\">\n <a *ngIf=\"$any(linkInfo).useRouterLink; else hrefLink\" target=\"{{$any(linkInfo).target}}\"\n [routerLink]=\" [($any(linkInfo).link | func : element)]\"\n [queryParams]=\"$any(linkInfo).routerLinkOptions.queryParams | func : element\"\n [fragment]=\"$any(linkInfo).routerLinkOptions.fragment\"\n [preserveFragment]=\"$any(linkInfo).routerLinkOptions.preserveFragment\"\n [queryParamsHandling]=\"$any(linkInfo).routerLinkOptions.queryParamsHandling\"\n >\n {{transform | func : element}}\n </a>\n <ng-template #hrefLink>\n <a target=\"{{$any(linkInfo).target}}\"\n href=\"{{($any(linkInfo).link | func : element)}}\">\n {{transform | func : element}}\n </a>\n </ng-template>\n </ng-container>\n `\n})export class LinkColumnComponent {\n @Input() metaData!: MetaData;\n @Input() element!: any;\n @Input() transform = (a:any)=>a;\n constructor(protected store: TableStore) { }\n link = (metaData : MetaData) => this.store.getLinkMap(metaData);\n\n}","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\nimport { TableStore } from \"../../classes/table-store\";\nimport { MetaData } from \"../../interfaces/report-def\";\n\n@Component({\n templateUrl: './initialization-component.html',\n})\nexport class InitializationComponent {\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\n @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\n @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\n @ViewChild('defaultWithIcon', {static: true}) defaultWithIcon! : TemplateRef<any>;\n}\n","<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\n</ng-template>\n\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\n <span>\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\n </span>\n</ng-template>\n\n<ng-template #array let-element='element' let-metaData='metaData'>\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\n</ng-template>\n\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\n <span>{{ transform | func : element }}</span>\n</ng-template>\n\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\n <mat-icon>{{ transform | func : element }}</mat-icon>\n</ng-template>\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\nimport { Injectable, TemplateRef } from \"@angular/core\";\nimport { TableStore } from \"../classes/table-store\";\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\n\n@Injectable({providedIn: 'root'})\nexport class TableTemplateService {\n instance!: InitializationComponent;\n templates;\n\n initTemplates() {\n this.templates = { };\n this.templates[FieldType.Array] = this.instance.arrayTemplate;\n this.templates[FieldType.Boolean] = this.instance.defaultWithIcon;\n this.templates[FieldType.Currency] = this.instance.defaultTemplate;\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\n this.templates[FieldType.Expression] = this.instance.defaultTemplate;\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\n this.templates[FieldType.Link] = this.instance.linkTemplate;\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\n this.templates[FieldType.String] = this.instance.defaultTemplate;\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\n this.templates[FieldType.Enum] = this.instance.defaultTemplate;\n }\n getTemplate(metaData: MetaData) : TemplateRef<any> {\n\n let tmp = this.templates[metaData.fieldType];\n if(metaData.useIcon) {\n if(tmp === this.instance.defaultTemplate) {\n tmp = this.instance.defaultWithIcon;\n }\n }\n return tmp;\n }\n\n constructor(resolver: ComponentFactoryResolver, i: Injector, ) {\n const factory = resolver.resolveComponentFactory(InitializationComponent);\n const c = factory.create(i);\n this.instance = c.instance;\n this.initTemplates();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../../classes/table-store';\nimport { Dictionary } from '../../../interfaces/dictionary';\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\n template: `\n <div *ngFor=\"let item of keyValues$ | async| keyvalue\" >\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\n </mat-checkbox>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InListFilterComponent,\n multi: true\n }]\n})\nexport class InListFilterComponent implements ControlValueAccessor {\n\n constructor(private ref: ChangeDetectorRef, private tableState: TableStore ) {}\n value: string[] = [];\n FieldType = FieldType;\n writeValue(obj: string[]): void {\n this.value = obj;\n\n if(this.value) {\n this.selectedKeys = this.value.map( f => f );\n }\n this.ref.markForCheck();\n }\n\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n @Input() key!: string;\n\n keyValues$! : Observable<Dictionary<string>>;\n selectedKeys : string[] = [];\n metaData!: MetaData;\n\n ngOnInit() {\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\n tap(metaData => this.metaData = metaData),\n map( metaData => {\n if(metaData.additional?.filterOptions?.filterableValues ) {\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\n } else {\n if(metaData.fieldType === FieldType.Enum ) {\n return metaData.additional!.enumMap;\n }\n }\n return {};\n })\n );\n }\n\n selectFilterChanged($event, val) {\n if($event.checked) {\n this.selectedKeys.push(val);\n } else {\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\n }\n\n this.value = this.selectedKeys;\n this.onChange(this.value);\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './header-menu.component.html',\r\n styleUrls: ['./header-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class HeaderMenuComponent {\r\n FieldType = FieldType;\r\n FilterType = FilterType;\r\n myFilterType!: FilterType;\r\n myFilterValue: any;\r\n\r\n @Input() filter!: Partial<FilterInfo>;\r\n\r\n @Input() metaData!: MetaData;\r\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\r\n constructor( public tableState: TableStore) {}\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n ngOnInit() {\r\n this.resetFilterType();\r\n }\r\n\r\n resetFilterType() {\r\n if(this.metaData.additional?.filterOptions?.filterableValues) {\r\n this.myFilterType = FilterType.In;\r\n return;\r\n }\r\n switch (this.metaData.fieldType) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n this.myFilterType = FilterType.StringContains;\r\n break;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n this.myFilterType = FilterType.NumberEquals;\r\n break;\r\n case FieldType.Boolean:\r\n this.myFilterType = FilterType.BooleanEquals;\r\n break;\r\n case FieldType.Date:\r\n this.myFilterType = FilterType.DateIsOn;\r\n break;\r\n case FieldType.Enum:\r\n this.myFilterType = FilterType.In;\r\n break;\r\n }\r\n }\r\n\r\n setStringFilterType() {\r\n this.myFilterType = this.myFilterType === FilterType.StringContains ? FilterType.StringDoesNotContain : FilterType.StringContains;\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n if (filterType === this.myFilterType) {\r\n this.resetFilterType();\r\n } else {\r\n this.myFilterType = filterType;\r\n }\r\n }\r\n\r\n onEnter(filter: FilterInfo) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.trigger.closeMenu();\r\n }\r\n }\r\n}\r\n","<button mat-icon-button disableRipple [matMenuTriggerFor]=\"menu\" style=\"height:16px;\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter style=\"display:block;padding: 0 16px\" name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue' >\r\n </tb-in-list-filter>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font\" style=\"padding: 0 16px\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation style=\"padding: 0 16px\">\r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberLessThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberGreaterThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.NumberEquals)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div style=\"padding: 0 16px\">\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date\">\r\n <mat-form-field style=\"padding: 0 16px\" class=\"font auto-width\" stop-propagation >\r\n <span matPrefix>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrAfter)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrBefore)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.DateIsOn)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\ntype PipeLike<T> = Observable<T>['pipe'];\nexport class Subjectifier<T> extends Observable<T>{\n private _subj = new Subject<T>();\n private merged = merge(this._source, this._subj);\n constructor(private _source: Observable<T>){\n super((obs: Observer<T>) => {\n const s = merge( _source, this._subj ).subscribe(obs);\n return s;\n });\n }\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\n new Subjectifier(this.merged.pipe(...operations));\n}","import { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\nimport { fromEvent } from \"rxjs\";\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\nimport { defaultShareReplay } from \"../../rxjs\";\nimport { TableStore } from \"../classes/table-store\";\n\n@Directive({\n selector: \"[resizeColumn]\",\n})\nexport class ResizeColumnDirective implements OnInit{\n @Input(\"resizeColumn\") resizable!: boolean;\n\n @Input() key!: string;\n constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\n\n ngOnInit(){\n if (this.resizable){\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\n const resizer = this.createResizerSpanInColumnHead(columnHead);\n\n const aggregateMouseEventsMapped$ = this.mouseDownThroghMouseUpEventMapper(resizer,columnHead,table)\n\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\n filter(({mouseMove})=>!!mouseMove.buttons),\n map( ({mouseDownData,mouseMove}) => {\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\n return ({\n key:this.key,\n widthInPixel:newColumnWidth,\n tableSize:newTableWidth,\n })\n }),\n defaultShareReplay()\n );\n\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\n ));\n\n this.store.setTableWidth(resizeColsData$.pipe(\n map(resizeData => resizeData.tableSize )));\n }\n\n }\n\n createResizerSpanInColumnHead(columnHead:HTMLElement){\n const resizer = this.renderer.createElement(\"span\");\n this.renderer.addClass(resizer, \"resize-holder\");\n resizer.style['cursor']='col-resize';\n resizer.style['user-select']='none';\n resizer.style['width']='10px';\n resizer.style['height']='100%';\n resizer.style['position']='absolute';\n resizer.style['right']='0';\n resizer.style['top']='0';\n resizer.style['z-index']='1';\n this.renderer.appendChild(columnHead, resizer);\n return resizer;\n }\n\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\n const columnHead: HTMLElement = this.el.nativeElement;\n const row = this.renderer.parentNode(columnHead);\n const table = this.renderer.parentNode(row);\n return ({table,columnHead})\n }\n\n mouseDownThroghMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\n .pipe(\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\n map( mouseMove => ({mouseDownData, mouseMove})),\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\n ) ),\n )\n }\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\n map(event => ({\n startPageX: event.pageX,\n startColumnWidth: this.getElementWidth(columnHead),\n startTableWidth: this.getElementWidth(table),\n }))\n );\n }\n\n calculateNewWidths(mouseDownData:MouseDowmData,mouseMove:MouseEvent):{newTableWidth:number,newColumnWidth:number}{\n const change = (mouseMove.pageX - mouseDownData.startPageX );\n let newColumnWidth = mouseDownData.startColumnWidth + change;\n if(newColumnWidth < 1){\n newColumnWidth = 1;\n }\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\n return ({newTableWidth,newColumnWidth})\n }\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\n\n}\ninterface MouseDowmData{\n startPageX:number,\n startColumnWidth:number,\n startTableWidth:number,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MetaData } from '../interfaces/report-def';\nimport {sumBy} from 'lodash';\n\n@Pipe({ name: 'columnTotal' })\nexport class ColumnTotalPipe implements PipeTransform {\n transform(data: any[], metaData: MetaData) {\n const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter)\n switch (metaData.additional!.footer!.type) {\n case 'sum':\n return sumBy(dataToCalculate, metaData.key);\n }\n return null;\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren, Predicate, Injector } from '@angular/core';\nimport { FieldType, MetaData } from '../../interfaces/report-def';\nimport { MatLegacyColumnDef as MatColumnDef, MatLegacyTable as MatTable } from '@angular/material/legacy-table';\nimport { Observable } from 'rxjs';\nimport { CustomCellDirective } from '../../directives';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { TransformCreator } from '../../services/transform-creator';\nimport { TableStore } from '../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { TableTemplateService } from '../../services/table-template-service';\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { CdkDropList, CDK_DROP_LIST } from '@angular/cdk/drag-drop';\nimport { Dictionary } from '@ngrx/entity';\n\n\ninterface widthStyle {\n flex?: string;\n maxWidth?: string;\n}\n\ninterface allStyles {\n body: widthStyle;\n header: widthStyle;\n footer: widthStyle;\n}\n\n@Component({\n selector: 'tb-column-builder',\n templateUrl: './column-builder.component.html',\n styleUrls: ['./column-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ]\n})\nexport class ColumnBuilderComponent implements OnInit {\n FieldType = FieldType;\n filter!: Partial<FilterInfo>;\n @Input() metaData!: MetaData;\n\n @Input() customCell!: CustomCellDirective;\n @Input() data$!: Observable<any[]>;\n\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\n outerTemplate!: TemplateRef<any>;\n innerTemplate!: TemplateRef<any>;\n transform!: (o: any, ...args: any[])=> any ;\n\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\n\n\n constructor(\n private transformCreator: TransformCreator,\n private table: MatTable<any>,\n public state: TableStore,\n private templateService: TableTemplateService,\n protected injector: Injector,\n ) { }\n\n getInnerTemplate() :TemplateRef<any> {\n if(this.metaData.template) return this.metaData.template;\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\n return this.templateService.getTemplate(this.metaData);\n }\n showfilters$!: Observable<boolean>;\n getOuterTemplate() {\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\n }\n classes?: Dictionary<Predicate<any>>;\n\n ngOnInit() {\n if(this.metaData.fieldType === FieldType.Currency) {\n this.classes = {\n ['negative-currency']: (element) => element[this.metaData.key] < 0,\n ...this.metaData.classes\n }\n }\n else {\n this.classes = this.metaData.classes;\n }\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\n const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\n previousAndCurrent(0),\n map(this.mapWidth),\n );\n const fullMetaStyles = this.metaData.additional?.styles ?? {};\n this.styles$ = width$.pipe(map(width => {\n const styles: allStyles = {\n header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\n footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\n body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\n };\n return styles;\n }));\n this.showfilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));\n }\n\n ngAfterViewInit() {\n this.outerTemplate = this.getOuterTemplate();\n this.innerTemplate = this.getInnerTemplate();\n this.transform = this.transformCreator.createTransformer(this.metaData);\n this.table.addColumnDef(this.columnDef);\n }\n\n cellClicked(element: any, key: string) {\n if(this.metaData.click) {\n this.metaData.click(element,key);\n }\n }\n\n mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\n\n if( currentUserDefinedWidth ){\n return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\n } if( wasReset() ){\n return ({flex:'1'});\n }\n return ({});\n function wasReset(){\n return previousUserDefinedWidth >=0 && currentUserDefinedWidth == null;\n }\n }\n\n styles$!:Observable<allStyles>\n\n}\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\n\n <ng-template #body let-element='element' >\n <mat-cell [matTooltip]=\"metaData.toolTip ?? ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\">\n </ng-container>\n </mat-cell>\n\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref >\n <div class=\"header-container\" cdkDragHandle>\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu\n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\n </tb-header-menu>\n </div>\n </mat-header-cell>\n\n </ng-template>\n\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { MatLegacyTableDataSource as MatTableDataSource } from '@angular/material/legacy-table';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\n subscription?: Subscription;\n constructor(private dataSrc: Observable<T[]>) {\n super([]);\n }\n\n connect() {\n if (!this.subscription) {\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\n }\n return super.connect();\n }\n disconnect() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n super.disconnect();\n }\n}\n","import { Sort, SortDirection } from \"@angular/material/sort\";\nimport { orderBy } from 'lodash';\n\nexport type direc = 'asc' | 'desc' | boolean;\n\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\n return orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction as direc ));\n}\n","import { Observable } from 'rxjs';\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\nimport { MatTableObservableDataSource } from './MatTableObservableDataSource'\nimport { sortData } from '../functions/sort-data-function';\nimport { MatSort } from '@angular/material/sort';\n\n\nexport function isMultiSort(sort: MatSort): sort is MultiSortDirective {\n return Array.isArray((sort as MultiSortDirective ).rules);\n}\n\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\n{\n\n constructor(dataSrc: Observable<T[]>)\n {\n super(dataSrc);\n\n const baseSort = this.sortData;\n this.sortData = ((data: T[], sort: MatSort) => isMultiSort(sort) ? sortData(data, sort.rules) : baseSort(data, sort));\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n Input,\n ElementRef,\n AfterViewInit,\n OnInit,\n} from '@angular/core';\nimport { MatLegacyPaginator as MatPaginator, LegacyPageEvent as PageEvent } from '@angular/material/legacy-paginator';\nimport { asyncScheduler, merge, Observable } from 'rxjs';\nimport { delay, distinct, distinctUntilKeyChanged, map } from 'rxjs/operators';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { TableStore } from '../../classes/table-store';\n@Component({\n selector: 'tb-paginator',\n template: `\n <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\" *ngIf=\"currentPageData$ | async as pageData\">\n {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\n </div>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\n [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\n </mat-paginator>\n `,\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnInit, AfterViewInit{\n @Input() dataSource! : GenericTableDataSource<any>;\n @Input() tableElRef! : ElementRef\n @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\n currentPageData$!: Observable<CurrentPageDetails>;\n collapseFooter$!:Observable<boolean>;\n @Input() data$!: Observable<any[]>;\n\n constructor(private state : TableStore){}\n ngOnInit(){\n this.dataSource.paginator = this.paginator;\n this.ourPageEvent = true;\n this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\n this.state.setPageSize(onPagiantorPageSizeChange(this.paginator));\n this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n\n }\n ngAfterViewInit(){\n this.currentPageData$ = merge(\n this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\n this.data$.pipe(\n distinctUntilKeyChanged(\"length\"),\n delayToAllowForProperUpdate,\n map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\n );\n }\n\n paginatorChange() : void {\n if(!this.ourPageEvent){\n setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\n } else {\n this.ourPageEvent = false;\n }\n }\n ourPageEvent = false;\n\n}\n\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\n total : pageData.length\n});\n\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\n currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\n total:paginator.length})\n\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\n\ninterface CurrentPageDetails {\n currentStart:number,\n currentEnd:number,\n total:number\n}\n\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.pageSize),distinct());\n\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\n paginator._changePageSize(pageSize);\n\nconst onPagiantorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\n","import {\n Component,\n ViewChild,\n Input,\n ChangeDetectionStrategy,\n Output,\n SimpleChanges,\n OnInit,\n QueryList,\n ViewContainerRef,\n ElementRef,\n Injector,\n TemplateRef,\n} from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { MatLegacyRowDef as MatRowDef, MatLegacyTable as MatTable } from '@angular/material/legacy-table';\nimport { Observable } from 'rxjs';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TableStore } from '../../classes/table-store';\nimport { tap, map } from 'rxjs/operators';\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { FieldType } from '../../interfaces/report-def';\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Group } from '../../classes/TableState';\n\n@Component({\n selector: 'tb-generic-table',\n templateUrl: './generic-table.component.html',\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GenericTableComponent implements OnInit {\n\n\n drop(event: CdkDragDrop<string[]>) {\n this.state.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n }\n\n @Input() data$!: Observable<any[]>;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() rows!: QueryList<MatRowDef<any>>;\n @Input() isSticky = false;\n @Input() columnBuilders!: ColumnBuilderComponent[];\n @Input() columnInfos!: Observable<ColumnInfo[]>;\n @Input() groupHeaderTemplate!: TemplateRef<any>;\n\n private _disableSort!: boolean;\n @Input() set disableSort(val: boolean) {\n this._disableSort = val;\n if (val) {\n if (this.dataSource?.sort) {\n this.dataSource.sort = null;\n }\n } else {\n if (this.dataSource && !this.dataSource.sort) {\n this.dataSource.sort = this.sort;\n }\n }\n }\n get disableSort() { return this._disableSort; }\n\n @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\n @ViewChild(CdkDropList, { static: true }) dropList!: CdkDropList;\n @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\n currentColumns!: string[];\n dataSource!: GenericTableDataSource<any>;\n keys: string [] = [];\n injector: Injector;\n rowDefArr :MatRowDef<any>[]= [];\n columns:string [] = [];\n myColumns: Dictionary<ColumnBuilderComponent> = {};\n showHeader$!: Observable<boolean>;\n\n constructor(\n private sort: MatSort,\n public state: TableStore,\n private viewContainer: ViewContainerRef,\n injector: Injector,\n ) {\n\n this.injector = Injector.create({ providers: [\n {provide: MatTable, useFactory: ()=> {return this.table} },\n {provide: CdkDropList, useFactory: ()=> {return this.dropList} },\n ], parent: injector});\n }\n\n trackByFunction = (index:number, item: any) => {\n if (!item) {\n return null;\n }\n if (this.trackBy) {\n return item[this.trackBy];\n }\n return item;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.rows && this.rows && this.myColumns.length) {\n this.initializeRowDefs([...this.rows]);\n }\n }\n\n ngOnInit() {\n if (this.SelectionColumn) {\n this.columns.push('select');\n }\n\n if (this.IndexColumn) {\n this.columns.push('index');\n }\n\n this.createDataSource();\n\n this.state.on(this.columnInfos, columns => {\n columns.forEach(ci => this.addMetaData(ci))\n });\n\n this.initializeRowDefs([...this.rows]);\n\n this.state.on(this.state.displayedColumns$, keys => {\n this.keys = [...this.columns, ...keys];\n this.rowDefArr?.forEach(row => row.columns = this.keys)\n });\n\n this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));\n }\n\n createDataSource() {\n this.dataSource = new GenericTableDataSource(\n this.data$.pipe(tap((d) => this.selection.clear() ))\n );\n\n if (!this.disableSort) {\n this.dataSource.sort = this.sort;\n }\n }\n\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\n return row.isGroupHeader;\n }\n\n isGroupFooter(_: number, row: { isGroupFooter: boolean }) {\n return row.isGroupFooter;\n }\n\n updateGroup(group: Group): void {\n this.state.updateGroup({\n ...group,\n isExpanded: !group.isExpanded\n });\n }\n\n addMetaData(column: ColumnInfo) {\n let columnBuilder = this.myColumns[column.metaData.key];\n if(columnBuilder) {\n columnBuilder.metaData = column.metaData;\n } else {\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\n index: 0,\n injector: this.injector\n });\n component.instance.customCell = column.customCell;\n component.instance.metaData = column.metaData;\n component.instance.data$ = this.data$;\n this.myColumns[column.metaData.key] = component.instance;\n }\n }\n\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\n this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\n this.rowDefArr = defs;\n defs.forEach(r => {\n r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\n if (this.table) {\n this.table.addRowDef(r);\n }\n });\n }\n\n selection : SelectionModel<any> = new SelectionModel<any>(true, []);\n @Output() selection$: Observable<any> = this.selection.changed;\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\n\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected() ?\n this.selection.clear() :\n this.selection.select(...this.dataSource.data);\n }\n\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\n previousAndCurrent<number | undefined>(0),\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\n if( currentUserDefinedWidth){\n return ({width:`${currentUserDefinedWidth}px`});\n } if( wasReset() ){\n return ({width:'initial'});\n }\n return ({});\n\n function wasReset(){\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\n }\n })\n );\n\n collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n}\n","<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n #table\n [dataSource]=\"dataSource\"\n [trackBy]='trackByFunction'\n [styler]=\"tableWidth | async\"\n>\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\">\n <div [style.paddingLeft]=\"row.padding + 'px !important'\" >\n <button mat-icon-button (click)=\"updateGroup(row);\">\n <mat-icon *ngIf=\"!row.isExpanded\">chevron_right</mat-icon>\n <mat-icon *ngIf=\"row.isExpanded\">expand_more</mat-icon>\n </button>\n {{row.groupHeaderName}}\n </div>\n <div style=\"flex-grow: 1\">\n <ng-container *ngTemplateOutlet=\"groupHeaderTemplate; context: { element: row }\"></ng-container>\n </div>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"showHeader$ | async\">\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n </ng-container>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator #tbPaginator\n [dataSource]=\"dataSource\"\n [tableElRef]=\"tableElRef\"\n [data$]=\"data$\">\n </tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n</div>\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\n\n// here is how to use it\n// <generic-table [report]=\"report\">\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\n// <p *customCell=\"'column2'\">I am custom cell two </p>\n// </generic-table>\n@Directive({\n selector: '[customCell]',\n})\nexport class CustomCellDirective implements AfterContentInit {\n @Input() customCell!: string;\n @Input() displayName?: string;\n @Input() preSort?: SortDef;\n @Input() TemplateRef: TemplateRef<any>;\n @Input() customCellOrder?: number;\n @Input() customCellWidth?: string;\n constructor(\n @Optional() private templateRef: TemplateRef<any>,\n @Optional() public columnDef: CdkColumnDef\n ) {\n this.TemplateRef = this.templateRef;\n }\n ngAfterContentInit() {\n if (this.TemplateRef === null) {\n this.TemplateRef = this.templateRef;\n }\n }\n\n getMetaData(metaData? : MetaData): MetaData {\n return {\n key: this.customCell,\n displayName: this.displayName ?? metaData?.displayName,\n preSort: this.preSort ?? metaData?.preSort,\n fieldType: metaData?.fieldType ?? FieldType.Unknown,\n order: this.customCellOrder ?? metaData?.order,\n _internalNotUserDefined: !(!!metaData),\n width: this.customCellWidth ?? metaData?.width,\n customCell: true,\n noExport: !metaData\n };\n }\n}\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\nimport { DisplayCol } from '../../classes/display-col';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'tb-col-displayer',\n templateUrl: './gen-col-displayer.component.html',\n styleUrls: ['./gen-col-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenColDisplayerComponent {\n columns$: Observable< DisplayCol[]>;\n constructor( private tableState: TableStore ) {\n this.columns$ = this.tableState.state$.pipe(\n map( state =>\n orderViewableMetaData(state)\n .map( md => ({\n key: md.key,\n displayName: md.displayName,\n isVisible: !state.hiddenKeys.includes(md.key)\n }))\n ),\n );\n }\n\n reset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = true);\n this.emit(displayCols);\n }\n drop(event: CdkDragDrop<string[]>) {\n this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n }\n unset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = false);\n this.emit(displayCols);\n }\n\n emit(displayCols: DisplayCol[]) {\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\n }\n}\n","<ng-container *ngIf=\"columns$ | async as displayCols\">\n <span matTooltip=\"Show/hide columns\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">visibility_off</mat-icon>\n </button>\n </span>\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n <button mat-menu-item>\n <div style=\"display: flex; flex-direction: row-reverse;\">\n <span matTooltip=\"Close\">\n <button class=\"filter-button\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </div>\n </button>\n <button mat-menu-item stop-propagation>\n <div style=\"display: flex; justify-content: space-between;\">\n <span matTooltip=\"Show all columns\">\n <button mat-icon-button (click)=\"reset(displayCols)\">\n <mat-icon color=\"primary\">done_all</mat-icon>\n </button>\n </span>\n\n <span matTooltip=\"Hide all columns\">\n <button mat-icon-button (click)=\"unset(displayCols)\">\n <mat-icon color=\"primary\">cancel</mat-icon>\n </button>\n </span>\n </div>\n </button>\n\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation cdkDropListLockAxis='y' >\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\"\n *ngFor=\"let col of displayCols\">\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; justify-content: space-between; align-items: center;\">\n <p class=\"label\" style=\"display: flex;\">\n {{col.displayName || (col.key | spaceCase) }}\n </p>\n <span matTooltip=\"Hide Column\" class=\"show-hide\" *ngIf=\"col.isVisible; else hidden\">\n <button mat-icon-button>\n <mat-icon color=\"primary\">check_box</mat-icon>\n </button>\n </span>\n\n <ng-template #hidden >\n <span matTooltip=\"Show Column\" class=\"show-hide\">\n <button mat-icon-button>\n <mat-icon>indeterminate_check_box</mat-icon>\n </button>\n </span>\n </ng-template>\n\n </div>\n </button>\n </div>\n </mat-menu>\n</ng-container>\n","import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { map } from \"rxjs/operators\";\nimport { PartialFilter } from \"../../classes/filter-info\";\n@Injectable()\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\n constructor(){\n super({filterInfo:[]});\n }\n\n clearAll = this.updater(()=>({filterInfo:[]}));\n deleteByIndex = this.updater((state,index:number)=>{\n const arr = [...state.filterInfo];\n arr.splice(index, 1);\n return {filterInfo:arr};\n });\n\n currentFilters$ = this.state$.pipe(map(state => state.filterInfo));\n\n addFilter = this.updater((state,filter:PartialFilter)=>{\n return ({...state,filterInfo:[...state.filterInfo,filter]});\n })\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\nimport { Observable } from 'rxjs';\nimport { TableStore } from '../../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\n\n@Component({\n selector: 'tb-filter-displayer',\n templateUrl: './gen-filter-displayer.component.html',\n styleUrls: ['./gen-filter-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenFilterDisplayerComponent {\n\n constructor( public tableState: TableStore, public filterStore : WrapperFilterStore) {\n this.filterCols$ = tableState.metaDataArray$.pipe(\n map(md => Object.values( md ).filter(m => (m.fieldType !== FieldType.Hidden) && (!m.noFilter))),\n );\n }\n\n filterCols$: Observable<MetaData[]>;\n\n addFilter(metaData: MetaData) {\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\n }\n}\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n <button class=\"filter-labels\" *ngFor=\"let md of filterCols$ | async\" (click)=\"addFilter(md)\" mat-menu-item>\n {{md.displayName || (md.key | spaceCase)}}\n </button>\n</mat-menu>\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { FilterInfo, PartialFilter } from '../../classes/filter-info';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'tb-date-filter',\n templateUrl: './date-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class DateFilterComponent {\n FilterType = FilterType;\n @Input() info!: PartialFilter;\n @Input() CurrentFilterType!: FilterType;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n@Component({\n selector: 'lib-in-filter',\n templateUrl: './in-filter.component.html',\n styleUrls: ['./in-filter.component.css'],\n changeDetection:ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InFilterComponent,\n multi: true\n }],\n})\nexport class InFilterComponent implements ControlValueAccessor {\n FieldType = FieldType;\n @Input() type! : FieldType;\n value: any[] = [undefined];\n\n constructor(private ref: ChangeDetectorRef) {\n this.value = [undefined];\n }\n writeValue(obj: any[]): void {\n if(!obj?.length) obj = [undefined];\n this.value = obj;\n this.ref.markForCheck();\n }\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n throw new Error('Method not implemented.');\n }\n\n addInput(){\n this.value = [...this.value, undefined];\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n removeInput(index: number){\n this.value = [...this.value];\n this.value.splice(index,1);\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n onValueChange(i:number,value: number | string){\n this.value = [...this.value];\n this.value[i] = value;\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n}\n","<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class NumberFilterComponent {\n FilterType = FilterType; FieldType = FieldType;\n @Input() CurrentFilterType!: FilterType;\n @Input() info!:PartialFilter;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\n </mat-form-field>\n</ng-container>\n\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.NumberBetween\">\n <ng-container ngModelGroup=\"filterValue\" >\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n<div class=\"inline\" *ngIf=\"CurrentFilterType === FilterType.In\">\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' ></lib-in-filter>\n</div>\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { filterTypeMap, FilterInfo, UnmappedTypes, mappedFieldTypes, PartialFilter } from '../../classes/filter-info';\nimport { TableStore } from '../../classes/table-store';\nimport { FilterType } from '../../enums/filterTypes';\nimport { FieldType } from '../../interfaces/report-def';\n\n\ntype thingy = Omit<FieldType,UnmappedTypes>\n\n@Component({\n selector: 'tb-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterComponent<T extends mappedFieldTypes = any> {\n filterTypes = filterTypeMap;\n FilterType = FilterType;\n FieldType = FieldType;\n @Input() filter!: PartialFilter;;\n @Output() close = new EventEmitter();\n currentFilterType?: FilterType;\n constructor( public state: TableStore) { }\n\n ngOnInit() {\n this.currentFilterType = this.filter.filterType;\n }\n onEnter(filter: FilterInfo, event: any) {\n event.preventDefault();\n if (filter.filterValue != null && filter.filterType) {\n this.state.addFilter(filter);\n this.close.emit();\n }\n }\n}\n","<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n","\nimport { NgModule } from '@angular/core';\n\nimport { MatLegacyAutocompleteModule as MatAutocompleteModule } from '@angular/material/legacy-autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';\nimport { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card';\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';\nimport { MatLegacyListModule as MatListModule } from '@angular/material/legacy-list';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\nimport { MatLegacyPaginatorModule as MatPaginatorModule } from '@angular/material/legacy-paginator';\nimport { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';\nimport { MatLegacyRadioModule as MatRadioModule } from '@angular/material/legacy-radio';\nimport { MatLegacySelectModule as MatSelectModule } from '@angular/material/legacy-select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatLegacySlideToggleModule as MatSlideToggleModule } from '@angular/material/legacy-slide-toggle';\nimport { MatLegacySnackBarModule as MatSnackBarModule } from '@angular/material/legacy-snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatLegacyTableModule as MatTableModule } from '@angular/material/legacy-table';\nimport { MatLegacyTabsModule as MatTabsModule } from '@angular/material/legacy-tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\nimport { MatLegacyChipsModule as MatChipsModule } from '@angular/material/legacy-chips';\n\n\n@NgModule({\n imports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ],\n exports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ]\n\n})\nexport class MaterialModule { }\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { map } from 'rxjs/operators';\nimport { TableStore } from '../classes/table-store';\n\n@Directive({\n selector: '[multiSort]',\n exportAs: 'multiSort',\n inputs: ['disabled: matSortDisabled'],\n providers: [\n { provide: MatSort, useExisting: MultiSortDirective }\n ]\n})\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\n rules: Sort[] = [];\n\n constructor(private state: TableStore) {\n super();\n this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\n this.state.on(\n this.state.sorted$,\n rules => {\n this.rules = rules;\n\n if (this.active && rules.length === 0) {\n this.active = '';\n this.direction = '';\n this.sortChange.emit({ active: '', direction: '' });\n }\n\n if(rules.length > 0 && (this.active !== rules[0].active || this.direction !== rules[0].direction)) {\n this.active = rules[0].active;\n this.direction = rules[0].direction;\n this.sortChange.emit(rules[0]);\n }\n\n }\n );\n }\n\n}\n","import { Directive, Input, Optional, Predicate, SimpleChanges } from \"@angular/core\";\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, takeUntil, tap } from \"rxjs\";\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\nimport { v4 as uuid } from 'uuid';\nimport { FilterType } from \"../enums/filterTypes\";\nimport { MatLegacySlideToggle as MatSlideToggle } from \"@angular/material/legacy-slide-toggle\";\nimport { MatLegacyRadioButton as MatRadioButton } from \"@angular/material/legacy-radio\";\nimport { MatButtonToggle } from '@angular/material/button-toggle';\nimport { MatLegacyOption as MatOption } from \"@angular/material/legacy-core\";\nimport { MatLegacyCheckbox as MatCheckbox } from \"@angular/material/legacy-checkbox\";\nimport { FieldType } from \"../interfaces/report-def\";\nimport { NgControl } from \"@angular/forms\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\n\n\nconst inputs = [\n 'predicate: tbCustomFilter',\n 'filterId: filterId',\n];\n\n\n@Directive({\n selector: ' '\n})\nexport abstract class TableCustomFilterDirective<T = any> {\n abstract filter$ : Observable<CustomFilter>;\n filterId!: string;\n savable = false;\n used = false;\n abstract active: boolean;\n abstract reset(): void;\n}\n\n\n\n\n@Directive({\n selector: \"[tbFilter]\"\n}) export class TableFilterDirective extends ComponentStore<FilterInfo> {\n\n constructor(@Optional() protected model: NgControl, @Optional() wrapper: TableWrapperDirective) {\n super();\n if(wrapper) {\n wrapper.register(this);\n }\n if(model) {\n this.effect( () => {\n return model.valueChanges!.pipe(\n tap( val => {\n this.filterValue = val;\n this.update();\n })\n )\n })\n }\n }\n reset() {\n this.filterValue = undefined;\n }\n filter$ = this.state$;\n\n @Input() filterType!: FilterType;\n @Input() key!: string;\n @Input() fieldType!: FieldType;\n @Input() filterId!: string;\n @Input() active = true;\n @Input() filterValue: any = null;\n\n setFilterValue(value: any) {\n if(this.model) {\n setTimeout(() => {\n this.model.reset(value);\n }, 0);\n } else {\n this.filterValue = value;\n }\n }\n\n\n used = false;\n savable = false;\n ready = false;\n\n _userActive = true;\n ngOnChanges(changes: SimpleChanges ) {\n this.update();\n }\n\n ngOnInit() {\n if(!this.filterId) {\n this.filterId = uuid();\n } else {\n this.savable = true;\n }\n this.ready = true;\n this.update();\n }\n\n protected setFilter(filter: FilterInfo ) {\n this.setState(filter);\n }\n\n update() {\n if (this.ready) {\n this.setFilter(\n {\n filterId: this.filterId,\n key: this.key,\n filterType: this.filterType,\n fieldType: this.fieldType,\n filterValue: this.filterValue,\n active: this.active && this.filterValue !== undefined,\n _isExternalyManaged: true,\n }\n );\n\n }\n }\n}\n\n@Directive({\n selector: '[tbFilterStringContains]',\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\n inputs: [\n 'key:tbFilterStringContains',\n 'filterValue:filterValue',\n 'filterId: filterId',\n 'active: active',\n ]\n}) export class TableFilterStringContainsDirective extends TableFilterDirective {\n constructor(@Optional() model: NgControl, @Optional() wrapper: TableWrapperDirective) {\n super(model,wrapper);\n this.filterType = FilterType.StringContains;\n this.fieldType = FieldType.String;\n this.effect( () => {\n return model.valueChanges!.pipe(\n tap( val => {\n this.filterValue = val;\n this.update();\n })\n )\n })\n }\n\n override reset() {\n if(this.model) {\n this.model.reset();\n }\n super.reset();\n }\n\n override setFilter(filter: FilterInfo) {\n filter.active = filter.filterValue && this._userActive;\n super.setFilter(filter);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if(changes['active']) {\n this._userActive = changes['active'].currentValue;\n }\n super.ngOnChanges(changes);\n }\n}\n\n@Directive({\n selector: \"[tbCustomFilter]\",\n})\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective<T> {\n\n filter$! : Subject<CustomFilter>;\n filter!: CustomFilter;\n @Input() filterId! : string;\n\n _predicate!: Predicate<T>;\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\n this._predicate = val;\n this.update({predicate:val});\n }\n\n _active: boolean = false;\n ready = false;\n\n update(val: Partial<CustomFilter> ) {\n if(this.ready) {\n this.filter = {...this.filter,...val};\n this.filter$.next(this.filter);\n }\n }\n\n @Input() set active(val: boolean) {\n if(this._active !== val) {\n this._active = val;\n this.update({active:val});\n }\n }\n get active(): boolean {\n return this._active;\n }\n\n ngOnInit() {\n if(!this.filterId) {\n this.filterId = uuid();\n } else {\n this.savable = true;\n }\n\n this.filter = {\n filterType: FilterType.Custom,\n filterId: this.filterId,\n active: this._active,\n predicate: this._predicate,\n };\n this.ready = true;\n this.filter$ = new BehaviorSubject(this.filter);\n }\n}\n\n@Directive()\nexport abstract class TbSelectedFilterDirective<T = any> extends TableCustomFilterDirectiveBase<T> {\n\n\n protected constructor(private change: Observable<any>, private isActive: () => boolean, @Optional() wrapper: TableWrapperDirective) {\n super();\n if(wrapper) {\n wrapper.register(this);\n }\n }\n\n reset() {\n this.active = false;\n }\n\n destroySubject$ = new ReplaySubject<void>(1);\n ngOnDestroy() {\n this.destroySubject$.next();\n }\n\n ngOnInit(): void {\n this._active = this.isActive();\n super.ngOnInit();\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\n this.active = this.isActive();\n });\n }\n}\n\n// Checkbox\n@Directive({\n selector: 'mat-checkbox[tbCustomFilter]',\n inputs: [\n ...inputs\n ],\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }]\n})\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\n\n override set active(val: boolean) {\n this.matCheckbox.checked = val;\n super.active = val;\n }\n constructor(private matCheckbox: MatCheckbox, @Optional() wrapper: TableWrapperDirective) {\n super(matCheckbox.change, () => matCheckbox.checked, wrapper);\n }\n}\n\n\n@Directive({\n selector: 'mat-slide-toggle[tbCustomFilter]',\n inputs: [\n ...inputs\n ],\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }]\n})\nexport class MatSlideToggleTbFilterDirective<T = any> extends TbSelectedFilterDirective<T> {\n override set active(val: boolean) {\n this.matSlideToggle.checked = val;\n super.active = val;\n }\n constructor(private matSlideToggle: MatSlideToggle, @Optional() wrapper: TableWrapperDirective) {\n super(matSlideToggle.change, () => matSlideToggle.checked,wrapper);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n}\n\n// Radio button\n@Directive({\n selector: 'mat-radio-button[tbCustomFilter]',\n inputs: ['predicate: tbCustomFilter'],\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }]\n})\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {\n\n override set active(val: boolean) {\n this.matRadioButton.checked = val;\n super.active = val;\n }\n constructor(private matRadioButton: MatRadioButton, @Optional() wrapper: TableWrapperDirective) {\n super(matRadioButton.change, () => matRadioButton.checked, wrapper);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n}\n\n// Option (select)\n@Directive({\n selector: 'mat-option[tbCustomFilter]',\n inputs: [\n ...inputs\n ],\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }]\n})\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective {\n\n override set active(val: boolean) {\n if(val) {\n this.matOption.select();\n } else {\n this.matOption.deselect();\n }\n super.active = val;\n }\n constructor(private matOption: MatOption, @Optional() wrapper: TableWrapperDirective) {\n super( matOption.onSelectionChange.pipe(tap( d => {\n if(!matOption.value) {\n matOption.value = uuid();\n }\n }\n\n )), () => matOption.selected, wrapper);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n}\n\n// Button toggle\n@Directive({\n selector: 'mat-button-toggle[tbCustomFilter]',\n inputs: [\n ...inputs\n ],\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }]\n})\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {\n override set active(val: boolean) {\n this.matButtonToggle.checked = val;\n super.active = val;\n }\n constructor(private matButtonToggle: MatButtonToggle, @Optional() wrapper: TableWrapperDirective) {\n super(matButtonToggle.change, () => matButtonToggle.checked,wrapper);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n}\n","import { ContentChildren, Directive, QueryList } from \"@angular/core\";\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\n\n@Directive({\n selector: '[tbWrapper]'\n})\nexport class TableWrapperDirective {\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\n\n registerations : (TableCustomFilterDirective | TableFilterDirective) [] = [];\n\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\n this.registerations.push(filter);\n }\n}\n","import { Observable, combineLatest, of } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { combineArrays } from '../../rxjs/rxjs-operators';\nimport { createFilterFunc, CustomFilter, FilterInfo } from './filter-info';\n\nexport class DataFilter<T = any> {\n\n constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\n }\n\n filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\n return data.filter( r => filters.every( fltr => fltr(r)) );\n }\n\n filterData(data$: Observable<T[]>) {\n return combineLatest([data$, this.filters$]).pipe(\n map(([data, filters]) => this.filter(data, filters)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n appendFilters(filters$: Observable<(FilterInfo | CustomFilter )[]>) : DataFilter {\n return new DataFilter(combineArrays([\n this.filters$ ?? of([]),\n filters$.pipe(map(fltrs => fltrs\n // we only want to remove it if it was specifically set to false\n // as apposed to falsy\n .filter( f => f.active !== false )\n .map(filter => createFilterFunc(filter))))\n ]));\n }\n}\n","export function downloadData(data: string, filename: string, mimeType: string) {\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\n const downloadLink = document.createElement('a');\n downloadLink.download = filename;\n downloadLink.href = url;\n downloadLink.style.display = 'none';\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n URL.revokeObjectURL(url);\n}\n","import { DatePipe } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport { combineLatest} from 'rxjs';\nimport { orderMetaData, TableStore } from '../classes/table-store';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\nimport { downloadData } from '../functions/download-data';\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\nimport { TableState } from '../classes/TableState';\nimport { isPipe } from './transform-creator';\nimport { get } from 'lodash';\n\n@Injectable()\nexport class ExportToCsvService<T> {\n constructor(\n public state: TableStore,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private datePipe: DatePipe,\n ){}\n\n exportToCsv = (data: Observable<T[]>) => {\n const exportableFields$ = this.state.state$.pipe(\n map(mapExportableFields)\n );\n\n combineLatest([data,exportableFields$]).pipe(\n first(),\n map(([data,fields]) => this.csvData(data,fields)),\n ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\n }\n\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\n return res.join('\\n');\n }\n\n metaToField = (meta: MetaData<T>, row: T) => {\n let val: any = get( row,meta.key);\n if (val == null && !meta.transform) return val\n if(meta.transform && meta.fieldType !== FieldType.Expression){\n const transform = meta.transform as any;\n return isPipe(transform) ? transform.transform(val) : transform(val);\n }\n switch (meta.fieldType) {\n case FieldType.Date:\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\n val = this.transform(val, dateFormat);\n break;\n case FieldType.String:\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\n val = prepend + val;\n break;\n case FieldType.Array:\n const additional = meta.additional as ArrayAdditional;\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\n break;\n case FieldType.Expression:\n val = (meta.transform as any)(row);\n break;\n }\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\n val = val.replaceAll('\"', '\"\"');\n val = '\"' + val + '\"';\n }\n return val;\n }\n\n private transform(val: any, dateFormat: any) {\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\n return this.config.transformers[FieldType.Date]!(val);\n }\n return this.datePipe.transform(val, dateFormat);\n }\n}\n\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\n\n orderMetaData(state)\n .filter( meta => !keysToRemove.includes(meta.key));\n\n\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\n .filter(md => md.noExport )\n .map( md => md.key );\n\nexport const mapExportableFields = (state: TableState) => {\n const fieldsToRemove = nonExportableFields(state)\n .concat(state.hiddenKeys);\n return removeFromMetaData(state, fieldsToRemove);\n}\n","import { ArrayStyle } from '../interfaces/report-def';\n\nexport interface DefaultSettings {\n dateFormat?: string;\n}\n\nexport const ArrayDefaults = {\n limit : 3,\n arrayStyle : ArrayStyle.CommaDelimited\n}","import { createSelector } from '@ngrx/store';\nimport { GlobalStorageState, Profile } from './reducer';\n\nexport const selectGlobalStorageState = (state: {globalStorageState: GlobalStorageState}) => state.globalStorageState;\n\nexport const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys )\n\nexport const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);\n\nexport const selectLocalProfile = <T>(key:string) => createSelector(selectGlobalStorageState, state => state.localProfiles[key]);\n\nexport const selectLocalProfileState = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.states[profile.current ?? profile.default];\n }\n return null;\n});\n\nexport const selectLocalProfileCurrentKey = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.current ?? profile.default;\n }\n return 'default';\n});\n\nexport const selectLocalProfileKeys = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return Object.keys(profile.states).filter( key => key);\n }\n return null;\n});\n","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const setLocalProfile = createAction('[State Storage] Set Local Profile', props<{key: string, value: any, persist?: boolean}>());\r\n\r\nexport const setLocalProfilesState = createAction('[State Storage] Set Local Profiles Current', props<{key: string, current: string}>());\r\n\r\nexport const deleteLocalProfilesState = createAction('[State Storage] Delete Local Profiles Current', props<{key: string, stateKey: string}>());\r\n","import { get } from \"lodash\";\nimport { MetaData } from \"../interfaces/report-def\";\n\nexport function createLinkCreator<T>(metaData: MetaData<T>){\n const target = metaData.additional?.link?.target || metaData.additional?.target || '_blank';\n const useRouterLink = metaData.additional?.link?.useRouterLink || metaData.additional?.useRouterLink;\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\n const routerLinkOptions = useRouterLink ? {\n queryParams: (element) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\n map[key] = parseInterpolated(value, element);\n return map;\n }, {}) ?? null,\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\n }\n : undefined;\n\n\n\n if (hasRoute) {\n return ({\n link: (element: T) => parseInterpolated(metaData.additional!.link!.interpolatedRoute!, element),\n target,\n useRouterLink,\n routerLinkOptions,\n });\n } else {\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\n const base = metaData.additional!.link?.base || metaData.additional!.base;\n const getKey = key(metaData);\n return ({\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\n target,\n useRouterLink,\n routerLinkOptions,\n });\n }\n}\n\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ? \n (element:any) => get(element, (metaData.additional!.link!.urlKey as string)) :\n metaData.additional!.urlKey ?\n (element:any) => get(element, (metaData.additional!.urlKey as string)) :\n (element:any) => get(element, metaData.key);\n\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,key));","import { Injectable } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { notNull } from '../../../rxjs/rxjs-operators';\n\n@Injectable()\nexport class SortMenuComponentStore extends ComponentStore<ComponenStoreState> {\n constructor(private tableState: TableStore){\n super({notSorted:[],sorted:[]})\n }\n private set = this.updater((state,data:ComponenStoreState)=> ({...data}));\n\n setSorted = this.updater((state,sorted:SortWithName[])=>({...state,sorted}));\n\n setNotSorted = this.updater((state,notSorted:SortWithName[])=>({...state,notSorted}));\n sorted$ = this.select(state=>state.sorted);\n notSorted$ = this.select(state=>state.notSorted);\n setDirection = this.updater((state,sort:SortWithName)=>{\n const index = state.sorted.findIndex(s => s.active === sort.active);\n const sorted = [...state.sorted];\n sorted.splice(index,1,sort);\n return ({...state,sorted});\n })\n reset = () => {\n const sorted = this.tableState.sorted$.pipe(\n mergeMap(sort => this.tableState.metaData$.pipe(\n notNull(),\n map(\n meta => sort.map(s => {\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\n )))\n );\n const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\n metas => this.tableState.sorted$.pipe(\n map(s => metas.filter(meta=> !s.some(s=>s.active=== meta.key))\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\n )\n ));\n this.set(combineLatest([\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\n }\n}\n\nexport interface ComponenStoreState {\n sorted : SortWithName[];\n notSorted: SortWithName[];\n}\n\nexport interface SortWithName extends Sort{\n displayName : string;\n}\n\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { SortDirection } from '../../interfaces/report-def';\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\n\n@Component({\n selector: 'tb-sort-menu',\n templateUrl: './sort-menu.component.html',\n styleUrls: ['./sort-menu.component.scss'],\n providers:[SortMenuComponentStore]\n})\nexport class SortMenuComponent implements OnInit{\n\n sorted$:Observable<SortWithName[]>;\n notSorted$:Observable<SortWithName[]>;\n SortDirection = SortDirection;\n dirty$ = new BehaviorSubject(false);\n constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\n this.sorted$=this.store.sorted$.pipe(map(data=>[...data]));\n this.notSorted$=this.store.notSorted$.pipe(map(data=>[...data]));\n }\n\n reset(){\n this.dirty$.next(false);\n this.store.reset();\n }\n\n ngOnInit(){\n this.store.reset();\n }\n\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\n this.dirty$.next(true);\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.store.setSorted(event.container.data);\n } else {\n\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\n this.store.setSorted(event.container.data);\n this.store.setNotSorted(event.previousContainer.data);\n }\n }\n\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\n if (event.previousContainer === event.container) {\n return;\n } else {\n this.dirty$.next(true);\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\n\n this.store.setNotSorted(event.container.data);\n this.store.setSorted(event.previousContainer.data);\n }\n }\n\n apply = this.store.effect((obs:Observable<null>)=>\n obs.pipe(tap(()=>{\n this.dirty$.next(false);\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\n })));\n\n setDirection(sort:SortWithName){\n this.dirty$.next(true);\n this.store.setDirection(sort);\n }\n\n}\n\n\n","<ng-container *ngrxLet=\"dirty$ as dirty\">\n<ng-container *ngIf=\"sorted$ | async as sorted\">\n <ng-container *ngIf=\"notSorted$ | async as notSorted\">\n <!-- Menu Trigger -->\n <span matTooltip=\"Sort\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">swap_vert</mat-icon>\n </button>\n </span>\n\n <!-- Menu -->\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\n <div mat-menu-item class=\"menu-button\">\n <div class=\"close-button-wrapper\">\n <span matTooltip=\"Close\">\n <mat-icon>close</mat-icon>\n </span>\n <span *ngIf=\"dirty\" matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\n <mat-icon>undo</mat-icon>\n </span>\n </div>\n </div>\n\n <!-- Apply Button -->\n <div class=\"apply-button-wrapper\">\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\n stop-propagation [class.apply-border]=\"dirty\"\n [disabled]=\"!dirty\">\n Apply\n <ng-container *ngIf=\"dirty\">Unsaved Changes</ng-container>\n </button>\n </div>\n\n <!-- Default Sorting Text -->\n <div *ngIf=\"!sorted.length\" class=\"tip\" >\n Sorting List\n </div>\n\n <!-- Sorted Menu List -->\n <div class=\"list\"\n cdkDropList\n #sortedGroup=\"cdkDropList\"\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\n [cdkDropListData]=\"sorted\"\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\n\n <!-- Menu Item Wrapper -->\n <ng-container *ngFor=\"let sort of sorted;let i=index\">\n\n <!-- Menu Item Headers -->\n <span *ngIf=\"sorted.length > 1 && i === 0 \" class=\"description\" class=\"sort-header\">First By</span>\n <span *ngIf=\"sorted.length > 1 && i !== 0 \" class=\"description\" class=\"sort-header\">Then By</span>\n\n <!-- Menu Item -->\n <div mat-menu-item cdkDrag class=\"menu-item\">\n <div class=\"sort-item\">\n <span class=\"sorted-name\">\n {{sort.displayName || (sort.active | spaceCase)}}\n <span class=\"direction-text\">{{sort.direction}}</span>\n </span>\n\n <!-- Sort Direction Buttons -->\n <div class=\"up-down-buttons-wrapper\">\n <button class=\"up-down-button up-button\" stop-propagation\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n arrow_upward\n </mat-icon>\n </button>\n\n <button class=\"up-down-button\" stop-propagation\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n arrow_downward\n </mat-icon>\n </button>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n\n <!-- Default Not Sorted Text -->\n <div *ngIf=\"!notSorted.length\" class=\"tip\" >\n Not Sorted List\n </div>\n <!-- Not Sorted Menu List -->\n <div class=\"list\"\n cdkDropList\n #notSortedGroup=\"cdkDropList\"\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\n [cdkDropListData]=\"notSorted\"\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\n <div mat-menu-item *ngFor=\"let sort of notSorted\" class=\"menu-item\" cdkDrag>\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\n </div>\n </div>\n </mat-menu>\n </ng-container>\n</ng-container>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({name: 'keyDisplay'})\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n constructor( public tableState: TableStore) {\r\n }\r\n transform(key: string): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( metaData => metaData.displayName || spaceCase(key))\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableStore } from '../classes/table-store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FieldType } from '../interfaces/report-def';\nimport { DatePipe } from '@angular/common';\nimport { FilterType } from '../enums/filterTypes';\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\n\n\n@Pipe({name: 'formatFilterValue'})\nexport class FormatFilterValuePipe implements PipeTransform {\n constructor( public tableState: TableStore , private datePipe: DatePipe) {\n }\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\n return this.tableState.getMetaData$(key).pipe(\n map( md => {\n if(filterType === FilterType.IsNull) {\n return '';\n }\n if(value && (filterType === FilterType.In )){\n if(md.fieldType === FieldType.Enum) {\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\n }\n return value.join(', ') ?? value;\n }\n if(filterType === FilterType.NumberBetween){\n if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value.Start, 'MM/dd/yy')+ ' - ' + this.datePipe.transform(value.End, 'MM/dd/yy');\n }else{\n value = value.Start + ' - ' + value.End;\n }\n } else if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value, 'MM/dd/yy');\n }\n return value\n })\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterType } from '../enums/filterTypes';\n\n@Pipe({name: 'formatFilterType'})\nexport class FormatFilterTypePipe implements PipeTransform {\n transform(filterType: FilterType, value: any){\n if(filterType === FilterType.IsNull){\n return value ? filterType : 'Is Not Blank'\n }\n return filterType;\n }\n}","import { Component } from '@angular/core';\nimport { TableStore } from '../../../classes/table-store';\nimport { CustomFilter, FilterInfo, isFilterInfo } from '../../../classes/filter-info';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-filter-list',\n templateUrl: './filter-list.component.html',\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css']\n})\nexport class FilterChipsComponent {\n\n constructor( public tableState: TableStore, private filterStore : WrapperFilterStore) {\n }\n\n filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(\n map( filters => Object.values(filters)\n .filter(isFilterInfo)\n .filter( f => !f._isExternalyManaged)\n )\n );\n\n deleteByIndex(index: number) {\n this.filterStore.deleteByIndex(index);\n }\n\n addFilter(filter:FilterInfo<any>){\n this.filterStore.addFilter(filter);\n }\n\n clearAll() {\n this.filterStore.clearAll();\n }\n\n currentFilters$ = this.filterStore.currentFilters$;\n}\n","<div style=\"display: flex; flex-direction: row;justify-content: flex-end;\" *ngrxLet=\"currentFilters$ as currentFilters\" >\n\n <button class=\"cancel-button\" *ngIf=\"currentFilters.length\" mat-icon-button (click)=\"clearAll()\"\n matTooltip=\"Close all Filters\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n\n\n <div *ngIf=\"currentFilters.length\" class=\"float\">\n <div class=\"filter\" *ngFor=\"let filter of (currentFilters$ | async); index as i;\">\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex(i)\" > </tb-filter>\n </div>\n </div>\n\n <mat-chip-list *ngrxLet=\"filters$ as filters\">\n <mat-chip *ngFor=\"let filter of filters\" (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n <mat-chip *ngIf=\"filters.length >= 2\" (removed)=\"tableState.clearFilters()\">\n Clear All\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </mat-chip-list>\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { TableStore } from '../../classes/table-store';\n\n@Component({\n selector: 'group-by-list',\n templateUrl: './group-by-list.component.html',\n styleUrls: ['./group-by-list.component.css']\n})\nexport class GroupByListComponent implements OnInit {\n\n constructor(public tableStore: TableStore) { }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-chip-list *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\n {{groupByKey}}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </ng-container>\n</mat-chip-list>\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n ContentChildren,\n QueryList,\n ChangeDetectionStrategy,\n Inject,\n Predicate,\n Optional,\n TemplateRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, from, ReplaySubject, Subscription } from 'rxjs';\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\nimport { first, last, map, switchMap, tap, withLatestFrom, mergeAll, scan } from 'rxjs/operators';\nimport { TableBuilder } from '../../classes/table-builder';\nimport { MatLegacyRowDef as MatRowDef } from '@angular/material/legacy-table';\nimport { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\nimport { stateIs, TableStore } from '../../classes/table-store';\nimport { DataFilter } from '../../classes/data-filter';\nimport { combineArrays, mapArray, notNull } from '../../../rxjs/rxjs-operators';\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\nimport * as selectors from '../../ngrx/selectors';\nimport { select, Store } from '@ngrx/store';\nimport { deleteLocalProfilesState, setLocalProfile, setLocalProfilesState } from '../../ngrx/actions';\nimport { Group, InitializationState, PersistedTableState } from '../../classes/TableState';\nimport { sortData } from '../../functions/sort-data-function';\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\nimport { cloneDeep, groupBy } from 'lodash';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { defaultShareReplay } from '../../../rxjs';\nimport { flattenDeep } from 'lodash';\nimport { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\nimport { createLinkCreator } from '../../services/link-creator.service';\n\n@Component({\n selector: 'tb-table-container',\n templateUrl: './table-container.html',\n styleUrls: ['./table-container.css','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TableStore,ExportToCsvService,WrapperFilterStore]\n}) export class TableContainerComponent<T = any> {\n\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\n\n @Input() tableId!: string;\n @Input() tableBuilder!: TableBuilder;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() isSticky = true;\n @Input() set pageSize(value: number) {\n this.state.setPageSize(value);\n }\n @Input() inputFilters?: Observable<Array<Predicate<T>>>;\n @Input() groupHeaderTemplate!: TemplateRef<any>;\n @Output() selection$ = new EventEmitter();\n dataSubject = new ReplaySubject<Observable<T[]>>(1);\n @Output() data = this.dataSubject.pipe(\n switchMap( d => d),\n defaultShareReplay(),\n );\n\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\n\n @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\n @Output() OnStateReset = new EventEmitter();\n @Output() OnSaveState = new EventEmitter();\n @Output() state$ : Observable<PersistedTableState>;\n\n myColumns$!: Observable<ColumnInfo[]>;\n\n stateKeys$?: Observable<string[] | null>;\n currentStateKey$?: Observable<string>;\n\n disableSort!: boolean;\n\n constructor(\n public state: TableStore,\n public exportToCsvService: ExportToCsvService<T>,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private store: Store<any>,\n @Optional() private wrapper: TableWrapperDirective,\n ) {\n this.state.on( this.state.getSavableState().pipe(last()), finalState => {\n if(this.tableId) {\n this.store.dispatch(setLocalProfile({key:this.tableId,value: finalState}));\n }\n });\n this.state$ = this.state.getSavableState().pipe(\n map(state => cloneDeep(state)),\n defaultShareReplay(),\n );\n }\n\n resetState() {\n this.customFilters.forEach( cf => cf.reset());\n this.filters.forEach( cf => cf.reset() );\n this.state.resetState();\n this.OnStateReset.next(null)\n }\n\n initializeState() {\n this.state.setTableSettings(this.tableBuilder.settings);\n this.state.runOnceWhen(stateIs(InitializationState.MetaDataLoaded), state => {\n if(this.tableId) {\n const persistedState$ = this.store.pipe(\n select(selectors.selectLocalProfileState<any>(this.tableId) ),\n first(),\n tap( persistedState => {\n if(!persistedState) {\n this.state.setIntializationState(InitializationState.LoadedFromStore);\n }\n }),\n notNull(),\n );\n this.state.updateStateFromPersistedState(persistedState$);\n\n } else {\n this.state.setIntializationState(InitializationState.LoadedFromStore);\n }\n });\n }\n customFilters$ = new BehaviorSubject<Predicate<any>[]>([]);\n initializeData() {\n\n\n var allFilters = this.inputFilters ? combineArrays([\n this.customFilters$,\n this.inputFilters\n ]) : this.customFilters$;\n\n const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\n\n const data = new DataFilter(allFilters)\n .appendFilters(filters$)\n .filterData(this.tableBuilder.getData$()).pipe(\n switchMap(data => this.state.groupByKeys$.pipe(\n map(groupBy => this.getData(data, groupBy)),\n ).pipe(\n switchMap(data => this.state.groups$.pipe(\n map(groups => this.setDisplay(data, groups))\n ))\n ))\n );\n\n this.dataSubject.next(data);\n }\n\n ngOnInit() {\n this.initializeState();\n this.initializeData();\n\n if(this.tableId) {\n this.stateKeys$ = this.store.select(selectors.selectLocalProfileKeys(this.tableId));\n this.currentStateKey$ = this.store.select(selectors.selectLocalProfileCurrentKey(this.tableId));\n }\n }\n\n exportToCsv(): void {\n const sorted = this.data.pipe(\n withLatestFrom(this.state.sorted$),\n map(([data, sorted]) => sortData(data, sorted))\n );\n this.exportToCsvService.exportToCsv(sorted);\n }\n\n saveState() {\n this.state.getSavableState().pipe(\n first()\n ).subscribe( tableState => {\n this.OnSaveState.next(null);\n this.store.dispatch(setLocalProfile({ key: this.tableId, value:tableState, persist: true} ));\n });\n }\n\n setProfileState(val: string) {\n this.store.dispatch(setLocalProfilesState({key:this.tableId, current: val}));\n }\n\n deleteProfileState(stateKey: string) {\n this.store.dispatch(deleteLocalProfilesState({key:this.tableId, stateKey}));\n }\n\n\n ngAfterContentInit() {\n this.InitializeColumns();\n\n this.state.runOnceWhen(stateIs(InitializationState.LoadedFromStore), state => {\n\n var allFilters = [...this.filters, ...this.customFilters];\n if(this.wrapper) {\n allFilters = [...allFilters, ...this.wrapper.customFilters, ...this.wrapper.filters, ...this.wrapper.registerations];\n }\n\n var customFilters: (TableCustomFilterDirective|TableFilterDirective )[] = [];\n\n allFilters.filter( f => !f.used).forEach( f => {\n f.used = true;\n if(f.savable) {\n var filter = state.filters[f.filterId];\n if(isFilterInfo(filter)) {\n const filterDirective: TableFilterDirective = f as TableFilterDirective;\n filterDirective.fieldType = filter.fieldType;\n filterDirective.filterType = filter.filterType;\n filterDirective.setFilterValue(filter.filterValue);\n filterDirective.key = filter.key;\n filterDirective.update();\n }\n if(isCustomFilter(filter)) {\n f.active = filter.active ?? false;\n }\n this.state.addFilter(f.filter$);\n } else {\n customFilters.push(f);\n }\n });\n\n const filters$ = from( customFilters.map( cf => cf.filter$ )).pipe(\n mergeAll(),\n scan( (a,b)=> {\n if(b.active) {\n a[b.filterId] = isCustomFilter(b) ? b.predicate : createFilterFunc(b);\n } else {\n delete a[b.filterId] ;\n }\n return a;\n }, {} as Dictionary<Predicate<any>>),\n map( f => Object.values(f))\n );\n this.state.on(filters$, (f) => {\n this.customFilters$.next(f);\n });\n this.state.updateState({initializationState: InitializationState.Ready});\n });\n\n }\n\n InitializeColumns() {\n const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\n this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\n map((mds) => {\n mds = mds.map(this.mapMetaDatas);\n return [\n ...mds,\n ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\n ]\n })\n ));\n this.state.setLinkMaps(this.tableBuilder.metaData$!.pipe(\n map((mds) => {\n return mds.reduce((acc, md) => {\n if(md.fieldType === FieldType.Link){ acc[md.key]= createLinkCreator(md)}\n return acc;\n },{})\n })\n ))\n\n this.myColumns$ = this.state.metaDataArray$.pipe(\n mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\n );\n }\n mapMetaDatas = (meta : MetaData<T>) => {\n if(meta.fieldType === FieldType.Array){\n const additional = {...meta.additional} as ArrayAdditional;\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\n return {...meta,additional}\n }\n return meta;\n }\n\n collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\n\n getData(data: any[], groupByKeys: string[]): any[] {\n if (!groupByKeys.length) {\n this.disableSort = false;\n return data;\n }\n this.disableSort = true;\n return this.tbGroupBy(data, groupByKeys);\n }\n\n tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\n let res = {};\n res = groupBy(data, groupByKeys[0]);\n const remainingGroupByKeys = groupByKeys.slice(1);\n if (remainingGroupByKeys.length) {\n Object.keys(res).forEach(key => res[key] = this.tbGroupBy(res[key], remainingGroupByKeys, key))\n }\n return flattenDeep(Object.keys(res).map(groupName => {\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\n return [\n {\n isGroupHeader: true,\n groupHeaderName: `${groupName} (${res[groupName]?.filter(row => !row.isGroupHeader)?.length})`,\n data: res[groupName],\n groupName: uniqName,\n padding: 0\n },\n (res[groupName] as any[])?.map(d => ({ ...d, parentGroupName: d.parentGroupName || uniqName }))\n ];\n })).map(this.addIndentation);\n }\n\n addIndentation = (d: any) => {\n if (d.isGroupHeader) {\n if (d.padding) {\n d.padding += 20;\n } else {\n d.padding = 1;\n }\n }\n return d;\n }\n\n setDisplay = (data: any[], groups: Group[]): any[] => data\n .map(d => ({\n ...d,\n shouldDisplay: !d.parentGroupName || this.shouldDisplay(groups.find(g => g.groupName == d.parentGroupName), groups),\n isExpanded: groups.find(g => g.groupName == d.groupName)?.isExpanded\n }))\n .filter(d => d.shouldDisplay);\n\n\n shouldDisplay = (currentGroup?: Group, groups?: Group[]): boolean => {\n if (!currentGroup?.isExpanded) {\n return false;\n }\n\n const parentGroup = groups?.find(g => g.groupName == currentGroup.parentGroupName);\n\n if (parentGroup) {\n return this.shouldDisplay(parentGroup, groups);\n }\n\n return true;\n }\n}\n","<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n <group-by-list></group-by-list>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </ng-container>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\">\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n","import { createReducer, Action, on } from '@ngrx/store';\r\nimport * as tableActions from './actions';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\n\r\nexport interface Profile<T = any> {\r\n default: string;\r\n current: string;\r\n states: Dictionary<T>;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n globalProfileKeys : string [];\r\n currentGlobalProfile: string;\r\n globalProfiles: Dictionary<Profile>;\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n globalProfileKeys: ['Default'],\r\n currentGlobalProfile: 'Default',\r\n globalProfiles: {},\r\n localProfiles: {}\r\n}\r\n\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState {\r\n const storage = localStorage.getItem('global-state-storage');\r\n if(storage) {\r\n return {...defaultStorageState, ...JSON.parse(storage)};\r\n }\r\n return defaultStorageState;\r\n}\r\n\r\nconst reducer = createReducer(\r\n loadGlobalStorageState(),\r\n on(tableActions.setLocalProfile, (state,{key,value})=> {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {\r\n default: value\r\n }};\r\n } else {\r\n profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : value} };\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} }\r\n }),\r\n on(tableActions.setLocalProfilesState, (state, {key,current}) => {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: current, current , states : {[current]: null }};\r\n } else {\r\n const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];\r\n profile = {...profile, current, states: {...profile.states, [current] : state }};\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile}};\r\n }),\r\n on(tableActions.deleteLocalProfilesState, (state, {key,stateKey}) => {\r\n let profile = state.localProfiles[key];\r\n if(profile) {\r\n const current = profile.current === stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[stateKey];\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n })\r\n);\r\n\r\nexport function storageStateReducer(state: GlobalStorageState | undefined, action: Action) {\r\n return reducer(state, action);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\r\nimport { defaultStorageState, GlobalStorageState} from './reducer';\r\nimport { tap, filter, mergeMap, first, map } from 'rxjs/operators';\r\nimport * as tableActions from './actions';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { selectLocalProfile } from './selectors';\r\n\r\n\r\n@Injectable()\r\nexport class SaveTableEffects {\r\n\r\n saveLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.setLocalProfile),\r\n filter( action => !!action.persist),\r\n concatLatestFrom( (action) => this.store.pipe(\r\n select(selectLocalProfile(action.key))\r\n )),\r\n tap( ([action,profile]) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {default: action.value}};\r\n globalSavedState.localProfiles[action.key] = profile;\r\n } {\r\n if(!globalSavedState.localProfiles[action.key]) {\r\n globalSavedState.localProfiles[action.key] = {...profile,states: {[profile.current ?? profile.default]: action.value}};\r\n } else {\r\n globalSavedState.localProfiles[action.key].states[profile.current ?? profile.default] = action.value;\r\n }\r\n\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }),\r\n ), { dispatch: false }\r\n );\r\n\r\n deleteLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.deleteLocalProfilesState),\r\n tap( (a) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[a.key]) {\r\n return;\r\n } else {\r\n delete globalSavedState.localProfiles[a.key].states[a.stateKey];\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }),\r\n ), { dispatch: false }\r\n );\r\n\r\n constructor( private actions$: Actions, private store: Store<any> ) {}\r\n}\r\n","\nimport { NgModule } from '@angular/core';\nimport { GenericTableComponent } from './components/generic-table/generic-table.component';\nimport { CustomCellDirective } from './directives/custom-cell-directive';\nimport { GenColDisplayerComponent } from './components/gen-col-displayer/gen-col-displayer.component';\nimport { GenFilterDisplayerComponent } from './components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\nimport { MaterialModule } from './material.module';\nimport { DateFilterComponent } from './components/date-filter/date-filter.component';\nimport { TableContainerComponent } from './components/table-container/table-container';\nimport { ColumnTotalPipe } from './pipes/column-total.pipe';\nimport { MultiSortDirective } from './directives/multi-sort.directive';\nimport { ColumnBuilderComponent } from './components/column-builder/column-builder.component';\nimport { ModuleWithProviders } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\nimport { NumberFilterComponent } from './components/number-filter/number-filter.component';\nimport { StoreModule } from '@ngrx/store';\nimport { storageStateReducer } from './ngrx/reducer';\nimport { HeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SaveTableEffects } from './ngrx/effects';\nimport { KeyDisplayPipe } from './pipes/key-display';\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\nimport { RouterModule } from '@angular/router';\nimport { ArrayColumnComponent } from './components/array-column.component';\nimport { LinkColumnComponent } from './components/link-column.component';\nimport { InFilterComponent } from './components/in-filter/in-filter.component';\nimport { FormatFilterValuePipe } from './pipes/format-filter-value.pipe';\nimport { FormatFilterTypePipe } from './pipes/format-filter-type.pipe';\nimport { ResizeColumnDirective } from './directives/resize-column.directive';\nimport {LetModule} from '@ngrx/component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { InitializationComponent } from './components/initialization-component/initialization-component';\nimport { InListFilterComponent } from './components/filter/in-list/in-list-filter.component';\nimport { SortMenuComponent } from './components/sort-menu/sort-menu.component';\nimport { FilterChipsComponent } from './components/table-container-filter/filter-list/filter-list.component';\nimport { PaginatorComponent } from './components/generic-table/paginator.component';\nimport { UtilitiesModule } from '../utilities';\nimport {\n MatButtonToggleFilterDirective,\n MatCheckboxTbFilterDirective,\n MatOptionTbFilterDirective,\n MatRadioButtonTbFilterDirective,\n MatSlideToggleTbFilterDirective,\n TableFilterDirective,\n TableFilterStringContainsDirective,\n} from './directives';\nimport { TableWrapperDirective } from './directives/table-wrapper.directive';\nimport { GroupByListComponent } from './components/group-by-list/group-by-list.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialModule,\n StoreModule.forFeature('globalStorageState', storageStateReducer),\n EffectsModule.forFeature([SaveTableEffects]),\n FormsModule,\n RouterModule,\n LetModule,\n DragDropModule,\n UtilitiesModule,\n ],\n exports: [\n GenericTableComponent,\n PaginatorComponent,\n TableContainerComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n FilterComponent,\n MultiSortDirective,\n ResizeColumnDirective,\n MatSlideToggleTbFilterDirective,\n MatRadioButtonTbFilterDirective,\n MatOptionTbFilterDirective,\n MatCheckboxTbFilterDirective,\n MatButtonToggleFilterDirective,\n TableFilterDirective,\n TableFilterStringContainsDirective,\n TableWrapperDirective,\n GroupByListComponent,\n ],\n declarations: [\n ColumnTotalPipe,\n TableContainerComponent,\n GenericTableComponent,\n PaginatorComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n DateFilterComponent,\n FilterComponent,\n MultiSortDirective,\n NumberFilterComponent,\n ColumnBuilderComponent,\n ArrayColumnComponent,\n LinkColumnComponent,\n HeaderMenuComponent,\n KeyDisplayPipe,\n FormatFilterValuePipe,\n FormatFilterTypePipe,\n ResizeColumnDirective,\n InFilterComponent,\n InitializationComponent,\n InListFilterComponent,\n SortMenuComponent,\n FilterChipsComponent,\n MatSlideToggleTbFilterDirective,\n MatRadioButtonTbFilterDirective,\n MatOptionTbFilterDirective,\n MatCheckboxTbFilterDirective,\n MatButtonToggleFilterDirective,\n TableFilterDirective,\n TableFilterStringContainsDirective,\n TableWrapperDirective,\n GroupByListComponent,\n ],\n providers : [\n SpaceCasePipe,\n DatePipe,\n CurrencyPipe,\n PhoneNumberPipe\n ]\n})\nexport class TableBuilderModule {\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\n return {\n ngModule: TableBuilderModule,\n providers: [\n MultiSortDirective,\n { provide : TableBuilderConfigToken , useValue: config}\n ]\n };\n }\n}\n","import { isObservable, Observable, of } from 'rxjs';\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\nimport { first, map, switchMap } from 'rxjs/operators';\nimport { mapArray } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\nimport { defaultShareReplay } from '../../rxjs';\nimport { get, set } from 'lodash';\n\nexport class TableBuilder<T = any> {\n\n metaData$: Observable<MetaData<T>[]>;\n constructor(private data$: Observable<T[]>, metaData$?: Observable<MetaData<T,any>[]>, settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\n this.data$ = this.data$.pipe(defaultShareReplay());\n this.metaData$ = metaData$ ?\n metaData$.pipe(defaultShareReplay()) :\n data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\n const s = isObservable(settings) ? settings : of(settings);\n this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\n }\n settings : Observable<GeneralTableSettings>;\n getData$(): Observable<any[]> {\n return this.metaData$.pipe(\n switchMap( metaData => this.data$.pipe(\n mapArray( data => this.cleanRecord(data, metaData ) )\n ))\n );\n }\n\n createMetaData(obj: any): MetaData [] {\n return Object.keys(obj ?? {})\n .map( key => ({\n key,\n fieldType: FieldType.Unknown,\n order: -1\n }));\n }\n\n cleanVal(val: any, metaData: MetaData): any {\n switch ( metaData.fieldType ) {\n case FieldType.Currency:\n case FieldType.Number:\n const num = Number( val );\n return isNaN(num) || val == null ? null : num;\n case FieldType.Date:\n const date = Date.parse(val);\n if(isNaN(date)){\n return null;\n }\n const d = new Date(date);\n d.setHours(0,0,0,0);\n return d;\n }\n return val;\n }\n\n cleanRecord( record: T, metadata: MetaData []): T {\n const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\n const val = this.cleanVal(get(record, curr.key), curr);\n if(val !== undefined) {\n set(prev as {}, curr.key, val);\n }\n return prev;\n }, {...record} as T )\n return {...record, ...cleaned};\n }\n}\n\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\n reportDef$ = reportDef$.pipe(defaultShareReplay());\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\n};\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\nimport { get } from 'lodash';\n\n// State\nexport class AppStatusState {\n readonly ActionStatusBar!: ActionStatus[];\n}\n\nexport interface StatusState {\n ids: string[];\n entities: {[id: string]: ActionStatus};\n}\n\nexport class ActionStatus {\n id!: string;\n displayName?: string;\n status!: serverStatusTypes;\n responsePayload?: any;\n}\n\nconst intitalState: StatusState = {\n ids: [],\n entities: {}\n};\n\nexport enum serverStatusTypes {\n notStarted = 0,\n inProgress = 1,\n success = 2,\n error = 3\n}\n\n// Entity and Selectors\nexport const statusAdapter = createEntityAdapter<ActionStatus>(); // { selectId: a => a.id }\nexport interface State extends EntityState<ActionStatus> {}\nexport const initialState: StatusState = statusAdapter.getInitialState(intitalState);\n\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal\n} = statusAdapter.getSelectors(getStatusState);\n\nexport const selectEntity = (id: string) => createSelector(\n selectEntities,\n (entities: any) => entities[id]\n);\n\n// Reducers\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\n\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' );\n\n if ( actionStatus ) {\n if ( state.ids.find(id => id === actionStatus.id) ) {\n const modifiedObj = {...state.entities[actionStatus.id] };\n modifiedObj.status = actionStatus.status;\n modifiedObj.responsePayload = actionStatus.responsePayload;\n return statusAdapter.upsertOne( modifiedObj, state);\n } else {\n return statusAdapter.addOne(actionStatus , state);\n }\n\n }\n return state;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { actionStatusReducer } from '../ngrx';\nimport { StoreModule } from '@ngrx/store';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\n ]\n})\nexport class NgrxExtModule { }\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\nimport { delayOn } from '../../rxjs';\n\n@Component({\n selector: 'lib-action-state-spinner',\n templateUrl: './action-state-spinner.component.html',\n styleUrls: ['./action-state-spinner.component.css']\n})\nexport class ActionStateSpinnerComponent implements OnInit {\n\n @Input() status$!: Observable<ActionStatus>;\n serverActionStatus$!: Observable<ActionStatus>;\n serverStatusTypes = serverStatusTypes;\n\n ngOnInit() {\n this.serverActionStatus$ = this.status$.pipe(\n delayOn( a => a.status === serverStatusTypes.inProgress , 500)\n );\n }\n}\n","<div id=\"blocker\" *ngIf=\"(serverActionStatus$ | async)?.status === serverStatusTypes.inProgress\">\n <mat-spinner class=\"spinner\" [diameter]=\"200\"></mat-spinner>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\nimport { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';\n\n\n@NgModule({\n declarations: [\n ActionStateSpinnerComponent,\n ],\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n ],\n exports: [\n ActionStateSpinnerComponent,\n ]\n})\nexport class ActionStateUiModule { }\n","/*\n * Public API Surface of action-state\n */\n\nexport * from './ngrx';\nexport * from './ngrx-ext/ngrx-ext.module';\nexport * from './action-state-ui/action-state-ui.module';\nexport * from './action-state-spinner/action-state-spinner.component';\n","import { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\nimport { v4 as uuid } from 'uuid';\n\nclass AppStoreCache {\n cache: {\n actionableSelectorId$: string,\n [key: string]: any;\n }[] = [];\n isInCache = (props: any, actionableSelectorId: string): boolean => {\n if(typeof props != 'object') props = { props };\n const valueToCache = { ...props, actionableSelectorId$: actionableSelectorId };\n if(this.cache.some(item => shallowEquals(item, valueToCache))) {\n return true;\n }\n this.cache.push(valueToCache);\n return false;\n }\n}\n\nlet _store: Store<any>;\nlet _cache = new AppStoreCache();\n\nconst setStore = (store: Store) => {\n if(store instanceof Store) _store = store;\n};\nexport function setUpStoreFactory(store: Store){\n return () => new Promise((resolve, reject) => {\n setStore(store);\n resolve(null);\n })\n}\n\n/**\n * Creates a selector that can dispatch an action if conditions are met.\n * Note: The props of the selector factory must include the props of the action.\n * @param selectorFactory A method that returns selector.\n * @param action The action that will be dispatched when conditions are met.\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\n */\nexport const createActionableSelector = <State, Result, Props = any>(\n selectorFactory: (props?: Props) => MemoizedSelector<State, Result>,\n action: ActionReturner<Props | undefined>,\n dispatchIf: (data: Result) => boolean = defaultFilter,\n): (props?: Props) => ActionableMemoizedSelector<State, Result> => {\n const id = uuid();\n const slctr = (props?: Props) => createSelector(\n selectorFactory(props),\n (selected: Result) => {\n if(dispatchIf(selected) && !_cache.isInCache(props, id)){\n //Adding the null check for testing purposes. Otherwise it should never be null.\n _store.dispatch(action(props));\n }\n return selected;\n }\n ) as ActionableMemoizedSelector<State, Result>;\n return slctr;\n}\n\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\n\nexport type ActionReturner<Props> = (props: Props) => Action;\n\nexport function defaultFilter(data: any) {\n return data == null || data == undefined;\n}\n\n\n\n\n/**\n * Returns a shallow clone without prop. Will not error if prop does not exist.\n * @param prop name of property to be removed.\n * @returns a shallow clone without prop\n */\n const deleteProp = <T extends {}, Prop extends string>(t: T, prop: keyof T & Prop): Omit<T, Prop> => {\n const copy = { ...t };\n delete copy[prop];\n return copy;\n}\n\nconst shallowEquals = (first: object, second: object): boolean => {\n const firstKeys = Object.keys(first);\n const secondKeys = Object.keys(second);\n if(firstKeys.length !== secondKeys.length) {\n return false;\n }\n for(let index = 0; index < firstKeys.length; index++) {\n const currentKey = firstKeys[index];\n if(first[currentKey] !== second[currentKey]){\n return false;\n }\n }\n return true;\n}\n","/*\n * Public API Surface of http-request-state\n */\n\nexport * from './http-request-state/directives';\nexport * from './http-request-state/rxjs';\nexport * from './http-request-state';\n\n\nexport * from './table-builder/table-builder.module';\n\nexport * from './table-builder/interfaces/report-def';\n\nexport * from './table-builder/classes/MatTableObservableDataSource';\n\nexport * from './table-builder/classes/table-builder';\n\nexport * from './table-builder/classes/table-builder-general-settings';\n\nexport * from './table-builder/components';\n\nexport * from './table-builder/directives';\n\nexport {FilterType} from './table-builder/enums/filterTypes';\n\n\nexport * from './rxjs'\n\nexport * from './utilities'\n\nexport * from './action-state';\n\nexport * from './ngrx';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","i2.DialogService","switchMap","MatSlideToggle","merge","uuid","i1","i1.TableStore","i4","i5.FunctionPipe","i2.ArrayColumnComponent","i3.LinkColumnComponent","i4.FunctionPipe","i3","i4.StopPropagationDirective","i5.SpaceCasePipe","MatMenuTrigger","i5","i6","i7","i8","i9","i10","i11","i12.StopPropagationDirective","i13.InListFilterComponent","i1.TransformCreator","i2","i3.TableStore","i4.TableTemplateService","MatColumnDef","i10.StylerDirective","i11.ConditionalClassesDirective","i12.HeaderMenuComponent","i13.ResizeColumnDirective","i14.SpaceCasePipe","i15.ColumnTotalPipe","MatTableDataSource","MatPaginator","delay","MatTable","i2.TableStore","i11.PaginatorComponent","i8.StopPropagationDirective","i9.SpaceCasePipe","i2.WrapperFilterStore","i3.AutoFocusDirective","i5.InFilterComponent","i12","i13.DateFilterComponent","i14.NumberFilterComponent","i15.InFilterComponent","i16.InListFilterComponent","i17.SpaceCasePipe","MatSlideToggleModule","MatTableModule","MatSelectModule","MatDialogModule","MatRadioModule","MatButtonModule","MatTooltipModule","MatSnackBarModule","MatProgressSpinnerModule","MatListModule","MatCardModule","MatTabsModule","MatInputModule","MatCheckboxModule","MatMenuModule","MatAutocompleteModule","MatPaginatorModule","MatChipsModule","tap","i2.TableWrapperDirective","takeUntil","first","i2.SortMenuComponentStore","i10.StopPropagationDirective","i11.SpaceCasePipe","i9.FilterComponent","i10.KeyDisplayPipe","i11.FormatFilterValuePipe","i12.FormatFilterTypePipe","selectors.selectLocalProfileState","selectors.selectLocalProfileKeys","selectors.selectLocalProfileCurrentKey","scan","i4.TableWrapperDirective","MatRowDef","i13.StopPropagationDirective","i14.ClickEmitterDirective","i15.DialogDirective","i16.GenericTableComponent","i17.GenColDisplayerComponent","i18.GenFilterDisplayerComponent","i19.MultiSortDirective","i20.SortMenuComponent","i21.FilterChipsComponent","i22.GroupByListComponent","tableActions.setLocalProfile","tableActions.setLocalProfilesState","tableActions.deleteLocalProfilesState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACY,IAAA,kBAMT;AANH,CAAA,UAAY,iBAAiB,EAAA;IACzB,iBAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;IACV,iBAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;IACV,iBAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;IACP,iBAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,iBAAA,CAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACX,CAAC,EANS,iBAAiB,KAAjB,iBAAiB,GAM1B,EAAA,CAAA,CAAA,CAAA;AAgCS,IAAA,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;IAC7B,mBAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IACd,mBAAA,CAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;IACb,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;IAClB,mBAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAChB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA;;AC1CK,SAAU,YAAY,CAAI,KAA0B,EAAA;AACxD,IAAA,OAAO,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,IAAI,CAAC;AACjD,CAAC;AAEK,SAAU,cAAc,CAAI,KAA0B,EAAA;AAC1D,IAAA,OAAO,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,CAAC;AACpD,CAAC;AAEK,SAAU,qBAAqB,CAAI,KAA0B,EAAA;AACjE,IAAA,OAAO,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,IAAI,CAAC;AAC/F,CAAC;AAEK,SAAU,aAAa,CAAI,IAAO,EAAA;IACtC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC;AAEK,SAAU,aAAa,CAAC,KAAU,EAAA;IACtC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AAEY,MAAA,UAAU,GAA+B,EAAE,MAAM,EAAE,iBAAiB,CAAC,UAAU,GAAG;AAGlF,MAAA,UAAU,GAA+B,EAAE,MAAM,EAAE,iBAAiB,CAAC,UAAU,GAAG;AAEzF,SAAU,2BAA2B,CAAE,MAAyB,EAAA;AACpE,IAAA,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpF;;SC1BgB,kBAAkB,GAAA;AAChC,IAAA,OAAO,UAAU,GAAkB,EAAA;AACjC,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,KAAC,CAAC;AACJ;;MCYa,yBAAyB,CAAA;IA2BlC,WACY,CAAA,WAA6B,EAC7B,aAA+B,EAAA;AAD/B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QA3BlC,IAAA,CAAA,WAAW,GAAmC;AACnD,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE;AACJ,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,KAAK;AACf,aAAA;SACF,CAAC;AAGJ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAmC,CAAC;AACzD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,kBAAkB,EAAE,CAAC,CAAC;AAE5D,QAAA,IAAK,CAAA,KAAA,GAA8C,EAAE,CAAC;AAclD,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAE,KAAK,IAAG;AAC9C,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,CAAC;AACnF,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,CAAC;AACnF,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,CAAC;AAC7E,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,IAAI,CAAC;AACxE,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;IAtBD,IAA+B,UAAU,CAAC,KAAwE,EAAA;AAC9G,QAAA,IAAG,YAAY,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtE,SAAA;KAEJ;IAkBD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;;sHA/CM,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;iIAoBV,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,kBAAkB,CAAA;;;MCjCP,sBAAsB,CAAA;AAExC,IAAA,WAAA,CACY,QAAkB,EAChB,WAA6B,EAC7B,aAA+B,EAAA;AAFjC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAChB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAJ7C,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAsBR,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAsB,KAAY;YACpD,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,SAAC,CAAA;KArBA;IAED,QAAQ,GAAA;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC5D,IAAG,MAAM,IAAI,IAAI,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;AAC7G,SAAA;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC7C;IAED,WAAW,GAAA;KAEV;;mHArBiB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C,SAAS;;;ACEJ,MAAO,uBAAiD,SAAQ,sBAAsB,CAAA;AAE1F,IAAA,WAAA,CACE,QAAkB,EAClB,WAA6B,EAC7B,aAA+B,EAAA;AAE/B,QAAA,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAG9C,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA4B,KAAI;AACxC,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACpF,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KARD;IAUD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;KACrB;;oHAxBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;mBAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;;;ACCrC,MAAO,4BAA8B,SAAQ,sBAAsB,CAAA;AASrE,IAAA,WAAA,CACG,QAAkB,EACjB,WAA6B,EAC7B,aAA+B,EAAA;AAE/B,QAAA,KAAK,CAAC,QAAQ,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC;AAb9C,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA4B,KAAI;AACtC,YAAA,IAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;AACzD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC;KAQD;IAED,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;;yHAvBQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAA5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAA;;;ACC1C,MAAO,4BAAqD,SAAQ,sBAAsB,CAAA;AAS5F,IAAA,WAAA,CACI,QAAkB,EAClB,WAA6B,EAC7B,aAA+B,EAAA;AAE/B,QAAA,KAAK,CAAC,QAAQ,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC;AAb9C,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA4B,KAAI;AACtC,YAAA,IAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;AACzD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC;KAQD;IAED,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;;yHAvBQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAA5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAA;;;ACC1C,MAAO,yBAA6B,SAAQ,sBAAsB,CAAA;AASpE,IAAA,WAAA,CACI,QAAkB,EAClB,WAAwC,EACxC,aAA+B,EAAA;AAE/B,QAAA,KAAK,CAAC,QAAQ,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC;AAb9C,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA4B,KAAI;AACtC,YAAA,IAAG,cAAc,CAAC,KAAK,CAAC,EAAC;AACrB,gBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAC,CAAE,CAAC;AAClF,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC;KAQD;IAED,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;;sHAvBQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAC,CAAA;;;ACArC,MAAM,gBAAgB,GAAG,CAAI,MAAuC,KACzE,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,cAAc,CAAC,EACtB,GAAG,CAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;;ACJZ,MAAA,kBAAkB,GAAG,CAAI,MAAuC,KAC3E,MAAM,CAAC,IAAI,CACT,GAAG,CAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;;ACDrB,SAAU,QAAQ,CAAC,OAA6B,EAAA;AACpD,IAAA,OAAO,UAAU,GAAiC,EAAA;QAChD,OAAO,GAAG,CAAC,IAAI,CACX,GAAG,CAAE,MAAM,IAAG;AACV,YAAA,IAAG,YAAY,CAAC,MAAM,CAAC,EAAE;AACrB,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,aAAA;SACJ,CAAC,CACL,CAAC;AACJ,KAAC,CAAC;AACJ;;ACVM,SAAU,UAAU,CAAI,SAA4B,EAAA;AACxD,IAAA,OAAO,UAAU,GAAoC,EAAA;QACnD,OAAO,GAAG,CAAC,IAAI,CACX,GAAG,CAAE,MAAM,IAAG;AACV,YAAA,IAAG,cAAc,CAAC,MAAM,CAAC,EAAE;AACvB,gBAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;SACJ,CAAC,CACL,CAAC;AACJ,KAAC,CAAC;AACJ;;ACZM,SAAU,QAAQ,CAAa,UAAmC,EAAA;AACtE,IAAA,OAAO,UAAU,GAAkB,EAAA;AACjC,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;AACvD,KAAC,CAAC;AACJ;;ACWM,SAAU,WAAW,CAAU,GAAkB,EAAA;IACrD,OAAO,GAAG,CAAC,IAAI,CACb,GAAG,CAAC,aAAa,CAAC,EAClB,QAAQ,CAAC,aAAa,CAAC,EACvB,SAAS,CAAC,UAAU,CAAC,EACrB,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEK,SAAU,aAAa,CAA0B,GAAiC,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;AACnD,IAAA,MAAM,UAAU,GAA0B,QAAQ,CAAC,IAAI,CACrD,SAAS,CAAE,CAAC,MAAM,KAAK,WAAW,CAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,EACvD,SAAS,CAAC,UAAU,CAAC,EACrB,kBAAkB,EAAE,CACrB,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,MAAmB,KAAI;AACzC,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,QAAA,OAAO,UAAU,CAAC;AACpB,KAAC,CAAC;AACF,IAAA,QAAQ;QACN,OAAO;QACP,UAAU;AACV,QAAA,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACxC,QAAA,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7C,KAAA,EAAE;AACL,CAAC;SAEe,YAAY,CAC1B,UAA2C,EAC3C,OAAqC,EACrC,aAA+E,EAAA;IAE/E,OAAO,UAAU,CAAC,IAAI,CACpB,SAAS,CAAE,GAAG,IAAG;AACf,QAAA,IAAG,GAAG,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,EAAE;AAC3C,YAAA,MAAM,SAAS,GAAG,aAAa,CAAkB,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,UAAU,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,SAAA;KACF,CAAC,CACH,CAAC;AACJ;;MCxCgB,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAbzB,yBAAyB;QACzB,yBAAyB;QACzB,uBAAuB;QACvB,4BAA4B;AAC5B,QAAA,4BAA4B,aAG5B,yBAAyB;QACzB,yBAAyB;QACzB,uBAAuB;QACvB,4BAA4B;QAC5B,4BAA4B,CAAA,EAAA,CAAA,CAAA;+GAEpB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,SAAS,EAAC,EAAE;AACZ,oBAAA,YAAY,EAAE;wBACV,yBAAyB;wBACzB,yBAAyB;wBACzB,uBAAuB;wBACvB,4BAA4B;wBAC5B,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,yBAAyB;wBACzB,yBAAyB;wBACzB,uBAAuB;wBACvB,4BAA4B;wBAC5B,4BAA4B;AAC/B,qBAAA;iBACJ,CAAA;;;ACPK,MAAO,qBAA+C,SAAQ,cAAyC,CAAA;IAEzG,WAAoB,CAAA,GAAiC,EAAU,OAA6B,EAAA;;QAC1F,KAAK,CAAC,EAAE,aAAa,EAAE,IAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;AAD1C,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAA8B;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;AASpF,QAAA,IAAkB,CAAA,kBAAA,GAAG,MAAK;;YAChC,IAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,MAAK,mBAAmB,CAAC,UAAU;AAC1D,gBAAA,OAAO,QAAQ,CAAE,CAAC,MAAmB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,MAAK,mBAAmB,CAAC,UAAU;AAC1D,gBAAA,OAAO,SAAS,CAAE,CAAC,MAAmB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5E,YAAA,OAAO,SAAS,CAAE,CAAC,MAAmB,KAAK,CAAE,MAAM,CAAC,CAAC,CAAS,YAAY,iBAAiB;AACzF,gBAAA,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAA+B,EAAE,CAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAE,CAAC;AACxJ,SAAC,CAAA;QAEO,IAAa,CAAA,aAAA,GAA0C,IAAI,CAAC,MAAM,CAAC,CAAC,GAA4B,KAAI;YAC1G,OAAO,CAAC,GAAG,EAAE,IAAI,CACf,IAAI,CAAC,kBAAkB,EAAE,EACzB,GAAG,CAA6B,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;AACJ,SAAC,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,GAAG,KAAkB,KAAI;AACnD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAiB,CAAC;AACnD,SAAC,CAAA;AACO,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,GAAG,KAAkB,KAAI;AACnD,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAE;AAC/D,gBAAA,MAAM,IAAI,KAAK,CAAC,8HAA8H,CAAC,CAAC;AACjJ,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAiB,CAAC;AACnD,SAAC,CAAA;QAED,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1D,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,YAAY,CAAC,EACpB,GAAG,CAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAC3B,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,cAAc,CAAC,EACtB,GAAG,CAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACF,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,qBAAqB,CAAC,EAC7B,GAAG,CAAE,MAAM,IAAI,CAAC,CACjB,CAAC;AAEF,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QA0DrB,IAAA,CAAA,EAAE,GAAG,CAAI,aAA4B,EAAE,IAAsB,KAAkB;AAC7E,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAkB,KAAI;gBACxC,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,aAAC,CAAC,CAAC,aAAa,CAAiB,CAAC;AACpC,SAAC,CAAA;AApHC,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAK,mBAAmB,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,GAAI,IAAI,CAAC,gBAAgB,CAAC;KAC5H;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAC,IAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;KACpE;AAkDD,IAAA,OAAO,CAAE,EAAsC,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAE,EAAqB,EAAA;QAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,gBAAgB,CAAC,EAAc,EAAA;QAC7B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,oBAAoB,CAAC,IAGX,EAAA;QACR,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAI;AAC5C,YAAA,IAAG,cAAc,CAAC,QAAQ,CAAC,EAAC;gBAC1B,IAAI,CAAC,EAAC,aAAa,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAC,CAAC,CAAC;AAC3C,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,kBAAkB,CAAC,IAGT,EAAA;QACR,IAAI,CAAC,QAAQ,CAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAI;AAC7C,YAAA,IAAG,YAAY,CAAC,QAAQ,CAAC,EAAC;gBACxB,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AAChD,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,aAAa,CAAC,GAAG,MAAmB,EAAA;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAC7B,GAAG,CAAC,aAAa,CAAC,EAClB,QAAQ,CAAC,aAAa,CAAC,EACvB,SAAS,CAAC,UAAU,CAAC,EACrB,GAAG,CAAE,KAAK,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAC3D,kBAAkB,EAAE,CACrB,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,IAGC,EAAA;QACR,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC5B;IAUD,WAAW,GAAA;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;KACrB;;kHA9HQ,qBAAqB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;;MAmIK,iBAAiB,CAAA;AAAG;;MC5ItB,uBAAuB,CAAA;AAElC,IAAA,WAAA,GAAA;AAIQ,QAAA,IAAU,CAAA,UAAA,GAAgB,EAAE,CAAC;KAJrB;IAChB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAE,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;IAED,MAAM,CAA2B,GAAiC,EAAE,OAA6B,EAAA;QAC/F,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,gBAAgB,CAAK,CAAuC,EAAG,OAA6B,EAAA;QAC1F,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,OAAO,SAAS,CAAC;KAClB;;oHAjBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACCC,IAAA,UAcX;AAdD,CAAA,UAAY,SAAS,EAAA;IACjB,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACX,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACR,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACR,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;IACT,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACX,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAgB,CAAA;IAChB,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAe,CAAA;IACf,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAS,CAAA;AACb,CAAC,EAdW,SAAS,KAAT,SAAS,GAcpB,EAAA,CAAA,CAAA,CAAA;AAEW,IAAA,cAGX;AAHD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAU,CAAA;AACV,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAY,CAAA;AAChB,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA,CAAA;AAEW,IAAA,OAKX;AALD,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,OAAA,CAAA,GAAA,QAAgB,CAAA;AAChB,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,OAAc,CAAA;AACd,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,SAAkB,CAAA;AAClB,IAAA,MAAA,CAAA,KAAA,CAAA,GAAA,MAAY,CAAA;AACd,CAAC,EALW,MAAM,KAAN,MAAM,GAKjB,EAAA,CAAA,CAAA,CAAA;AAyFW,IAAA,WAGX;AAHD,CAAA,UAAY,UAAU,EAAA;IACpB,UAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;IACd,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACT,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA;;ACxGM,MAAM,QAAQ,GAAG,CAAI,SAAuB,KAAK,CAAC,GAAkB,KAAoB;AAC7F,IAAA,OAAO,GAAG,CAAC,IAAI,CAACA,QAAM,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,EAAC;AAEM,MAAM,QAAQ,GAAG,CAAO,OAAsB,KAAM,CAAC,MAAuB,KACjF,MAAM,CAAC,IAAI,CAAEC,KAAG,CAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAE,EAAG;AAExC,MAAM,WAAW,GAAG,CAAI,UAA+B,KAAM,CAAC,MAAuB,KAC3F,MAAM,CAAC,IAAI,CAAEA,KAAG,CAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAE,EAAG;AAEhD,SAAU,MAAM,CAAgB,GAAM,EAAA;IAC1C,OAAO,CAAC,MAAqB,KAAI;AAC/B,QAAA,OAAO,IAAI,UAAU,CAAI,UAAU,IAAG;YACpC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,UAAU,CAAC,MAAK;gBACd,IAAG,CAAC,OAAO,EAAE;AACX,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,iBAAA;aACF,EAAE,CAAC,CAAC,CAAC;YACN,MAAM,CAAC,SAAS,CAAC;AACf,gBAAA,IAAI,CAAC,CAAC,EAAA,EAAI,OAAO,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,EAAE;AAC9C,gBAAA,KAAK,CAAC,GAAG,EAAA,EAAI,OAAO,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,EAAE;AACpD,gBAAA,QAAQ,GAAK,EAAA,OAAO,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;AACtD,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACL,KAAC,CAAA;AAEH,CAAC;AAEY,MAAA,aAAa,GAAG,CAAI,OAA0B,KAAqB;AAC9E,IAAA,OAAO,aAAa,CAClB,OAAO,CAAC,GAAG,CAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAC,IAAI,CACJA,KAAG,CAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAE,CAC3B,CAAC;AACJ,EAAE;SAEc,SAAS,CAAE,YAAiC,EAAE,eAAwB,IAAI,EAAA;IACxF,OAAO,CAAI,MAAqB,KAAoB;AAClD,QAAA,OAAO,IAAI,UAAU,CAAC,SAAS,IAAG;YAChC,IAAI,IAAI,GAAG,YAAY,CAAC;AACxB,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACxC,YAAA,YAAY,CAAC,GAAG,CAAE,YAAY,CAAC,SAAS,CAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAE,CAAC,CAAC;AAC7D,YAAA,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,EAAA;AACR,oBAAA,IAAG,IAAI,EAAE;AACP,wBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,qBAAA;iBACF;gBACD,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC,gBAAA,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AACrC,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,OAAO,YAAY,CAAC;AACtB,SAAC,CAAC,CAAC;AACL,KAAC,CAAA;AACH,CAAC;AAEK,SAAU,WAAW,CAAE,OAAwB,EAAA;IACnD,OAAO,CAAI,MAAqB,KAAoB;AAClD,QAAA,OAAO,IAAI,UAAU,CAAC,SAAS,IAAG;AAChC,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,YAAA,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAE,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,EAAA;AACR,oBAAA,IAAG,QAAQ,EAAE;wBACX,QAAQ,GAAG,KAAK,CAAC;AAClB,qBAAA;AAAM,yBAAA;AACL,wBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,qBAAA;iBACF;gBACD,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC,gBAAA,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AACrC,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,OAAO,YAAY,CAAC;AACtB,SAAC,CAAC,CAAC;AACL,KAAC,CAAA;AACH,CAAC;AAEK,SAAU,kBAAkB,CAAI,aAAiB,EAAA;IACrD,OAAO,CAAC,MAAqB,KAAI;AAC/B,QAAA,OAAO,MAAM,CAAC,IAAI,CAACC,WAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3D,KAAC,CAAA;AACH,CAAC;SAEe,OAAO,GAAA;IACrB,OAAQ,CAAC,MAAwC,KAAI;AACnD,QAAA,OAAQ,MAAM,CAAC,IAAI,CAACF,QAAM,CAAE,CAAC,CAAuB,KAAa,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;AACzE,KAAC,CAAA;AACH,CAAC;AAEe,SAAA,OAAO,CAAI,SAA4B,EAAE,SAAiB,EAAA;IACxE,OAAO,CAAC,GAAkB,KAAI;QAC5B,OAAO,GAAG,CAAC,IAAI,CACbG,WAAS,CAAC,CAAC,IAAG;AACZ,YAAA,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,gBAAA,OAAO,KAAK,CACV,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACT,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAChC,CAAC,IAAI,CACJ,OAAO,EAAE,EACTF,KAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACd,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,aAAA;SACF,CAAC,CACH,CAAC;AACJ,KAAC,CAAC;AACJ;;AC/GO,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAqB,oBAAoB,CAAC;;MCftF,eAAe,CAAA;AAE1B,IAAA,SAAS,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,QAAQ,EAAE;YACZ,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,CAAC,CAAC;AACtC,YAAA,IAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtB,gBAAA,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC,aAAA;AACD,YAAA,OAAO,GAAG,GAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3H,SAAA;KACF;;4GAVU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;0GAAf,eAAe,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;mBAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAA;;;MCGR,qBAAqB,CAAA;IAGhC,SAAS,GAAA;AACL,QAAA,OAAO,KAAK,CAAA;KACf;;kHALU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAA;8BAIC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCF9B,wBAAwB,CAAA;AAG1B,IAAA,OAAO,CAAC,KAAU,EAAA;QAErB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAGM,IAAA,WAAW,CAAC,KAAU,EAAA;QAEzB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;;qHAZQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;iBACjC,CAAA;8BAIU,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAO1B,WAAW,EAAA,CAAA;sBADjB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCR5B,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAoB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AADjC,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;KACqB;IAE/C,eAAe,GAAA;QACb,IAAG,IAAI,CAAC,SAAS,EAAC;YAChB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;+GAXU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;iBACxB,CAAA;iGAGU,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;ACEC,MAAO,qBAAmC,SAAQ,OAAU,CAAA;AACnE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;KACT;IAGD,IAA2B,YAAY,CAAE,GAAM,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KACjB;;kHARa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;iBACF,CAAA;0EAM4B,YAAY,EAAA,CAAA;sBAAtC,KAAK;uBAAC,cAAc,CAAA;;;ACLd,MAAO,qBAAsB,SAAQ,OAAgB,CAAA;AAC5D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;KACT;;kHAHa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;iBACF,CAAA;;;MCDY,aAAa,CAAA;AAJ1B,IAAA,WAAA,GAAA;AAKI,QAAA,IAAiB,CAAA,iBAAA,GAAwB,EAAE,CAAC;KAa/C;AAXG,IAAA,YAAY,CAAC,GAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpC;AAED,IAAA,eAAe,CAAC,GAAsB,EAAA;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;KAClF;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;KACtD;;0GAbQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAHV,MAAM,EAAA,CAAA,CAAA;2FAGT,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCWU,aAAa,CAAA;AAqBxB,IAAA,WAAA,CAAoB,GAAqB,EAAA;AAArB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;AApBzC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAA,CAAA,WAAW,GAAG;AACZ,YAAA,KAAK,EAAE,MAAK,GAAG;SACQ,CAAC;KAkBzB;IAjBD,IAAI,QAAQ,CAAC,IAAuC,EAAA;QAClD,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACrD;IAED,IAAI,KAAK,CAAC,WAAuB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC;KACtC;IAED,IAAI,IAAI,CAAC,KAAQ,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;KACnC;;0GApBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,0DAFd,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAED,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAE,CAAA;iBACb,CAAA;;AA4BD,MAAM,mBAAmB,GAAoB;AAC3C,IAAA,SAAS,EAAE,MAAM;CAClB,CAAA;MAKc,eAAe,CAAA;AAkB5B,IAAA,WAAA,CACU,WAA8C,EAC9C,MAAiB,EACjB,OAAsB,EAAA;AAFtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmC;AAC9C,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;AApBtB,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAE,CAAC;AACrE,QAAA,IAAa,CAAA,aAAA,GAAuB,mBAAmB,CAAC;AAgCxD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAiB,CAAC;AAZnC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACjC,SAAS,EAAE,CACZ,CAAC,SAAS,CAAC,CAAC,IAAG;AACd,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IA7BD,IAAa,cAAc,CAAC,MAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,mBAAmB,CAAK,EAAA,MAAM,CAAC,CAAC;KAC1D;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAuB,KAAK,CAAC,UAAyB,EAAA;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7B;IAwBD,KAAK,GAAA;;AACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;KACzB;IAED,UAAU,GAAA;QACR,IAAG,IAAI,CAAC,aAAa,EAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAI,EAAA,CAAA,EAAE,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,cAAc,CAAA,EAAA,EAAG,QAAQ,EAAA,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACzD,QAAA,IAAI,CAAC,gBAAiB,CAAC,KAAK,GAAG,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA,EAAA,CAAC;QAC7D,IAAI,CAAC,gBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAS,CAAC;QAC5D,IAAI,CAAC,gBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACtD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,GAAG,CAAC,WAAW,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,IAAa,EAAA;AAC1B,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,gBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAS,CAAC;AAC7D,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;AAEF,IAAA,OAAO,sBAAsB,CAAI,GAAuB,EAAE,GAAQ,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC;KACb;;4GAlFa,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAF7B,SAAS;mBACR,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;yJAEhB,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEM,cAAc,EAAA,CAAA;sBAA1B,KAAK;gBAOiB,KAAK,EAAA,CAAA;sBAA3B,KAAK;uBAAC,UAAU,CAAA;gBAGQ,aAAa,EAAA,CAAA;sBAArC,KAAK;uBAAC,gBAAgB,CAAA;;;MC5DT,eAAe,CAAA;AAQ7B,IAAA,WAAA,CAAoB,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAClC;IARA,IAAa,MAAM,CAAC,MAAM,EAAA;AACxB,QAAA,IAAG,MAAM,EAAC;YACR,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAE,KAAK,IAAG;AACnC,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;;4GAPa,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAF9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;iBACvB,CAAA;iGACc,MAAM,EAAA,CAAA;sBAAlB,KAAK;;;MCEO,4BAA4B,CAAA;AAH3C,IAAA,WAAA,GAAA;AAIW,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAQvB,IAAA,CAAA,MAAM,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;KA0ChD;IA/CC,IAAqC,OAAO,CAAC,GAA8B,EAAA;AACzE,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;AAID,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAEC,WAAS,CAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC1D;IAGD,YAAY,GAAA;AACV,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,CAAC,IAAI,EAAC,GAAG,KAAI;AACpD,YAAA,IAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,aAAA;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;AAC5B,YAAA,OAAO,IAAI,CAAC;SACb,EAAE,EAA2B,CAAC,CAAC;AAChC,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,MAAM,GAAA;QACJ,IAAI,aAAa,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAE3E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvC,OAAO,aAAa,CAAC,IAAI,CACvB,IAAI,CAAE,CAAC,IAAI,EAAC,GAAG,KAAI;AACjB,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAK,CAAC;AACpC,YAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,IAAI,CAAA,EAAA,EAAC,CAAC,UAAU,GAAE,GAAG,CAAC,OAAO,EAAA,CAAC,CAAC;YAClD,IAAG,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrC,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,qBAAA,MAAM,CAAE,GAAG,IAAI,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC/C,OAAO,CAAE,GAAG,IAAG;AACd,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAE,CAAC,MAAM,EAAE,CAAC;AAC/D,iBAAC,CAAC,CAAC;AACN,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,EAAC,UAAU,CAAC,EACbH,WAAS,CAAC,UAAU,CAAC,CACtB,CAAC;KAEH;;yHAjDY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8KAIxBI,oBAAc,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAJlB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAH1C,SAAS;mBACR,EAAE,QAAQ,EAAE,yBAAyB;iBACtC,CAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAG+B,OAAO,EAAA,CAAA;sBAA3C,eAAe;uBAACA,oBAAc,CAAA;gBAOjB,YAAY,EAAA,CAAA;sBAAzB,MAAM;;;MCdI,uBAAuB,CAAA;AAElC,IAAA,WAAA,CAAoB,IAAgB,EAAA;AAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAK;IAEnB,MAAM,GAAA;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,QAAA,IAAG,WAAW,EAAE;AACd,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,IAAG,WAAW,KAAK,QAAQ,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;AAC3E,aAAA;AACF,SAAA;KACF;;oHAbU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;iBAClC,CAAA;iGAKuB,MAAM,EAAA,CAAA;sBAA3B,YAAY;uBAAC,MAAM,CAAA;;;MCJT,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,IAAyC,EAAE,GAAG,IAAW,EAAA;AACjE,QAAA,IAAG,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC3B,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,YAAA,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,SAAA;AACC,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;KACxB;;yGARU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;iBACb,CAAA;;;MCDY,aAAa,CAAA;AACxB,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,OAAQ,SAAS,CAAC,KAAK,CAAC,CAAC;KAC1B;;0GAHU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAA;;AAOzB;;;;;;;;AAQG;AACG,SAAU,SAAS,CAAC,KAAa,EAAA;AACrC,IAAA,MAAM,MAAM,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,OAAO,CAAC,oDAAoD,EAAE,WAAW,CAAC,CAAA;;AAEhG,IAAA,OAAO,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D;;MChBa,2BAA2B,CAAA;IAEtC,WAAoB,CAAA,EAAc,EAAU,QAAmB,EAAA;AAA3C,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAMhE,QAAA,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;KAL5B;AAOF,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,OAAO,GAAc,EAAE,CAAC;QAC5B,IAAG,IAAI,CAAC,OAAO,EAAE;YACf,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,iBAAA,MAAM,CAAE,GAAG,IAAI,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,CAAC;AACrD,SAAA;QAED,IAAI,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC;QACnF,IAAI,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7E,eAAe,CAAC,OAAO,CAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAE,CAAE,CAAC;QAEtF,oBAAoB,CAAC,OAAO,CAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAG,CAAC,CAAE,CAAE,CAAC;AAEzF,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;KAC9B;;wHAzBW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;iBACjC,CAAA;yHAMS,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACuB,OAAO,EAAA,CAAA;sBAAnC,KAAK;uBAAC,oBAAoB,CAAA;;;MC4Cf,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAlBpB,aAAa;QACb,eAAe;QACf,YAAY;QACZ,wBAAwB;QACxB,eAAe;QACf,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,eAAe;QACf,4BAA4B;AAC5B,QAAA,2BAA2B,aA7B3B,wBAAwB;QACxB,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,YAAY;QACZ,wBAAwB;QACxB,uBAAuB;QACvB,eAAe;QACf,qBAAqB;QACrB,kBAAkB;QAClB,qBAAqB;QACrB,qBAAqB;QACrB,eAAe;QACf,4BAA4B;QAC5B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAqBtB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJZ,SAAA,EAAA;QACV,aAAa;AACd,KAAA,EAAA,CAAA,CAAA;2FAEQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAER;AACC,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB,qBAAqB;wBACrB,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,wBAAwB;wBACxB,uBAAuB;wBACvB,eAAe;wBACf,qBAAqB;wBACrB,kBAAkB;wBAClB,qBAAqB;wBACrB,qBAAqB;wBACrB,eAAe;wBACf,4BAA4B;wBAC5B,2BAA2B;AAC9B,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,wBAAwB;wBACxB,eAAe;wBACf,qBAAqB;wBACrB,kBAAkB;wBAClB,uBAAuB;wBACvB,qBAAqB;wBACrB,qBAAqB;wBACrB,eAAe;wBACf,4BAA4B;wBAC5B,2BAA2B;AAC9B,qBAAA;AACD,oBAAA,SAAS,EAAG;wBACV,aAAa;AACd,qBAAA;iBACJ,CAAA;;;AChDK,SAAU,MAAM,CAAC,CAAO,EAAA;IAC5B,OAAO,QAAS,CAAmB,CAAC,SAAS,CAAE,KAAK,UAAU,CAAC;AACjE,CAAC;MAKY,gBAAgB,CAAA;IAC3B,WACU,CAAA,QAAkB,EAClB,YAA0B,EAC1B,SAA0B,EAC1B,QAAuB,EACU,MAA0B,EAAA;AAJ3D,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAClB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;AACU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;KACjE;AACJ,IAAA,iBAAiB,CAAC,QAAkB,EAAA;;AAClC,QAAA,MAAM,WAAW,GAAG,CAAC,KAAU,KAAK,GAAG,CAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAG,QAAQ,CAAC,SAAS,EAAE;AACrB,YAAA,IAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC;AAC5B,gBAAA,OAAO,CAAC,KAAU,KAAO,QAAS,CAAC,SAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,aAAA;AACD,YAAA,OAAO,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,KAAU,KAAM,QAAQ,CAAC,SAAgC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAC,KAAK,CAAC,CAAC;AAChK,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC5E,YAAA,IAAI,UAAU,GAAI,IAAI,CAAC,MAAM,CAAC,YAAa,CAAC,QAAQ,CAAC,SAAS,CAAE,CAAC;AACjE,YAAA,OAAO,CAAC,KAAU,KAAK,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,SAAA;QACD,QAAO,QAAQ,CAAC,SAAS;YACvB,KAAK,SAAS,CAAC,IAAI;gBACjB,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,mCAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,WAAW,CAAC;AAC7G,gBAAA,OAAO,CAAC,KAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;YACjF,KAAK,SAAS,CAAC,QAAQ;AACnB,gBAAA,OAAO,CAAC,KAAU,KAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,KAAK,SAAS,CAAC,WAAW;AACxB,gBAAA,OAAQ,CAAC,KAAU,KAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,CAAC,KAAU,KAAI,EAAA,IAAA,EAAA,CAAA,CAAE,OAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAW,CAAC,CAAA,EAAA,CAAE;YAChH,KAAK,SAAS,CAAC,OAAO;gBACpB,IAAI,OAAO,GAAG,OAAO,CAAA;gBACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAG,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE;AACxC,oBAAA,OAAO,GAAG,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACrD,iBAAA;AACD,gBAAA,IAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAK,IAAI,EAAE;oBACtD,QAAQ,GAAG,OAAO,CAAC;AACpB,iBAAA;AAAM,qBAAA,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE;AAC3D,oBAAA,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;AAC7D,iBAAA;AACD,gBAAA,OAAO,CAAC,KAAU,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAE;AACnE,SAAA;AACC,QAAA,OAAO,WAAW,CAAC;KACtB;;AA5CU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,4HAMjB,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANtB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFd,MAAM,EAAA,CAAA,CAAA;2FAER,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAG,MAAM;iBACpB,CAAA;;;8BAOI,MAAM;+BAAC,uBAAuB,CAAA;;;;MClBtB,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAY,QAAgC,EAAA;AAO5C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,yBAAyB,EAAE,CAAC;AARrD,QAAA,IAAG,QAAQ,EAAC;YACVC,OAAK,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;YACpDA,OAAK,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;YACpDA,OAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AACjE,SAAA;KACF;AAIF,CAAA;MAQY,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;AACE,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA;AAClB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA;AAClB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAA;AAC1B,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;AAChB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;AAChB,QAAA,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;KAC/B;AAAA,CAAA;MAEY,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;AACE,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;KACjB;AAAA,CAAA;MAEY,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;AACE,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAClB;AAAA,CAAA;MAEY,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAY,aAA8D,EAAA;;AAM1E,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AANrB,QAAA,IAAI,aAAa,EAAC;AAChB,YAAA,IAAI,CAAC,cAAc,GAAI,CAAA,EAAA,GAAA,MAAA,aAAsC,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,aAAyC,CAAC,cAAc,CAAC;AACpJ,YAAA,IAAI,CAAC,cAAc,GAAI,CAAA,EAAA,GAAA,MAAA,aAAsC,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,aAAyC,CAAC,cAAc,CAAC;AACrJ,SAAA;KACF;AAGF,CAAA;MAEY,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAY,aAAoC,EAAA;AAYhD,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAA;AACjB,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAA;AACjB,QAAA,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAA;AACzB,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAA;AACf,QAAA,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC;AACpC,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAA;AACjB,QAAA,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAlBtB,QAAA,IAAG,aAAa,EAAC;YACf,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC;YAC1E,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;YACtD,IAAI,CAAC,4BAA4B,GAAG,aAAa,CAAC,cAAc,CAAC,sBAAsB,CAAC;YACxF,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,uBAAuB,GAAG,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAC5E,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACrE,SAAA;KACF;AASF;;ACtCD,MAAM,YAAY,CAAA;AAAlB,IAAA,WAAA,GAAA;AACE,QAAA,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAChB,QAAA,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;AAClC,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;KACjB;AAAA,CAAA;AACM,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;AAE5D,IAAY,mBAKX,CAAA;AALD,CAAA,UAAY,mBAAmB,EAAA;IAC7B,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;IACP,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;IACd,mBAAA,CAAA,mBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;IACf,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,iBAAiB,GAAe;IAC3C,mBAAmB,EAAE,mBAAmB,CAAC,OAAO;AAChD,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,WAAW,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,MAAM,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC;IACzC,sBAAsB,EAAG,IAAI,uBAAuB,EAAE;IACtD,0BAA0B,EAAG,IAAI,0BAA0B,EAAE;AAC7D,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,QAAQ,EAAC,EAAE;AACX,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,MAAM,EAAE,EAAE;CACX;;AC7DW,IAAA,WAsBX;AAtBD,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,QAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,cAAkC,CAAA;AAClC,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,WAA4B,CAAA;AAC5B,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,SAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,QAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,UAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,sBAAA,CAAA,GAAA,kBAAyC,CAAA;AACzC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,YAA8B,CAAA;AAC9B,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,WAA4B,CAAA;AAC5B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,OAAkB,CAAA;AAClB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,WAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,aAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,cAA+B,CAAA;AAC/B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,SAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,IAAoB,CAAA;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,UAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAtBW,UAAU,KAAV,UAAU,GAsBrB,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,eAAe,GAAsB;IAC9C,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACpD,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC9D,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;IACtD,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;CACnC,CAAC;AAEK,MAAM,eAAe,GAAsB;IAC9C,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACpD,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,CAAC,oBAAoB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;IACpE,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;IAC1D,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;CACnC,CAAC;AAEK,MAAM,aAAa,GAAsB;IAC5C,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC5C,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;IAClD,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;IACtD,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;IAClD,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;CAC3C,CAAC;AAEK,MAAM,gBAAgB,GAAuB;IAChD,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;IACtD,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;CAC3C,CAAC;AAEK,MAAM,aAAa,GAAwB;IAChD,CAAC,UAAU,CAAC,MAAM,GAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACzC,CAAC,UAAU,CAAC,EAAE,GAAI,CAAC,UAAU,CAAC,EAAE,CAAC;CAClC;;AC5DM,MAAM,MAAM,GAA2B,CAAC,UAAqB,KAAI;AACtE,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW;QACjC,CAAC,GAAQ,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;;YAEvC,CAAC,GAAQ,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;AACxC,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;;ACFD,MAAM,eAAe,GAAsB,CAAC,UAAqB,KAAI;IACnE,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAClE,IAAA,QAAQ,CAAC,GAAG,KAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAG;AAC9D,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAsB,CAAC,UAAqB,KAAI;IACtE,MAAM,WAAW,GAAG,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpE,IAAA,QAAQ,CAAC,GAAG,KAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACrE,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAsB,CAAC,UAAqB,KAAI;IAC5E,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1E,QAAQ,CAAC,GAAG,KAAG,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,EAAC,CAAA,EAAA,GAAA,uBAAuB,CAAC,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAA,CAAA,EAAA,EAAE;AAC7E,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAsB,CAAC,UAAqB,KAAI;IACxE,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACnE,IAAA,QAAQ,CAAC,GAAG,KAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACtE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAsB,CAAC,UAAqB,KAAI;IACtE,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACnE,IAAA,QAAQ,CAAC,GAAG,KAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACpE,CAAC,CAAA;AAED,MAAM,8BAA8B,GAA+B,CAAC,UAAqB,KAAI;AAC3F,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,CAAS,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,QAAQ,CAAC,GAAG,KAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAQ,KAAK,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACrF,CAAC,CAAA;AAEM,MAAM,iBAAiB,GAAsC;AAChE,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG,eAAe;AAC1C,IAAA,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB;AAC/C,IAAA,CAAC,UAAU,CAAC,oBAAoB,GAAG,wBAAwB;AAC3D,IAAA,CAAC,UAAU,CAAC,eAAe,GAAG,oBAAoB;AAClD,IAAA,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB;AAC/C,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAA,CAAC,UAAU,CAAC,EAAE,GAAG,8BAA8B;CAClD,CAAC;AAEK,MAAM,eAAe,GAAoC;AAC9D,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAA,CAAC,UAAU,CAAC,EAAE,GAAI,8BAA8B;CACjD,CAAC;AAEK,MAAM,uBAAuB,GAAG,CAAC,GAAS,KAAY,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,GAAG,IAAI,EAAA,CAAG,WAAW,EAAE;;AC5CjG,MAAM,eAAe,GAAoB,CAAC,UAA+B,KAAK,CAAC,GAAW,KAAc;AACpG,IAAA,OAAQ,GAAG,KAAK,UAAU,CAAC,WAAW,CAAC;AAC3C,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAmB,CAAC,UAA+B,KAAK,CAAC,GAAW,KAAc;AACxG,IAAA,OAAO,GAAG,KAAK,UAAU,CAAC,WAAW,CAAC;AACxC,CAAC,CAAA;AAED,MAAO,qBAAqB,GAAmB,CAAC,UAA+B,KAAK,CAAC,GAAW,KAAc;AAC1G,IAAA,OAAO,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC;AACxC,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAmB,CAAC,UAA+B,KAAK,CAAC,GAAW,KAAc;AACtG,IAAA,OAAO,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC;AACxC,CAAC,CAAA;AAED,MAAO,iBAAiB,GAAoC,CAAC,UAAuB,KAAI;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA,QAAQ,CAAC,GAAG,KAAG,CAAC,GAAG,GAAG,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE;AACrD,CAAC,CAAA;AAEM,MAAM,8BAA8B,GAA+B,CAAC,UAAqB,KAAI;IAClG,QAAQ,CAAC,GAAG,KAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,GAAG,KAAK,KAAK,CAAC,EAAE;AAC7E,CAAC,CAAA;AAEM,MAAM,iBAAiB,GAAoC;AAC9D,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG,eAAe;AAC1C,IAAA,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB;AAC/C,IAAA,CAAC,UAAU,CAAC,iBAAiB,GAAG,qBAAqB;AACrD,IAAA,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB;AAC/C,IAAA,CAAC,UAAU,CAAC,aAAa,GAAG,iBAAiB;AAC7C,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAA,CAAC,UAAU,CAAC,EAAE,GAAG,8BAA8B;CAClD;;ACnCD,MAAM,YAAY,GAAoB,CAAC,UAAqB,KAAI;AAC9D,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAE,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAC5D,IAAA,QAAQ,CAAC,GAAG,KAAG,GAAG,CAAC,OAAO,EAAE,KAAM,OAAO,EAAE;AAC7C,CAAC,CAAA;AAED,MAAM,eAAe,GAAoB,CAAC,UAAqB,KAAI;AACjE,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAE,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,IAAA,QAAQ,CAAC,GAAG,KAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,EAAE,MAAM,UAAU,EAAE;AACjD,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAoB,CAAC,UAAqB,KAAI;AACrE,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAE,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAC7D,IAAA,QAAQ,CAAC,GAAG,KAAG,GAAG,CAAC,OAAO,EAAE,IAAK,QAAQ,EAAE;AAC7C,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAoB,CAAC,UAAqB,KAAI;AACtE,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAE,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9D,IAAA,QAAQ,CAAC,GAAG,KAAG,GAAG,CAAC,OAAO,EAAE,IAAK,SAAS,EAAE;AAC9C,CAAC,CAAA;AAED,MAAM,eAAe,GAAgC,CAAC,UAAqB,KAAI;IAC7E,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACpD,IAAA,QAAQ,CAAC,GAAG,KAAG,GAAG,IAAE,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE;AACjD,CAAC,CAAA;AAEM,MAAM,eAAe,GAAoC;AAC5D,IAAA,CAAC,UAAU,CAAC,QAAQ,GAAG,YAAY;AACnC,IAAA,CAAC,UAAU,CAAC,WAAW,GAAG,eAAe;AACzC,IAAA,CAAC,UAAU,CAAC,aAAa,GAAG,mBAAmB;AAC/C,IAAA,CAAC,UAAU,CAAC,cAAc,GAAG,oBAAoB;AACjD,IAAA,CAAC,UAAU,CAAC,WAAW,GAAG,eAAe;AACzC,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;CAC9B;;AClCD,MAAO,iBAAiB,GAAyB,CAAC,UAAqB,KAAK,CAAC,GAAG,KAAc;AAC1F,IAAA,OAAO,UAAU,CAAC,WAAW,KAAK,GAAG,CAAC;AAC1C,CAAC,CAAA;AAEM,MAAM,kBAAkB,GAAoC;AAC9D,IAAA,CAAC,UAAU,CAAC,aAAa,GAAG,iBAAiB;AAC7C,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;CAC/B;;ACgBM,MAAM,aAAa,GAA2C;AACnE,IAAA,CAAC,SAAS,CAAC,OAAO,GAAI,eAAe;AACrC,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,aAAa;AAChC,IAAA,CAAC,SAAS,CAAC,QAAQ,GAAI,eAAe;AACtC,IAAA,CAAC,SAAS,CAAC,KAAK,GAAI,eAAe;AACnC,IAAA,CAAC,SAAS,CAAC,MAAM,GAAI,eAAe;AACpC,IAAA,CAAC,SAAS,CAAC,MAAM,GAAI,eAAe;AACpC,IAAA,CAAC,SAAS,CAAC,OAAO,GAAI,gBAAgB;AACtC,IAAA,CAAC,SAAS,CAAC,WAAW,GAAI,eAAe;AACzC,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,eAAe;AAClC,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,aAAa;CACjC,CAAC;AAEF,MAAM,gBAAgB,GAAoC;IACxD,CAAC,UAAU,CAAC,GAAG,GAAI,CAAC,MAAkB,KAA8B;QAClE,MAAM,OAAO,GAAI,MAAM,CAAC,WAA4B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3E,QAAA,OAAO,CAAC,GAAQ,KAAe,OAAO,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5D;IACD,CAAC,UAAU,CAAC,EAAE,GAAI,CAAC,MAAkB,KAA4B;QAC/D,MAAM,OAAO,GAAI,MAAM,CAAC,WAA4B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3E,QAAA,OAAO,CAAC,GAAQ,KAAe,OAAO,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3D;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAiD;AACtE,IAAA,CAAC,SAAS,CAAC,MAAM,GAAI,iBAAiB;AACtC,IAAA,CAAC,SAAS,CAAC,KAAK,GAAI,iBAAiB;AACrC,IAAA,CAAC,SAAS,CAAC,QAAQ,GAAI,iBAAiB;AACxC,IAAA,CAAC,SAAS,CAAC,WAAW,GAAI,iBAAiB;AAC3C,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,eAAe;AAClC,IAAA,CAAC,SAAS,CAAC,MAAM,GAAI,iBAAiB;AACtC,IAAA,CAAC,SAAS,CAAC,OAAO,GAAI,kBAAkB;AACxC,IAAA,CAAC,SAAS,CAAC,OAAO,GAAI,iBAAiB;AACvC,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,eAAe;AAClC,IAAA,CAAC,SAAS,CAAC,IAAI,GAAI,iBAAiB;CACrC,CAAC;AA+BI,SAAU,cAAc,CAAC,MAAkC,EAAA;IAC/D,OAAO,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;AAC3D,CAAC;AAEK,SAAU,YAAY,CAAC,MAAkC,EAAA;AAC7D,IAAA,OAAQ,MAAM,IAAI,OAAQ,MAAqB,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;AAC9G,CAAC;AAED,MAAM,gBAAgB,GAAmB,MAAM,IAAI,CAAC;AAE9C,SAAU,gBAAgB,CAAC,MAAiC,EAAA;AAChE,IAAA,IAAG,cAAc,CAAC,MAAM,CAAC,EAAE;AACzB,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC5D,KAAA;AACD,IAAA,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AACpC,QAAA,OAAO,gBAAgB,CAAC;AACzB,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5E,IAAG,CAAC,IAAI,EAAE;AACR,QAAA,IAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAC;YACrC,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,SAAA;AACF,KAAA;IAED,MAAM,mBAAmB,GAAG,CAAC,mCAAmC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC;IAC9F,OAAO,CAAC,MAAM,KAAI;QAChB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,KAAK,IAAI,SAAS,KAAK,mBAAmB;AACjD,cAAE,KAAK;AACP,cAAE,IAAI,CAAE,KAAK,CAAC,CAAC;AACnB,KAAC,CAAC;AACJ,CAAC;AAKD,MAAM,mCAAmC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAC,UAAU,CAAC,cAAc,EAAC,UAAU,CAAC,WAAW,EAAC,UAAU,CAAC,oBAAoB,CAAC;;ACnH1I,SAAU,OAAO,CAAC,mBAAwC,EAAA;IAC9D,OAAO,CAAC,KAAiB,KAAK,KAAK,CAAC,mBAAmB,KAAK,mBAAmB,CAAC;AAClF,CAAC;AAKK,MAAO,UAAW,SAAQ,cAA0B,CAAA;AAExD,IAAA,WAAA,CAA6C,MAA0B,EAAA;AACtE,QAAA,KAAK,iCAAO,iBAAiB,CAAA,EAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAa9D,IAAA,CAAA,EAAE,GAAG,CAAI,aAA4B,EAAE,IAAsB,KAAI;AAC/D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,CAClC,GAAG,CAAC,IAAI,CAAC,CACV,CAAC,CAAA;AACJ,SAAC,CAAA;AAMQ,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAE,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAElD,QAAA,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,MAAM,CACnC,IAAI,CAAC,MAAM,EACX,aAAa,CACd,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,GAAW,KAA2B;YACpD,OAAO,IAAI,CAAC,MAAM,CAAE,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAG,CAAC,IAAI,CACtD,GAAG,CAAC,IAAI,IAAG;AAAE,gBAAA,IAAG,CAAC,IAAI;AAAC,oBAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAA,UAAA,CAAY,CAAC,CAAA;AAAA,aAAC,CAAC,EAC3E,OAAO,EAAE,CAAC,CAAA;AACd,SAAC,CAAA;QAED,IAAoB,CAAA,oBAAA,GAAG,CAAC,GAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3F,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAgB,CAAA,gBAAA,GAAI,CAAC,KAAgB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;AACrF,aAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/F,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAW,sCACjD,KAAK,CAAA,EAAA,EACR,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAA,CAAA,CAC9D,CAAC,CAAC;QAEK,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChD,iBAAA,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC;iBAC/C,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,KAAK,EAAE;gBAClB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE;AACxC,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACrB,gBAAA,MAAM,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;AACtB,gBAAA,WAAW,EAAG,EAAC,IAAI,EAAE,EAAC,MAAM,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC;AACnD,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAW,sCACjD,KAAK,CAAA,EAAA,EACR,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAA,CAAA,CACpD,CAAC,CAAC;AAEK,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,WAA8C,KAAI;AAEjG,YAAA,IAAI,aAAa,GAAE,IAAI,GAAG,CACxB;gBACE,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9D,gBAAA,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;AACnG,aAAA,CACF,CAAC;AAEF,YAAA,OAAO,MAAM,CAAE,KAAK,EAAG,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,EAAC,EAAC,CAAC,CAAC;AACpE,SAAC,CAAC,CAAC;AAGH,QAAA,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,SAA8C,KAAI;YAC1F,MAAM,iBAAiB,qBAAO,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxD,YAAA,SAAS,CAAC,OAAO,CAAC,EAAE,IAAG;gBACrB,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;AAC9C,aAAC,CAAC,CAAC;YACH,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,EAAA,EAAA,WAAW,EAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,WAAW,CAAC,EAAA,EAAA,MAAM,EAAC,iBAAiB,EAAG,CAAA,EAAA,CAAA,CAAA;AAClF,SAAC,CAAC,CAAC;AAEH,QAAA,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,KAAuC,KAAG;AAClF,YAAA,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAA,eAAe,CAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC;AAE1C,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAc,EAAC,OAAO,EAAC,KAAK,KAAI;AACtE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAA,OAAO,SAAS,CAAA;aACjB,EAAC,EAAE,CAAC,CAAC;AACN,YAAA,QAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,EAAA,EAAA,WAAW,EAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,WAAW,CAAC,EAAA,EAAA,KAAK,EAAC,gBAAgB,QAAG;AAC/E,SAAC,CAAC,CAAA;AAGO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,QAAgB,KAAwD;AAC7F,YAAA,OAAO,IAAI,CAAC,MAAM,CAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAE,CAAC;AACzD,SAAC,CAAA;AACQ,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,MAAiC,KAAK;YAC/E,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AAEM,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,OAAsC,KAAG;YACjF,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChD,SAAC,CAAC,CAAA;QAGM,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAgB,EAAC,OAAqC,KAAiB;YAElG,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,CAAG,cAAc,CAAE,CAAC;YAEtD,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAE/C,MAAM,UAAU,GAAG,WAAW;AAC3B,iBAAA,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAC,GAAG,CAAA,UAAA,CAAY,CAAC,CAAC;AACrI,iBAAA,MAAM,CAAC,CAAC,UAA8B,EAAC,MAAM,KAAG;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,MAAM,CAAC,QAAQ,GAAGC,EAAI,EAAE,CAAC;AAC1B,iBAAA;AACD,gBAAA,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AACrC,gBAAA,OAAO,UAAU,CAAC;aACnB,EAAC,EAAE,CAAC,CAAC;AAEN,YAAA,aAAa,CAAC,OAAO,CAAE,IAAI,IAAG;AAC5B,gBAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,IAAI,CAAC,QAAQ,GAAGA,EAAI,EAAE,CAAC;AACxB,iBAAA;AACD,gBAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AACnC,aAAC,CAAC,CAAA;YACJ,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,KAAK,CAAC,OAAO,CAAK,EAAA,UAAU,CAC1C,EAAA,CAAA,CAAA;AACJ,SAAC,CAAA;AAEQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,QAAgB,KAC5D,MAAM,CAAC,KAAK,EAAE,EAAC,OAAO,EAAE,EAAC,MAAM,EAAG,CAAC,QAAQ,CAAE,EAAC,EAAC,CAAC,CACjD,CAAC;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,SAAmB,KAChE,MAAM,CAAC,KAAK,EAAE,EAAC,OAAO,EAAE,EAAC,MAAM,EAAG,CAAC,GAAG,SAAS,CAAE,EAAC,EAAC,CAAC,CACrD,CAAC;QAEO,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,MACzC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,KAAK,CAAC,EAAA,EAAA,OAAO,EAAC,EAAE,EAAA,CAAA,CAAE,CAAC,CAAA;AAGjB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAC1C,GAAG,CAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAC5B,CAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,SAA+B,KAAY;AAC1D,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAE,QAAQ,KAAkD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrH,iBAAA,IAAI,CAAC,CAAC,EAAG,OAAO,EAAE,GAAG,EAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAM,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,KAAM,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;iBAC7H,GAAG,CAAC,CAAE,EAAC,GAAG,EAAE,OAAO,EAAC,MAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;AAC7E,SAAC,CAAA;AACQ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAA2C,CAAC,KAAK,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC,KAAK;AACrG,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAE,CAAC;AAC/D,YAAA,IAAG,SAAS,EAAE;gBACZ,SAAS,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,KAAK,CAAA,EAAA,EACR,MAAM,EAAE,SAAS,EACjB,CAAA,CAAA;AACJ,SAAC,CAAC,CAAC;AAEM,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,SAAgB,KAAG;AAC3D,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,KAAK,CAAA,EAAA,EACR,MAAM,EAAE,SAAS,EACjB,CAAA,CAAA;AACJ,SAAC,CAAC,CAAC;QAEH,IAAA,CAAA,eAAe,GAAG,CAAC,KAAiB,EAAE,kBAAuC,KAAiB;;AAC5F,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,YAAA,MAAM,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,kBAAkB,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,kBAAkB,CAAC,MAAM;kBACxE,KAAK,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5G,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAK,EAAA,kBAAkB,KAAE,QAAQ,EAAG,MAAM,EAAE,CAAA,CAAA;AAC9D,SAAC,CAAA;QAEQ,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,QAAgB,MAAS,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KAAC,QAAQ,EAAA,CAAA,CAAE,CAAC,CAAC;QAE/E,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,OAAO,CAAsB,IAAI,CAAC,eAAe,CAAC,CAAC;AAYtE,QAAA,IAA6B,CAAA,6BAAA,GAAG,IAAI,CAAC,OAAO,CAAE,CAAE,KAAiB,EAAE,cAAmC,KAAiB;YAC9H,MAAM,kBAAkB,GAAwB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAC,cAAc,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAC,kBAAkB,CAAC,CAAC;YACjE,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,cAAc,GAAG,mBAAmB,CAAC,eAAe,GAAG,KAAK,CAAC,mBAAmB,CAAC;AAClK,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/E,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,aAAoB,MAAU,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,EAAA,EAAA,WAAW,EAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,WAAW,KAAC,KAAK,EAAC,EAAC,KAAK,EAAC,aAAa,EAAC,EAAA,CAAA,EAAA,CAAA,CAAG,CAAC,CAAE;QAE5I,IAAA,CAAA,SAAS,GAAG,CAAC,IAAc,EAAE,KAAe,KAAc;;YACxD,OAAO;gBACH,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,WAAW;AAClD,gBAAA,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;gBAC5C,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAC,UAAU,GAAK,KAAK,CAAC,UAAU,CAAC;gBACrD,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,KAAK;gBAChC,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO;AACtC,gBAAA,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB;gBACtF,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,KAAK;AAChC,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACzC,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBACzC,UAAU,EAAE,MAAA,KAAK,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,UAAU;gBAC/C,SAAS,EAAE,MAAA,KAAK,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,SAAS;gBAC5C,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,KAAK;aACnC,CAAC;AACJ,SAAC,CAAA;AAEQ,QAAA,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,mBAAyC,KAAI;YAClG,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,EAAA,EAAA,mBAAmB,EAAE,CAAA,CAAA;AACzC,SAAC,CAAC,CAAC;AAaM,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAyB,KAAK;YACxE,MAAM,QAAQ,GAAG,CAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAClD,iBAAA,MAAM,CAAC,CAAC,IAA0B,EAAC,IAAI,KAAI;AAC1C,gBAAA,IAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,IAAI,CAAC,CAAC;AACtD,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACvB,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;aACb,EAAE,EAAE,CAAC,CAAC;AACT,YAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAG,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAA;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,GAAI,mBAAmB,CAAC,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC;AACvJ,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAE,EAAA,EAAA,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,KAAK,CAAC,WAAW,KAAC,KAAK,EAAC,KAAK,EAAG,CAAA,EAAA,CAAA,CAAA;AAC3G,SAAC,CAAC,CAAC;QAEK,IAAA,CAAA,eAAe,GAAG,CAAC,KAAgB,EAAC,GAAyB,KAAyB;YAC5F,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7F,YAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAC;AACtE,gBAAA,OAAO,EAAE,CAAA;AACV,aAAA;AACD,YAAA,OAAO,gBAAgB,CAAC;AAC1B,SAAC,CAAA;QAED,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAG;AAC3C,YAAA,MAAM,aAAa,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxD,YAAA,aAAa,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC;YAC7D,QAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,KAAK,CAAA,EAAA,EAAC,sBAAsB,EAAG,IAAI,uBAAuB,CAAC,aAAa,CAAC,EAAA,CAAA,EAAG;AAC1F,SAAC,CAAC,CAAA;QAEF,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAG;AAC3C,YAAA,MAAM,aAAa,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxD,YAAA,aAAa,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC;YAC7D,QAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,KAAK,CAAA,EAAA,EAAC,sBAAsB,EAAG,IAAI,uBAAuB,CAAC,aAAa,CAAC,EAAA,CAAA,EAAG;AAC1F,SAAC,CAAC,CAAA;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAkB,MAClD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA,CAAA,CAC/C,CAAC,CAAC;AAEJ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAkB,sCACrD,KAAK,CAAA,EAAA,EACR,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC,EAAA,CAAA,CAC/D,CAAC,CAAC;QAEJ,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAY,MAC1C,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAA,CAAA,CAC5E,CAAC,CAAA;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAE7C,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,QAA6B,KAAG;YACrE,MAAM,CAAC,mCACF,KAAK,CAAA,EAAA,EACR,sBAAsB,EAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAC9D,0BAA0B,EAAG,IAAI,0BAA0B,CAAC,QAAQ,CAAC,GACpE,CAAC;AACJ,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;QAEH,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAG;YACnC,MAAM,EAAE,GACF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,sBAAsB,GAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACxE,YAAA,OAAO,EAAE,CAAC;AACZ,SAAC,CAAC,CAAA;AAEF,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,IAAS,KAAG;AAC5C,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAA,EAAA,EAAC,QAAQ,EAAC,IAAI,EAAE,CAAA,CAAA;AAClC,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,EAAW,KAAI;AAC3B,YAAA,OAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAG;gBAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;AAAA,aAAC,CAAC,CAAA;AAAA,SAAC,CAAC;KAlUpC;IAED,eAAe,GAAA;QACb,OAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CACtB,GAAG,CAAE,CAAC,IAAG;AACP,YAAA,MAAM,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,CAAC,CAAwB,CAAC;AACnD,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,YAAA,OAAO,YAAmC,CAAC;SAC5C,CAAC,CACH,CAAC;KACH;AAQD,IAAA,MAAM,CAAC,QAAqC,EAAA;AAC1C,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAC,QAAQ,CAAC,CAAC;KAC5C;IA2KD,mBAAmB,CAAC,KAAiB,EAAC,MAA2B,EAAA;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,MAAM,KAAI;AACpJ,YAAA,GAAG,CAAC,MAAM,CAAC,QAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;AACzD,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;AACP,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,QAAA,wCAAY,MAAM,CAAA,EAAA,EAAC,OAAO,EAAC,MAAM,KAAE;KACpC;IAkCD,WAAW,CAAC,SAAgC,EAAE,IAAgC,EAAA;AAC5E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,KAAI;YACrB,IAAI,CAAC,KAAK,CAAC,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,OAAO,CAAE,IAAiC,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAC,IAAI,CAAC,CAAC;KAC3D;;AAtPU,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,kBAED,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFhC,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;8BAGc,MAAM;+BAAC,uBAAuB,CAAA;;;AAsUtC,MAAM,qBAAqB,GAAG,CAAC,KAAgB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;AAEvH,MAAM,aAAa,GAAG,CAAC,KAAgB,KAAI;AAChD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7D,IAAA,OAAO,YAAY,CAAC,MAAM;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAE3G,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,CAAC,CAAC,KAAM,GAAG,CAAC,CAAC,KAAM,CAAC,CAAA;AAClE,CAAC;;MCjVY,oBAAoB,CAAA;AAM/B,IAAA,WAAA,CAAsD,MAA0B,EAAA;AAA1B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;AALhF,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;KAQvB;IAED,QAAQ,GAAA;;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,IAAI,CAAC,MAAM,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAqB,CAAC;QACzI,IAAI,CAAC,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC;KAElE;;AAfU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAMV,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AANjC,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAfrB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,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,EAAA,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,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD,CAAA;;;8BAOe,MAAM;+BAAC,uBAAuB,CAAA;;yBAHnC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MCDO,mBAAmB,CAAA;AAIhC,IAAA,WAAA,CAAsB,KAAiB,EAAA;AAAjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAD9B,IAAA,CAAA,SAAS,GAAG,CAAC,CAAK,KAAG,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,IAAI,GAAI,CAAC,QAAmB,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KADpB;;gHAJhC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAnBtB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;GAkBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FACY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBArBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;iBACF,CAAA;8FACU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MCrBK,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,usBCPpC,q6BAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDda,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;;8BAI2B,YAAY,EAAA,CAAA;sBAA9C,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACM,gBAAgB,EAAA,CAAA;sBAAtD,SAAS;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAtD,SAAS;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACD,aAAa,EAAA,CAAA;sBAAhD,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACI,eAAe,EAAA,CAAA;sBAApD,SAAS;gBAAC,IAAA,EAAA,CAAA,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACU,eAAe,EAAA,CAAA;sBAA5D,SAAS;gBAAC,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;;;MENjC,oBAAoB,CAAA;IA8B/B,WAAY,CAAA,QAAkC,EAAE,CAAW,EAAA;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;KAC1B;IA/BD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,EAAG,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC5D,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACtE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;KAChE;AACD,IAAA,WAAW,CAAC,QAAkB,EAAA;QAE5B,IAAI,GAAG,GAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAG,QAAQ,CAAC,OAAO,EAAE;AACnB,YAAA,IAAG,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;AACxC,gBAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;AACrC,aAAA;AACF,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;iHA5BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADR,MAAM,EAAA,CAAA,CAAA;2FAClB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;MCmBnB,qBAAqB,CAAA;IAEhC,WAAoB,CAAA,GAAsB,EAAU,UAAsB,EAAA;AAAtD,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAC1E,QAAA,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;AACrB,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QAUtB,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAO,GAAC,CAAC;AAK3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAI,CAAC;AAOtB,QAAA,IAAY,CAAA,YAAA,GAAc,EAAE,CAAC;KAxBkD;AAG/E,IAAA,UAAU,CAAC,GAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAEjB,IAAG,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAE,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAID,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAOD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3D,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,EACzC,GAAG,CAAE,QAAQ,IAAG;;YACd,IAAG,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,EAAG;AACxD,gBAAA,OAAQ,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAE,CAAC,IAAS,EAAE,GAAG,KAAM,EAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAA,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7H,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAG,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAG;AACzC,oBAAA,OAAO,QAAQ,CAAC,UAAW,CAAC,OAAO,CAAC;AACrC,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE,CAAC;SACX,CAAC,CACH,CAAC;KACH;IAED,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAA;QAC7B,IAAG,MAAM,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAE,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AACrE,SAAA;AAEF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;kHAtDU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0FANrB,CAAC;AACV,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC,EAZQ,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAQU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAuB,qBAAA;AAClC,4BAAA,KAAK,EAAE,IAAI;yBACZ,CAAC;iBACH,CAAA;8HAwBU,GAAG,EAAA,CAAA;sBAAX,KAAK;;;MCnCK,mBAAmB,CAAA;AAU9B,IAAA,WAAA,CAAoB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAT1C,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AACtB,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;KAQsB;AAE9C,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACjC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,eAAe,GAAA;;QACb,IAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,EAAE;AAC5D,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO;AACR,SAAA;AACD,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS;YAC7B,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,WAAW,CAAC;YAC3B,KAAK,SAAS,CAAC,KAAK,CAAC;YACrB,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC;gBAC9C,MAAM;YACR,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;gBAC5C,MAAM;YACR,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC7C,MAAM;YACV,KAAK,SAAS,CAAC,IAAI;AACf,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;gBACxC,MAAM;YACV,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;gBAClC,MAAM;AACT,SAAA;KACF;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC;KACnI;AAED,IAAA,aAAa,CAAC,UAAsB,EAAA;AAClC,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE;YACpC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;AAChC,SAAA;KACF;AAED,IAAA,OAAO,CAAC,MAAkB,EAAA;QACxB,IAAI,MAAM,CAAC,WAAW,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC1B,SAAA;KACF;;gHAlEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASnBS,oBAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB3B,sxNA8GA,EAAA,MAAA,EAAA,CAAA,k/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDjGa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sxNAAA,EAAA,MAAA,EAAA,CAAA,k/BAAA,CAAA,EAAA,CAAA;8FAQtC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACqB,OAAO,EAAA,CAAA;sBAAjC,SAAS;uBAACT,oBAAc,CAAA;;;AEpBrB,MAAO,YAAgB,SAAQ,UAAa,CAAA;AAGhD,IAAA,WAAA,CAAoB,OAAsB,EAAA;AACxC,QAAA,KAAK,CAAC,CAAC,GAAgB,KAAI;AACzB,YAAA,MAAM,CAAC,GAAG,KAAK,CAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtD,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AAJe,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;AAFlC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAK,CAAC;AACzB,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAOjD,QAAA,IAAA,CAAA,IAAI,GAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAO,CAAA,OAAA,GAAG,CAAC,GAAG,UAAmC,KAC/C,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;KAHnD;AAIF;;MCLY,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CAAoB,QAAmB,EAAU,EAAc,EAAS,KAAiB,EAAA;AAArE,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAAU,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAmFzF,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,IAAgB,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC,CAAA;KAnF1B;IAE/F,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,EAAC;YACjB,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;AAE/D,YAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAC,UAAU,EAAC,KAAK,CAAC,CAAA;AAEpG,YAAA,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CACtD,MAAM,CAAC,CAAC,EAAC,SAAS,EAAC,KAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAC1C,GAAG,CAAE,CAAC,EAAC,aAAa,EAAC,SAAS,EAAC,KAAI;AAC/B,gBAAA,MAAM,EAAC,aAAa,EAAC,cAAc,EAAC,GAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAC,SAAS,CAAC,CAAA;AACxF,gBAAA,QAAQ;oBACN,GAAG,EAAC,IAAI,CAAC,GAAG;AACZ,oBAAA,YAAY,EAAC,cAAc;AAC3B,oBAAA,SAAS,EAAC,aAAa;AACxB,iBAAA,EAAC;AACJ,aAAC,CAAC,EACJ,kBAAkB,EAAE,CACrB,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CACjD,GAAG,CAAC,UAAU,KAAK,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAC/E,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAC3C,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC;AAC9C,SAAA;KAEF;AAED,IAAA,6BAA6B,CAAC,UAAsB,EAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAC,YAAY,CAAC;AACrC,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAC,MAAM,CAAC;AACpC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAC,MAAM,CAAC;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAC,MAAM,CAAC;AAC/B,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAC,UAAU,CAAC;AACrC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAC,GAAG,CAAC;AAC3B,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAC,GAAG,CAAC;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,iCAAiC,GAAA;AAC/B,QAAA,MAAM,UAAU,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,QAAQ,EAAC,KAAK,EAAC,UAAU,EAAC,EAAC;KAC5B;AAED,IAAA,iCAAiC,CAAC,OAAmB,EAAE,UAAsB,EAAE,KAAiB,EAAA;QAC9F,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAC,UAAU,EAAC,KAAK,CAAC;AAChE,aAAA,IAAI,CACH,SAAS,CAAE,aAAa,IAAI,SAAS,CAAa,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,CACxE,GAAG,CAAE,SAAS,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,CAAC,CAAC,EAC/C,SAAS,CAAC,SAAS,CAAa,QAAQ,EAAE,SAAS,CAAC,CAAC,CACtD,CAAE,CACJ,CAAA;KACF;AACD,IAAA,2BAA2B,CAAC,OAAmB,EAAE,UAAsB,EAAE,KAAiB,EAAA;AACxF,QAAA,OAAO,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACrD,GAAG,CAAC,KAAK,KAAK;YACZ,UAAU,EAAE,KAAK,CAAC,KAAK;AACvB,YAAA,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAClD,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;SAC7C,CAAC,CAAC,CACJ,CAAC;KACH;IAED,kBAAkB,CAAC,aAA2B,EAAC,SAAoB,EAAA;QACjE,MAAM,MAAM,IAAI,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC,UAAU,CAAE,CAAC;AAC7D,QAAA,IAAI,cAAc,GAAG,aAAa,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC7D,IAAG,cAAc,GAAG,CAAC,EAAC;YACpB,cAAc,GAAG,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC,gBAAgB,CAAC;QACrE,MAAM,aAAa,IAAI,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;AACrE,QAAA,QAAQ,EAAC,aAAa,EAAC,cAAc,EAAC,EAAC;KACxC;;kHAtFU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;iBAC3B,CAAA;+IAEwB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,cAAc,CAAA;gBAEZ,GAAG,EAAA,CAAA;sBAAX,KAAK;;;MCPK,eAAe,CAAA;IAC1B,SAAS,CAAC,IAAW,EAAE,QAAkB,EAAA;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;AAC9E,QAAA,QAAQ,QAAQ,CAAC,UAAW,CAAC,MAAO,CAAC,IAAI;AACvC,YAAA,KAAK,KAAK;gBACV,OAAO,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;4GARU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;0GAAf,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;;;MC+BhB,sBAAsB,CAAA;IAgBjC,WACU,CAAA,gBAAkC,EAClC,KAAoB,EACrB,KAAiB,EAChB,eAAqC,EACnC,QAAkB,EAAA;AAJpB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;AACrB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAChB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAsB;AACnC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AApB9B,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QA0EtB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC,wBAAwB,EAAE,uBAAuB,CAAoB,KAAiB;AAEjG,YAAA,IAAI,uBAAuB,EAAE;AAC3B,gBAAA,QAAQ,EAAC,IAAI,EAAC,CAAO,IAAA,EAAA,uBAAuB,CAAI,EAAA,CAAA,EAAE,QAAQ,EAAC,MAAM,EAAC,EAAE;AACrE,aAAA;YAAC,IAAI,QAAQ,EAAE,EAAE;AAChB,gBAAA,QAAQ,EAAC,IAAI,EAAC,GAAG,EAAC,EAAE;AACrB,aAAA;YACD,QAAQ,EAAE,EAAE;AACZ,YAAA,SAAS,QAAQ,GAAA;AACf,gBAAA,OAAO,wBAAwB,IAAG,CAAC,IAAI,uBAAuB,IAAI,IAAI,CAAC;aACxE;AACH,SAAC,CAAA;KAhEM;IAEP,gBAAgB,GAAA;;AACd,QAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,0CAAE,WAAW;AAAG,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QACtE,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxD;IAED,gBAAgB,GAAA;;AACd,QAAA,OAAO,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,mCAAI,IAAI,CAAC,YAAY,CAAC;KACxE;IAGD,QAAQ,GAAA;;QACN,IAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,EAAE;AACjD,YAAA,IAAI,CAAC,OAAO,GACV,MAAA,CAAA,MAAA,CAAA,EAAA,CAAC,mBAAmB,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAC/D,EAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CACzB,CAAA;AACF,SAAA;AACI,aAAA;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtC,SAAA;QACD,IAAI,CAAC,MAAM,GAAG,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAC,CAAC;AAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CACpE,kBAAkB,CAAC,CAAC,CAAC,EACrB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CACnB,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAG;;AACrC,YAAA,MAAM,MAAM,GAAc;AACxB,gBAAA,MAAM,gDAAO,cAAc,CAAA,EAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,0CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,EAAK,KAAK,CAAC;AAC5F,gBAAA,MAAM,gDAAM,cAAc,CAAA,EAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,0CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,EAAK,KAAK,CAAC;AAC3F,gBAAA,IAAI,gDAAM,cAAc,CAAA,EAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,0CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,EAAK,KAAK,CAAC;aACxF,CAAC;AACF,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpI;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzC;IAED,WAAW,CAAC,OAAY,EAAE,GAAW,EAAA;AACnC,QAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAC,GAAG,CAAC,CAAC;AAClC,SAAA;KACF;;mHAzEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmB,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAQtB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAAC,kBAAY,EC3CzB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2hGAkEA,EDnCiB,MAAA,EAAA,CAAA,ifAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,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,EAAA,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,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,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,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,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,aAAA,EAAA;AACb,QAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE;KACrD,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA;AACb,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE;qBACrD,EAAA,QAAA,EAAA,2hGAAA,EAAA,MAAA,EAAA,CAAA,ifAAA,CAAA,EAAA,CAAA;gNAKQ,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEmB,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAACN,kBAAY,CAAA;gBAKJ,YAAY,EAAA,CAAA;sBAA9B,SAAS;uBAAC,MAAM,CAAA;;;AE7Cb,MAAO,4BAAgC,SAASO,wBAAqB,CAAA;AAEzE,IAAA,WAAA,CAAoB,OAAwB,EAAA;QAC1C,KAAK,CAAC,EAAE,CAAC,CAAC;AADQ,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;KAE3C;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAE,CAAC;AACxE,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;KACxB;IACD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC/B,SAAA;QACD,KAAK,CAAC,UAAU,EAAE,CAAC;KACpB;AACF;;ACjBe,SAAA,QAAQ,CAAI,IAAS,EAAE,MAAc,EAAA;AACnD,IAAA,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAkB,CAAE,CAAC,CAAC;AAC1F;;ACAM,SAAU,WAAW,CAAC,IAAa,EAAA;IACrC,OAAO,KAAK,CAAC,OAAO,CAAE,IAA4B,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAEK,MAAO,sBAA0B,SAAQ,4BAA+B,CAAA;AAG5E,IAAA,WAAA,CAAY,OAAwB,EAAA;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAS,EAAE,IAAc,KAAK,WAAW,CAAC,IAAI,CAAC,GAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;KACzH;AACF;;MCMY,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,CAAoB,KAAkB,EAAA;AAAlB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;AA0BtC,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KA1BoB;IACzC,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC;KAE1G;IACD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,EACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,uBAAuB,CAAC,QAAQ,CAAC,EACjC,2BAA2B,EAC3B,GAAG,CAAC,0CAA0C,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACnE,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAG,CAAC,IAAI,CAAC,YAAY,EAAC;YACpB,UAAU,CAAC,MAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;AACvE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3B,SAAA;KACF;;+GAjCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGlB+B,kBAAY,EAdb,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;GAOT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0pBAAA,EAAA,8NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAIU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACd,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0pBAAA,EAAA,8NAAA,CAAA,EAAA,CAAA;8FAGtC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACqC,SAAS,EAAA,CAAA;sBAAnD,SAAS;gBAAC,IAAA,EAAA,CAAAyB,kBAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGhC,KAAK,EAAA,CAAA;sBAAb,KAAK;;AAgCR,MAAM,sCAAsC,GAAG,CAAC,QAAmB,MAAyB;IAC1F,YAAY,EAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC;IAC3D,UAAU,EAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE;IACvF,KAAK,EAAG,QAAQ,CAAC,MAAM;AACxB,CAAA,CAAC,CAAC;AAEH,MAAM,0CAA0C,GAAG,CAAC,SAAsB,KAAK,OAAO,EAAC,YAAY,EAAC,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC;IAChJ,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AACzF,IAAA,KAAK,EAAC,SAAS,CAAC,MAAM,EAAC,CAAC,CAAA;AAE1B,MAAM,2BAA2B,GAAGC,OAAK,CAAQ,CAAC,EAAC,cAAc,CAAC,CAAC;AAQnE,MAAM,sBAAsB,GAAG,CAAC,KAAgB,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,CAAC;AAEhH,MAAM,oBAAoB,GAAG,CAAC,SAAsB,KAAK,CAAC,QAAgB,KACxE,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAEtC,MAAM,yBAAyB,GAAG,CAAC,SAAuB,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,CAAC;;MCrDzG,qBAAqB,CAAA;AA4ChC,IAAA,WAAA,CACU,IAAa,EACd,KAAiB,EAChB,aAA+B,EACvC,QAAkB,EAAA;AAHV,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;AACd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAChB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAvChC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAGxB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAyB1B,QAAA,IAAI,CAAA,IAAA,GAAc,EAAE,CAAC;AAErB,QAAA,IAAS,CAAA,SAAA,GAAoB,EAAE,CAAC;AAChC,QAAA,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;AACvB,QAAA,IAAS,CAAA,SAAA,GAAuC,EAAE,CAAC;QAgBnD,IAAA,CAAA,eAAe,GAAG,CAAC,KAAY,EAAE,IAAS,KAAI;YAC5C,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAA;AA0ED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,IAAqB,KAAG;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;gBACf,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/I,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAA;QAED,IAAS,CAAA,SAAA,GAAyB,IAAI,cAAc,CAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAA,CAAA,UAAU,GAAoB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC/D,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACxG,QAAA,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAe/G,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CACnD,kBAAkB,CAAqB,CAAC,CAAC,EACzC,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,KAAI;AAC1D,YAAA,IAAI,uBAAuB,EAAC;gBAC1B,QAAQ,EAAC,KAAK,EAAC,GAAG,uBAAuB,CAAA,EAAA,CAAI,EAAC,EAAE;AACjD,aAAA;YAAC,IAAI,QAAQ,EAAE,EAAE;AAChB,gBAAA,QAAQ,EAAC,KAAK,EAAC,SAAS,EAAC,EAAE;AAC5B,aAAA;YACD,QAAQ,EAAE,EAAE;AAEZ,YAAA,SAAS,QAAQ,GAAA;AACf,gBAAA,OAAO,CAAC,wBAAwB,KAAxB,IAAA,IAAA,wBAAwB,cAAxB,wBAAwB,GAAI,CAAC,KAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI,CAAC;aAC/E;SACF,CAAC,CACH,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC;QArIlG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE;AAC3C,gBAAA,EAAC,OAAO,EAAEC,cAAQ,EAAE,UAAU,EAAE,MAAM,EAAA,OAAO,IAAI,CAAC,KAAK,CAAA,EAAC,EAAE;AAC1D,gBAAA,EAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAA,EAAC,EAAE;AACjE,aAAA,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;KACvB;AApDD,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAC,QAAQ,EAAC,KAAK,CAAC,YAAY,EAAC,QAAQ,EAAC,KAAK,CAAC,aAAa,EAAC,CAAC,CAAA;KAC3F;IAaD,IAAa,WAAW,CAAC,GAAY,EAAA;;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;AACxB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,MAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,aAAA;AACF,SAAA;KACF;IACD,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;AAqC/C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACtD,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAA;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,IAAG;AACxC,YAAA,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,IAAG;;AACjD,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACzD,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAClG;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAE,CAAC,CACrD,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,SAAA;KACF;IAED,aAAa,CAAC,CAAS,EAAE,GAA+B,EAAA;QACtD,OAAO,GAAG,CAAC,aAAa,CAAC;KAC1B;IAED,aAAa,CAAC,CAAS,EAAE,GAA+B,EAAA;QACtD,OAAO,GAAG,CAAC,aAAa,CAAC;KAC1B;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,iCACjB,KAAK,CAAA,EAAA,EACR,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,IAC7B,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,MAAkB,EAAA;AAC5B,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxD,QAAA,IAAG,aAAa,EAAE;AAChB,YAAA,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,SAAA;AAAM,aAAA;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,sBAAsB,EAAE;AAC3E,gBAAA,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YAClD,SAAS,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC9C,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC1D,SAAA;KACF;IAkBD,aAAa,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,OAAO,WAAW,KAAK,OAAO,CAAC;KAChC;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAClD;;kHAtKU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAmC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,gaAgCrBD,cAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACR,WAAW,EACK,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,kDCrEvC,mtGA6EA,EAAA,MAAA,EAAA,CAAA,0pBAAA,EAAA,8NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,EAAA,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,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,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,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,EAAAW,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD1Ca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mtGAAA,EAAA,MAAA,EAAA,CAAA,0pBAAA,EAAA,8NAAA,CAAA,EAAA,CAAA;4KAStC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAGO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAciC,KAAK,EAAA,CAAA;sBAA3C,SAAS;gBAAC,IAAA,EAAA,CAAA2B,cAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACK,QAAQ,EAAA,CAAA;sBAAjD,SAAS;gBAAC,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACA,UAAU,EAAA,CAAA;sBAAjD,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC,CAAA;gBAqH5B,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;AEtLT;AACA;AACA;AACA;AACA;MAIa,mBAAmB,CAAA;IAO5B,WACuB,CAAA,WAA6B,EAC/B,SAAuB,EAAA;AADrB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AAC/B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AAExC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;KACtC;IACD,kBAAkB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,SAAA;KACF;AAED,IAAA,WAAW,CAAC,QAAoB,EAAA;;QAC9B,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,UAAU;AACpB,YAAA,WAAW,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,WAAW;AACtD,YAAA,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,OAAO;AAC1C,YAAA,SAAS,EAAE,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,SAAS,CAAC,OAAO;AACpD,YAAA,KAAK,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK;AAC9C,YAAA,uBAAuB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;AACtC,YAAA,KAAK,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK;AAC9C,YAAA,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,CAAC,QAAQ;SACpB,CAAC;KACH;;gHA/BQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAlC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;iBAC3B,CAAA;;;8BASM,QAAQ;;8BACR,QAAQ;;yBARF,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;MCLG,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAAqB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACzC,GAAG,CAAE,KAAK,IACR,qBAAqB,CAAC,KAAK,CAAC;AACzB,aAAA,GAAG,CAAE,EAAE,KAAK;YACX,GAAG,EAAE,EAAE,CAAC,GAAG;YACX,WAAW,EAAE,EAAE,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;SAC9C,CAAC,CAAC,CACN,CACF,CAAC;KACH;AAED,IAAA,KAAK,CAAC,WAAyB,EAAA;AAC7B,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAC,QAAQ,EAAC,KAAK,CAAC,YAAY,EAAC,QAAQ,EAAC,KAAK,CAAC,aAAa,EAAC,CAAC,CAAA;KAChG;AACD,IAAA,KAAK,CAAC,WAAyB,EAAA;AAC7B,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,IAAI,CAAC,WAAyB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,KAAK,EAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,CAAC;KAC/F;;qHA7BU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,wDCbrC,mzEA2DA,EAAA,MAAA,EAAA,CAAA,ilBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,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,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,EAAAA,EAAA,CAAA,OAAA,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,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,EAAAwB,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD9Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mzEAAA,EAAA,MAAA,EAAA,CAAA,ilBAAA,CAAA,EAAA,CAAA;;;AEN3C,MAAO,kBAAoB,SAAQ,cAA4C,CAAA;AACnF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,EAAC,UAAU,EAAC,EAAE,EAAC,CAAC,CAAC;AAGzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAK,EAAC,UAAU,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC;AAC/C,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,KAAY,KAAG;YACjD,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAClC,YAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACrB,YAAA,OAAO,EAAC,UAAU,EAAC,GAAG,EAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEH,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEnE,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,MAAoB,KAAG;AACrD,YAAA,QAAY,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,EAAA,EAAA,UAAU,EAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAC,MAAM,CAAC,KAAG;AAC9D,SAAC,CAAC,CAAA;KAbD;;+GAHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCSE,2BAA2B,CAAA;IAEtC,WAAoB,CAAA,UAAsB,EAAS,WAAgC,EAAA;AAA/D,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAS,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAqB;QACjF,IAAI,CAAC,WAAW,GAAI,UAAU,CAAC,cAAc,CAAC,IAAI,CAChD,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAE,EAAE,CAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChG,CAAC;KACH;AAIC,IAAA,SAAS,CAAC,QAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAC,CAAC,CAAC;KAChF;;wHAZQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,2DCbxC,gbAQA,EAAA,MAAA,EAAA,CAAA,2cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA+B,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDKa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gbAAA,EAAA,MAAA,EAAA,CAAA,2cAAA,CAAA,EAAA,CAAA;;;MEAtC,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOI,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;KAG3B;;gHAJY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECXhC,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yyCAwBA,EDfmB,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAExD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAET,eAAA,EAAA,uBAAuB,CAAC,MAAM,iBAChC,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAA,QAAA,EAAA,yyCAAA,EAAA,CAAA;8BAIxD,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MEEG,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CAAoB,GAAsB,EAAA;AAAtB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAJ1C,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AAEtB,QAAA,IAAA,CAAA,KAAK,GAAU,CAAC,SAAS,CAAC,CAAC;QAU3B,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAO,GAAC,CAAC;AAK3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAI,CAAC;AAZpB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;KAC1B;AACD,IAAA,UAAU,CAAC,GAAU,EAAA;QACnB,IAAG,EAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,CAAA;AAAE,YAAA,GAAG,GAAI,CAAC,SAAS,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAGD,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AACD,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,aAAa,CAAC,CAAQ,EAAC,KAAsB,EAAA;QAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;8GA5CU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kEANjB,CAAC;AACV,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,iBAAiB;AAC9B,YAAA,KAAK,EAAE,IAAI;SACZ,CAAC,0BCdJ,04BAaA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAmB,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDGa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,aACnC,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAmB,iBAAA;AAC9B,4BAAA,KAAK,EAAE,IAAI;yBACZ,CAAC,EAAA,QAAA,EAAA,04BAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;wGAIO,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEJK,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AAAC,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;KAGhD;;kHAJY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ECdlC,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+gCAqBA,EDTiB,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAEtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,iBAChC,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAA,QAAA,EAAA,+gCAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,CAAA;8BAIxD,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEFK,eAAe,CAAA;AAO1B,IAAA,WAAA,CAAoB,KAAiB,EAAA;AAAjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AANrC,QAAA,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AACxB,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AAEZ,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;KAEK;;IAE1C,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;KACjD;IACD,OAAO,CAAC,MAAkB,EAAE,KAAU,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AACnD,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACnB,SAAA;KACF;;4GAlBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4GCf5B,ipIA8EA,EAAA,MAAA,EAAA,CAAA,mQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD/Da,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ipIAAA,EAAA,MAAA,EAAA,CAAA,mQAAA,CAAA,EAAA,CAAA;8FAMxC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,KAAK,EAAA,CAAA;sBAAd,MAAM;;;MEgFI,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAjEvBC,0BAAoB;QACpBC,oBAAc;QACdC,qBAAe;QACfC,qBAAe;QACf,mBAAmB;QACnBC,oBAAc;QACdC,qBAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,gBAAgB;QAChBC,sBAAgB;QAChB,mBAAmB;QACnBC,uBAAiB;QACjBC,8BAAwB;QACxBC,mBAAa;QACb,iBAAiB;QACjBC,mBAAa;QACb,gBAAgB;QAChBC,mBAAa;QACbC,oBAAc;QACdD,mBAAa;QACbE,uBAAiB;QACjBC,mBAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACbC,2BAAqB;QACrBC,wBAAkB;QAClBC,oBAAc;AACd,QAAAd,qBAAe,aAGbH,0BAAoB;QACpBC,oBAAc;QACdC,qBAAe;QACfC,qBAAe;QACf,mBAAmB;QACnBC,oBAAc;QACdC,qBAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,gBAAgB;QAChBC,sBAAgB;QAChB,mBAAmB;QACnBC,uBAAiB;QACjBC,8BAAwB;QACxBC,mBAAa;QACb,iBAAiB;QACjBC,mBAAa;QACb,gBAAgB;QAChBC,mBAAa;QACbC,oBAAc;QACdD,mBAAa;QACbE,uBAAiB;QACjBC,mBAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACbC,2BAAqB;QACrBC,wBAAkB;QAClBC,oBAAc;QACdd,qBAAe,CAAA,EAAA,CAAA,CAAA;AAIR,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAjEvBH,0BAAoB;QACpBC,oBAAc;QACdC,qBAAe;QACfC,qBAAe;QACf,mBAAmB;QACnBC,oBAAc;QACdC,qBAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,gBAAgB;QAChBC,sBAAgB;QAChB,mBAAmB;QACnBC,uBAAiB;QACjBC,8BAAwB;QACxBC,mBAAa;QACb,iBAAiB;QACjBC,mBAAa;QACb,gBAAgB;QAChBC,mBAAa;QACbC,oBAAc;QACdD,mBAAa;QACbE,uBAAiB;QACjBC,mBAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACbC,2BAAqB;QACrBC,wBAAkB;QAClBC,oBAAc;AACd,QAAAd,qBAAe,EAGbH,0BAAoB;QACpBC,oBAAc;QACdC,qBAAe;QACfC,qBAAe;QACf,mBAAmB;QACnBC,oBAAc;QACdC,qBAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,gBAAgB;QAChBC,sBAAgB;QAChB,mBAAmB;QACnBC,uBAAiB;QACjBC,8BAAwB;QACxBC,mBAAa;QACb,iBAAiB;QACjBC,mBAAa;QACb,gBAAgB;QAChBC,mBAAa;QACbC,oBAAc;QACdD,mBAAa;QACbE,uBAAiB;QACjBC,mBAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACbC,2BAAqB;QACrBC,wBAAkB;QAClBC,oBAAc;QACdd,qBAAe,CAAA,EAAA,CAAA,CAAA;2FAIR,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnE1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACPH,0BAAoB;wBACpBC,oBAAc;wBACdC,qBAAe;wBACfC,qBAAe;wBACf,mBAAmB;wBACnBC,oBAAc;wBACdC,qBAAe;wBACf,kBAAkB;wBAClB,gBAAgB;wBAChB,gBAAgB;wBAChBC,sBAAgB;wBAChB,mBAAmB;wBACnBC,uBAAiB;wBACjBC,8BAAwB;wBACxBC,mBAAa;wBACb,iBAAiB;wBACjBC,mBAAa;wBACb,gBAAgB;wBAChBC,mBAAa;wBACbC,oBAAc;wBACdD,mBAAa;wBACbE,uBAAiB;wBACjBC,mBAAa;wBACb,aAAa;wBACb,cAAc;wBACd,aAAa;wBACbC,2BAAqB;wBACrBC,wBAAkB;wBAClBC,oBAAc;wBACdd,qBAAe;AAChB,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACPH,0BAAoB;wBACpBC,oBAAc;wBACdC,qBAAe;wBACfC,qBAAe;wBACf,mBAAmB;wBACnBC,oBAAc;wBACdC,qBAAe;wBACf,kBAAkB;wBAClB,gBAAgB;wBAChB,gBAAgB;wBAChBC,sBAAgB;wBAChB,mBAAmB;wBACnBC,uBAAiB;wBACjBC,8BAAwB;wBACxBC,mBAAa;wBACb,iBAAiB;wBACjBC,mBAAa;wBACb,gBAAgB;wBAChBC,mBAAa;wBACbC,oBAAc;wBACdD,mBAAa;wBACbE,uBAAiB;wBACjBC,mBAAa;wBACb,aAAa;wBACb,cAAc;wBACd,aAAa;wBACbC,2BAAqB;wBACrBC,wBAAkB;wBAClBC,oBAAc;wBACdd,qBAAe;AAChB,qBAAA;iBAEJ,CAAA;;;ACtFK,MAAO,kBAAmB,SAAQ,OAAO,CAAA;AAG7C,IAAA,WAAA,CAAoB,KAAiB,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;AADU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAFrC,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAIjB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CACX,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,KAAK,IAAG;AACN,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,aAAA;AAED,YAAA,IAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;gBACjG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,aAAA;AAEH,SAAC,CACF,CAAC;KACH;;+GAzBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlD,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAJlB,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACtD,KAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;oBACrB,MAAM,EAAE,CAAC,2BAA2B,CAAC;AACrC,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,oBAAoB,EAAE;AACtD,qBAAA;iBACF,CAAA;;;ACID,MAAM,MAAM,GAAG;IACb,2BAA2B;IAC3B,oBAAoB;CACrB,CAAC;MAMoB,0BAA0B,CAAA;AAHhD,IAAA,WAAA,GAAA;AAME,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;KAGd;;uHAPqB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAH/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,GAAG;iBACd,CAAA;;AAeQ,MAAO,oBAAqB,SAAQ,cAA0B,CAAA;IAErE,WAAmC,CAAA,KAAgB,EAAc,OAA8B,EAAA;AAC7F,QAAA,KAAK,EAAE,CAAC;AADyB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;AAmBnD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAMb,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AACd,QAAA,IAAW,CAAA,WAAA,GAAQ,IAAI,CAAC;AAajC,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AACb,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEd,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAzCjB,QAAA,IAAG,OAAO,EAAE;AACV,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;AACD,QAAA,IAAG,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,CAAE,MAAK;gBAChB,OAAO,KAAK,CAAC,YAAa,CAAC,IAAI,CAC7BiE,KAAG,CAAE,GAAG,IAAG;AACT,oBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;oBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;iBACf,CAAC,CACH,CAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;KACF;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;KAC9B;AAUD,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAG,IAAI,CAAC,KAAK,EAAE;YACb,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACzB,EAAE,CAAC,CAAC,CAAC;AACP,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,SAAA;KACF;AAQD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,QAAQ,GAAA;AACN,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAGnE,EAAI,EAAE,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAES,IAAA,SAAS,CAAC,MAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACvB;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AACrD,gBAAA,mBAAmB,EAAE,IAAI;AAC1B,aAAA,CACF,CAAC;AAEH,SAAA;KACF;;iHA/Ea,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAmE,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAFnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;iBACvB,CAAA;;;8BAEc,QAAQ;;8BAAiC,QAAQ;;yBAqBrD,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;AA+DC,MAAO,kCAAmC,SAAQ,oBAAoB,CAAA;IAC7E,WAAyB,CAAA,KAAgB,EAAc,OAA8B,EAAA;AACnF,QAAA,KAAK,CAAC,KAAK,EAAC,OAAO,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAE,MAAK;YAChB,OAAO,KAAK,CAAC,YAAa,CAAC,IAAI,CAC7BD,KAAG,CAAE,GAAG,IAAG;AACT,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC,CACH,CAAA;AACH,SAAC,CAAC,CAAA;KACH;IAEQ,KAAK,GAAA;QACZ,IAAG,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACpB,SAAA;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AAEQ,IAAA,SAAS,CAAC,MAAkB,EAAA;QACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;AACvD,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAG,OAAO,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;AACnD,SAAA;AACD,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC5B;;+HAhCa,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAmE,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mHAAlC,kCAAkC,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,CAAA,wBAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAPrC,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAOjF,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBATjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAoC,kCAAA,EAAE,CAAC;AAC/F,oBAAA,MAAM,EAAE;wBACN,4BAA4B;wBAC5B,yBAAyB;wBACzB,oBAAoB;wBACpB,gBAAgB;AACjB,qBAAA;iBACF,CAAA;;;8BACc,QAAQ;;8BAAuB,QAAQ;;;AAqChD,MAAgB,8BAAwC,SAAQ,0BAA6B,CAAA;AAHnG,IAAA,WAAA,GAAA;;AAeE,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AACzB,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;KAmCf;IAzCC,IAA6B,SAAS,CAAE,GAAiB,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,EAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC;KAC9B;AAKD,IAAA,MAAM,CAAC,GAA0B,EAAA;QAC/B,IAAG,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,MAAM,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,MAAM,CAAA,EAAI,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;KACF;IAED,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAG,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC;AAC3B,SAAA;KACF;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,QAAQ,GAAA;AACN,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAGpE,EAAI,EAAE,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjD;;2HA/CmB,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA9B,8BAA8B,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAHnD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;8BAKU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGuB,SAAS,EAAA,CAAA;sBAArC,KAAK;uBAAC,gBAAgB,CAAA;gBAeV,MAAM,EAAA,CAAA;sBAAlB,KAAK;;AA6BF,MAAgB,yBAAoC,SAAQ,8BAAiC,CAAA;AAGjG,IAAA,WAAA,CAA8B,MAAuB,EAAU,QAAuB,EAAc,OAA8B,EAAA;AAChI,QAAA,KAAK,EAAE,CAAC;AADoB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;QAWtF,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC,CAAC;AAT3C,QAAA,IAAG,OAAO,EAAE;AACV,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAACqE,WAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAE,MAAK;AAChE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;;sHAzBmB,yBAAyB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;;;8BAIiF,QAAQ;;;AAyBnG;AAQM,MAAO,4BAA6B,SAAQ,yBAAyB,CAAA;IAMzE,WAAoB,CAAA,WAAwB,EAAc,OAA8B,EAAA;AACtF,QAAA,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAD5C,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAE3C;IAND,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC;AAC/B,QAAA,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;KACpB;;yHALU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAA5B,4BAA4B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAF5B,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEpF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,MAAM;AACV,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAA8B,4BAAA,EAAE,CAAC;iBAChG,CAAA;;;8BAOgD,QAAQ;;;AAanD,MAAO,+BAAyC,SAAQ,yBAA4B,CAAA;IAKxF,WAAoB,CAAA,cAA8B,EAAc,OAA8B,EAAA;AAC5F,QAAA,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,cAAc,CAAC,OAAO,EAAC,OAAO,CAAC,CAAC;AADjD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAEjD;IAND,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;AAClC,QAAA,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;KACpB;IAKD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;;4HAXU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxD,IAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwD,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAA/B,+BAA+B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAF/B,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEvF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,MAAM;AACV,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAiC,+BAAA,EAAE,CAAC;iBACnG,CAAA;;;8BAMsD,QAAQ;;;AAS/D;AAMM,MAAO,+BAAgC,SAAQ,yBAAyB,CAAA;IAM5E,WAAoB,CAAA,cAA8B,EAAc,OAA8B,EAAA;AAC5F,QAAA,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AADlD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAEjD;IAND,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;AAClC,QAAA,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;KACpB;IAKD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;;4HAZU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAA/B,+BAA+B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,SAAA,EAF/B,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEvF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,MAAM,EAAE,CAAC,2BAA2B,CAAC;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAiC,+BAAA,EAAE,CAAC;iBACnG,CAAA;;;8BAOsD,QAAQ;;;AAS/D;AAQM,MAAO,0BAA2B,SAAQ,yBAAyB,CAAA;IAUvE,WAAoB,CAAA,SAAoB,EAAc,OAA8B,EAAA;QAClF,KAAK,CAAE,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAACD,KAAG,CAAE,CAAC,IAAG;AAC/C,YAAA,IAAG,CAAC,SAAS,CAAC,KAAK,EAAE;AACnB,gBAAA,SAAS,CAAC,KAAK,GAAGnE,EAAI,EAAE,CAAC;AAC1B,aAAA;AACH,SAAC,CAEA,CAAC,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAPrB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KAQvC;IAhBD,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAG,GAAG,EAAE;AACN,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACzB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;KACpB;IAWD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;;uHAtBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAsD,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAF1B,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAElF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,MAAM;AACV,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAA4B,0BAAA,EAAE,CAAC;iBAC9F,CAAA;;;8BAW4C,QAAQ;;;AAerD;AAQM,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;IAK3E,WAAoB,CAAA,eAAgC,EAAc,OAA8B,EAAA;AAC9F,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC,OAAO,EAAC,OAAO,CAAC,CAAC;AADnD,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAEnD;IAND,IAAa,MAAM,CAAC,GAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,QAAA,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;KACpB;IAKD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;;2HAXU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArD,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA9B,8BAA8B,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAF9B,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEtF,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,MAAM;AACV,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAgC,8BAAA,EAAE,CAAC;iBAClG,CAAA;;;8BAMwD,QAAQ;;;;MC7VpD,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAc,CAAA,cAAA,GAA4D,EAAE,CAAC;KAK9E;AAHC,IAAA,QAAQ,CAAC,MAAyD,EAAA;AAChE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;;kHARU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EACf,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAC1B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAF1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;iBACxB,CAAA;8BAEmE,aAAa,EAAA,CAAA;sBAA9E,eAAe;gBAAC,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBACJ,OAAO,EAAA,CAAA;sBAAlE,eAAe;gBAAC,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;;;MCH/C,UAAU,CAAA;AAErB,IAAA,WAAA,CAAoB,QAAoD,EAAA;AAApD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4C;KACvE;IAED,MAAM,CAAC,IAAW,EAAE,OAAqC,EAAA;QACvD,OAAO,IAAI,CAAC,MAAM,CAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;KAC5D;AAED,IAAA,UAAU,CAAC,KAAsB,EAAA;QAC/B,OAAO,aAAa,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EACpD,WAAW,CAAC,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAC7C,CAAC;KACH;AAED,IAAA,aAAa,CAAC,QAAoD,EAAA;;AAChE,QAAA,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC;AAClC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK;;;iBAG3B,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAE;iBACjC,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAA,CAAC,CAAC,CAAC;KACL;AACF;;SC/Be,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAA;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,IAAA,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,IAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,IAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACpC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,YAAY,CAAC,KAAK,EAAE,CAAC;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACxC,IAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B;;MCIa,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CACS,KAAiB,EACiB,MAA0B,EAC3D,QAAkB,EAAA;AAFnB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACiB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;AAC3D,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,IAAqB,KAAI;AACtC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC9C,GAAG,CAAC,mBAAmB,CAAC,CACzB,CAAC;YAEF,aAAa,CAAC,CAAC,IAAI,EAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC1CE,OAAK,EAAE,EACP,GAAG,CAAC,CAAC,CAAC,IAAI,EAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC,CAClD,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAC,YAAY,EAAC,UAAU,CAAC,CAAE,CAAC;AACjE,SAAC,CAAA;QAED,IAAA,CAAA,OAAO,GAAG,CAAC,IAAa,EAAE,QAAuB,KAAI;AACnD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,SAAC,CAAA;QAED,IAAA,CAAA,WAAW,GAAG,CAAC,IAAiB,EAAE,GAAM,KAAI;;YAC1C,IAAI,GAAG,GAAQ,GAAG,CAAE,GAAG,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,YAAA,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,gBAAA,OAAO,GAAG,CAAA;YAC9C,IAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,EAAC;AAC3D,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAgB,CAAC;gBACxC,OAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACvE,aAAA;YACD,QAAQ,IAAI,CAAC,SAAS;gBACpB,KAAK,SAAS,CAAC,IAAI;AACjB,oBAAA,MAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAA,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAA,CAAC;oBACzH,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,SAAS,CAAC,MAAM;oBACnB,MAAM,OAAO,GAAW,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,IAAI,EAAE,CAAC;AAC/F,oBAAA,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;oBACpB,MAAM;gBACR,KAAK,SAAS,CAAC,KAAK;AAClB,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAA6B,CAAC;AACtD,oBAAA,GAAG,GAAI,GAAqB,CAAC,KAAK,CAAC,CAAC,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;oBACxH,MAAM;gBACR,KAAK,SAAS,CAAC,UAAU;AACvB,oBAAA,GAAG,GAAI,IAAI,CAAC,SAAiB,CAAC,GAAG,CAAC,CAAC;oBACnC,MAAM;AACT,aAAA;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC7F,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,gBAAA,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACvB,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAA;KAhDE;IAkDK,SAAS,CAAC,GAAQ,EAAE,UAAe,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACxE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC;AACvD,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KACjD;;AA5DU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,yCAGnB,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAHtB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;8BAIN,MAAM;+BAAC,uBAAuB,CAAA;;;AA4D5B,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAE,YAAsB,KAE1E,aAAa,CAAC,KAAK,CAAC;AACnB,KAAA,MAAM,CAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAG9C,MAAM,mBAAmB,GAAG,CAAC,KAAiB,KAAK,MAAM,CAAC,MAAM,CAAE,KAAK,CAAC,QAAQ,CAAC;KACrF,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAE;KAC1B,GAAG,CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAE,CAAC;AAEhB,MAAM,mBAAmB,GAAG,CAAC,KAAiB,KAAI;AACvD,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC9C,SAAA,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,IAAA,OAAO,kBAAkB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACpD,CAAC;;ACrFM,MAAM,aAAa,GAAG;AAC3B,IAAA,KAAK,EAAG,CAAC;IACT,UAAU,EAAG,UAAU,CAAC,cAAc;CACvC;;ACNM,MAAM,wBAAwB,GAAG,CAAC,KAA+C,KAAK,KAAK,CAAC,kBAAkB,CAAC;AAE/G,MAAM,uBAAuB,GAAG,cAAc,CAAC,wBAAwB,EAAE,KAAK,IAAI,KAAK,CAAC,iBAAiB,CAAE,CAAA;AAE3G,MAAM,0BAA0B,GAAG,cAAc,CAAC,wBAAwB,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAEvI,MAAM,kBAAkB,GAAG,CAAI,GAAU,KAAM,cAAc,CAAC,wBAAwB,EAAE,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAE3H,MAAM,uBAAuB,GAAG,CAAI,GAAU,KAAM,cAAc,CACvE,kBAAkB,CAAC,GAAG,CAAC,EACvB,CAAC,OAAmB,KAAI;;AACtB,IAAA,IAAG,OAAO,EAAE;AACV,QAAA,OAAQ,OAAO,CAAC,MAAM,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5D,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAG,CAAI,GAAU,KAAM,cAAc,CAC5E,kBAAkB,CAAC,GAAG,CAAC,EACvB,CAAC,OAAmB,KAAI;;AACtB,IAAA,IAAG,OAAO,EAAE;QACV,OAAQ,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,OAAO,CAAC;AAC5C,KAAA;AACD,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAAG,CAAI,GAAU,KAAM,cAAc,CACtE,kBAAkB,CAAC,GAAG,CAAC,EACvB,CAAC,OAAmB,KAAI;AACtB,IAAA,IAAG,OAAO,EAAE;AACV,QAAA,OAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAE,GAAG,IAAI,GAAG,CAAC,CAAC;AACzD,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;;AClCK,MAAM,eAAe,GAAG,YAAY,CAAC,mCAAmC,EAAE,KAAK,EAAgD,CAAC,CAAC;AAEjI,MAAM,qBAAqB,GAAG,YAAY,CAAC,4CAA4C,EAAE,KAAK,EAAkC,CAAC,CAAC;AAElI,MAAM,wBAAwB,GAAG,YAAY,CAAC,+CAA+C,EAAE,KAAK,EAAmC,CAAC;;ACHzI,SAAU,iBAAiB,CAAI,QAAqB,EAAA;;IACxD,MAAM,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,0CAAE,MAAM,CAAA,IAAI,QAAQ,CAAC;IAC5F,MAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,0CAAE,aAAa,MAAI,MAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAA,CAAC;AACrG,IAAA,MAAM,QAAQ,GAAG,CAAC,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,CAAA,CAAC;AAChE,IAAA,MAAM,iBAAiB,GAAG,aAAa,GAAG;AACxC,QAAA,WAAW,EAAE,CAAC,OAAO,KAAI;;YAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAK,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBAChH,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7C,gBAAA,OAAO,GAAG,CAAC;AACb,aAAC,EAAE,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAA;AAAA,SAAA;QACd,QAAQ,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ;AAChE,QAAA,gBAAgB,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAK,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,mCAAI,KAAK;AACzF,QAAA,mBAAmB,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAK,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,mBAAmB,mCAAI,EAAE;AAC7F,KAAA;UACC,SAAS,CAAC;AAIZ,IAAA,IAAI,QAAQ,EAAE;AACZ,QAAA,QAAQ;AACN,YAAA,IAAI,EAAE,CAAC,OAAU,KAAK,iBAAiB,CAAC,QAAQ,CAAC,UAAW,CAAC,IAAK,CAAC,iBAAkB,EAAE,OAAO,CAAC;YAC/F,MAAM;YACN,aAAa;YACb,iBAAiB;AAClB,SAAA,EAAE;AACJ,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,aAAa,GAAG,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,GAAG,CAAC,CAAA,GAAG,GAAG,GAAG,EAAE,CAAC;AACjF,QAAA,MAAM,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC;AAC1E,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,QAAQ;AACN,YAAA,IAAI,EAAE,CAAC,OAAU,KAAK,CAAA,EAAG,IAAI,CAAA,EAAG,aAAa,CAAG,EAAA,MAAM,CAAC,OAAO,CAAC,CAAE,CAAA;YACjE,MAAM;YACN,aAAa;YACb,iBAAiB;AAClB,SAAA,EAAE;AACJ,KAAA;AACH,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,QAAmB,KAAI;;IAAC,OAAA,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAW,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM;AACpE,QAAA,CAAC,OAAW,KAAK,GAAG,CAAC,OAAO,EAAG,QAAQ,CAAC,UAAW,CAAC,IAAK,CAAC,MAAiB,CAAC;AAC1E,QAAA,QAAQ,CAAC,UAAW,CAAC,MAAM;AAC7B,YAAA,CAAC,OAAW,KAAK,GAAG,CAAC,OAAO,EAAG,QAAQ,CAAC,UAAW,CAAC,MAAiB,CAAC;AACtE,YAAA,CAAC,OAAW,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;CAAA,CAAC;AAE9C,MAAM,iBAAiB,GAAG,CAAE,kBAA0B,EAAE,OAAY,KAClE,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;ACtCnE,MAAO,sBAAuB,SAAQ,cAAkC,CAAA;AAC5E,IAAA,WAAA,CAAoB,UAAsB,EAAA;QACxC,KAAK,CAAC,EAAC,SAAS,EAAC,EAAE,EAAC,MAAM,EAAC,EAAE,EAAC,CAAC,CAAA;AADb,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAGlC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,IAAuB,wBAAS,IAAI,CAAA,CAAE,CAAC,CAAC;QAE1E,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,MAAqB,MAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KAAC,MAAM,EAAA,CAAA,CAAE,CAAC,CAAC;QAE7E,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,SAAwB,MAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KAAC,SAAS,EAAA,CAAA,CAAE,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,IAAiB,KAAG;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,QAAY,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,EAAA,EAAA,MAAM,KAAG;AAC7B,SAAC,CAAC,CAAA;AACF,QAAA,IAAK,CAAA,KAAA,GAAG,MAAK;AACX,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CACzC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAC7C,OAAO,EAAE,EACT,GAAG,CACH,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;;AACnB,gBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,CAAC,CAAA,EAAA,EAAE,WAAW,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAkB,CAAA,CAAA;AAAA,aAAC,CAAC,CAC9E,CAAC,CAAC,CACJ,CAAC;YACF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAC5D,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CACnC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,IAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,CAAC,MAAM,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC3D,GAAG,CAAC,IAAI,KAAG,EAAC,MAAM,EAAC,IAAI,CAAC,GAAG,EAAC,WAAW,EAAG,IAAI,CAAC,WAAW,EAAkB,CAAA,CAAC,CAAC,CAClF,CACF,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACjE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAC,SAAS,CAAC,MAAI,EAAC,MAAM,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAC,CAAA;KAhCA;;mHAHU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApE,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;AAgDX,MAAM,cAAc,GAAG,CAAC,IAAmB,EAAC,IAAmB,KAC7D,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5F,MAAM,iBAAiB,GAAG,oBAAoB,CAAiB,cAAc,CAAC;;MC3CjE,iBAAiB,CAAA;IAM5B,WAAoB,CAAA,UAAsB,EAAS,KAA6B,EAAA;AAA5D,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAwB;AAFhF,QAAA,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;QAC9B,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAgDpC,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAoB,KAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAI;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAACoE,OAAK,EAAE,CAAC,CAAC,CAAA;SAC/D,CAAC,CAAC,CAAC,CAAC;QAlDH,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAClE;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACpB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACpB;AAED,IAAA,cAAc,CAAC,KAAkC,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,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,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;YAEL,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA,EAAA,EAAC,SAAS,EAAC,aAAa,CAAC,GAAG,EAAA,CAAC,CAAC;YACrH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAkC,EAAA;AAClD,QAAA,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;YAC/C,OAAO;AACR,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAEzF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACpD,SAAA;KACF;AAQD,IAAA,YAAY,CAAC,IAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/B;;8GA9DU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApE,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAqE,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAFlB,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAC,sBAAsB,CAAC,0BCbpC,8+HAqGA,EAAA,MAAA,EAAA,CAAA,gwCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/D,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,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,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,EAAA,EAAA,CAAA,OAAA,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,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,EAAA2D,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiE,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDtFa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,cAAc,EAAA,SAAA,EAGd,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,8+HAAA,EAAA,MAAA,EAAA,CAAA,gwCAAA,CAAA,EAAA,CAAA;;;MENvB,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KACzC;AACD,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAE,QAAQ,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;KACH;;2GAPU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvE,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAA;;;MCKb,qBAAqB,CAAA;IAChC,WAAoB,CAAA,UAAsB,EAAW,QAAkB,EAAA;AAAnD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAW,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACtE;AACD,IAAA,SAAS,CAAC,KAAU,EAAE,GAAW,EAAE,UAAsB,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAE,EAAE,IAAG;;AACR,YAAA,IAAG,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE;AACnC,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;YACD,IAAG,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,EAAE,CAAE,EAAC;AAC1C,gBAAA,IAAG,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;AAClC,oBAAA,OAAO,CAAA,EAAA,GAAA,KAAK,CAAC,GAAG,CAAE,CAAC,CAAM,KAAK,SAAS,CAAC,EAAE,CAAC,UAAW,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC;AAC1F,iBAAA;gBACD,OAAO,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC;AAClC,aAAA;AACD,YAAA,IAAG,UAAU,KAAK,UAAU,CAAC,aAAa,EAAC;AACzC,gBAAA,IAAG,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAC;AACjC,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,GAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClH,iBAAA;AAAI,qBAAA;oBACH,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AACzC,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAG,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAC;gBACxC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACpD,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;SACb,CAAC,CACH,CAAC;KACH;;kHA3BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,IAAI;mBAAC,EAAC,IAAI,EAAE,mBAAmB,EAAC,CAAA;;;MCNpB,oBAAoB,CAAA;IAC/B,SAAS,CAAC,UAAsB,EAAE,KAAU,EAAA;AAC1C,QAAA,IAAG,UAAU,KAAK,UAAU,CAAC,MAAM,EAAC;YAClC,OAAO,KAAK,GAAG,UAAU,GAAG,cAAc,CAAA;AAC3C,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;;iHANU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;mBAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAA;;;MCSnB,oBAAoB,CAAA;IAE/B,WAAoB,CAAA,UAAsB,EAAU,WAAgC,EAAA;AAAhE,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAqB;QAGlF,IAAQ,CAAA,QAAA,GAAkC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CACrE,GAAG,CAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;AACpB,aAAA,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CACtD,CACF,CAAC;QAcF,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KArBpD;AASC,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACvC;AAED,IAAA,SAAS,CAAC,MAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACpC;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;;iHAtBQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,uDCZjC,wvCA0BA,EAAA,MAAA,EAAA,CAAA,2cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4D,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAmE,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDda,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,wvCAAA,EAAA,MAAA,EAAA,CAAA,2cAAA,CAAA,EAAA,CAAA;;;MEAhB,oBAAoB,CAAA;AAE/B,IAAA,WAAA,CAAmB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAK;IAE9C,QAAQ,GAAA;KACP;;iHALU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3E,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,qDCRjC,mfAUA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,mfAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,CAAA;;;ME0CX,uBAAuB,CAAA;IAqCrC,WACS,CAAA,KAAiB,EACjB,kBAAyC,EACP,MAA0B,EAC3D,KAAiB,EACL,OAA8B,EAAA;AAJ3C,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACjB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAuB;AACP,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;AAC3D,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACL,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAuB;AAnC3C,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAMf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAA,CAAA,WAAW,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC,CAAC;QAC1C,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CACpC,SAAS,CAAE,CAAC,IAAI,CAAC,CAAC,EAClB,kBAAkB,EAAE,CACrB,CAAC;AAKQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QAwD3C,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAmB,EAAE,CAAC,CAAC;AA2I3D,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAkB,KAAI;;AACpC,YAAA,IAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAC;AACpC,gBAAA,MAAM,UAAU,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,UAAU,CAAoB,CAAC;AAC3D,gBAAA,UAAU,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,aAAa,CAAC,UAAU,CAAC;gBAC3E,UAAU,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,UAAU,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,aAAa,CAAC,KAAK,CAAC;gBAC3F,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,EAAA,EAAA,UAAU,EAAC,CAAA,CAAA;AAC5B,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAA;QAED,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC;QAWpG,IAAS,CAAA,SAAA,GAAG,CAAC,IAAW,EAAE,WAAqB,EAAE,eAAqB,KAAW;YAC/E,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,oBAAoB,CAAC,MAAM,EAAE;AAC/B,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAA;AAChG,aAAA;AACD,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,IAAG;;AAClD,gBAAA,MAAM,QAAQ,GAAG,eAAe,GAAG,CAAG,EAAA,eAAe,CAAI,CAAA,EAAA,SAAS,EAAE,GAAG,CAAG,EAAA,SAAS,EAAE,CAAC;gBACtF,OAAO;AACL,oBAAA;AACE,wBAAA,aAAa,EAAE,IAAI;wBACnB,eAAe,EAAE,CAAG,EAAA,SAAS,CAAK,EAAA,EAAA,CAAA,EAAA,GAAA,MAAA,GAAG,CAAC,SAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAG,CAAA,CAAA;AAC9F,wBAAA,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC;AACpB,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,OAAO,EAAE,CAAC;AACX,qBAAA;oBACA,CAAA,EAAA,GAAA,GAAG,CAAC,SAAS,CAAW,0CAAE,GAAG,CAAC,CAAC,qCAAU,CAAC,CAAA,EAAA,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,QAAQ,EAAA,CAAA,CAAG,CAAC;iBAChG,CAAC;aACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/B,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAM,KAAI;YAC1B,IAAI,CAAC,CAAC,aAAa,EAAE;gBACnB,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,oBAAA,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACjB,iBAAA;AAAM,qBAAA;AACL,oBAAA,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AACf,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAA;QAED,IAAU,CAAA,UAAA,GAAG,CAAC,IAAW,EAAE,MAAe,KAAY,IAAI;aACvD,GAAG,CAAC,CAAC,IAAG;;YAAC,QAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,CAAC,CAAA,EAAA,EACJ,aAAa,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,EACnH,UAAU,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,EAAA,CAAA,EACpE;SAAA,CAAC;aACF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;QAGhC,IAAA,CAAA,aAAa,GAAG,CAAC,YAAoB,EAAE,MAAgB,KAAa;YAClE,IAAI,EAAC,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,UAAU,CAAA,EAAE;AAC7B,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YAED,MAAM,WAAW,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;AAEnF,YAAA,IAAI,WAAW,EAAE;gBACf,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAChD,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAA;QA7PE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,IAAG;YACtE,IAAG,IAAI,CAAC,OAAO,EAAE;gBACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAC,GAAG,EAAC,IAAI,CAAC,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC;AAC5E,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,CAC7C,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAC9B,kBAAkB,EAAE,CACrB,CAAC;KACH;IA1CD,IAAa,QAAQ,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC/B;IA0CD,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAE,CAAC;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC7B;IAED,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,KAAK,IAAG;YAC1E,IAAG,IAAI,CAAC,OAAO,EAAE;gBACf,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACrC,MAAM,CAACkE,uBAAiC,CAAM,IAAI,CAAC,OAAO,CAAC,CAAE,EAC7DR,OAAK,EAAE,EACP,GAAG,CAAE,cAAc,IAAG;oBACpB,IAAG,CAAC,cAAc,EAAE;wBAClB,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACvE,qBAAA;AACH,iBAAC,CAAC,EACF,OAAO,EAAE,CACV,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,eAAe,CAAC,CAAC;AAE3D,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACvE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QAGZ,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;AACjD,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAE,CAAC,CAAA;AAEnF,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC;aACpC,aAAa,CAAC,QAAQ,CAAC;AACvB,aAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC5C,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC5C,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC5C,CAAC,IAAI,CACJ,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACvC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAC7C,CAAC,CACH,CAAC,CACH,CAAC;AAEJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAG,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAACS,sBAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAACC,4BAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACjG,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAC3B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAChD,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC7C;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,CAC/BV,OAAK,EAAE,CACR,CAAC,SAAS,CAAE,UAAU,IAAG;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAC,CAAE,CAAC,CAAC;AAC/F,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,eAAe,CAAC,GAAW,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAC,GAAG,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;KAC9E;AAED,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAC,GAAG,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;KAC7E;IAGD,kBAAkB,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,KAAK,IAAG;AAE3E,YAAA,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1D,IAAG,IAAI,CAAC,OAAO,EAAE;gBACf,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACtH,aAAA;YAED,IAAI,aAAa,GAAyD,EAAE,CAAC;AAE7E,YAAA,UAAU,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAE,CAAC,IAAG;;AAC5C,gBAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACd,IAAG,CAAC,CAAC,OAAO,EAAE;oBACZ,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,oBAAA,IAAG,YAAY,CAAC,MAAM,CAAC,EAAE;wBACvB,MAAM,eAAe,GAAyB,CAAyB,CAAC;AACxE,wBAAA,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7C,wBAAA,eAAe,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/C,wBAAA,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACnD,wBAAA,eAAe,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;wBACjC,eAAe,CAAC,MAAM,EAAE,CAAC;AAC1B,qBAAA;AACD,oBAAA,IAAG,cAAc,CAAC,MAAM,CAAC,EAAE;wBACzB,CAAC,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC;AACnC,qBAAA;oBACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjC,iBAAA;AAAM,qBAAA;AACL,oBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,QAAQ,GAAI,IAAI,CAAE,aAAa,CAAC,GAAG,CAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAG,CAAC,CAAC,IAAI,CAClE,QAAQ,EAAE,EACVW,MAAI,CAAE,CAAC,CAAC,EAAC,CAAC,KAAG;gBACT,IAAG,CAAC,CAAC,MAAM,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACvE,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAE;AACvB,iBAAA;AACJ,gBAAA,OAAO,CAAC,CAAC;AACV,aAAC,EAAE,EAAgC,CAAC,EACpC,GAAG,CAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;AAC5B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,mBAAmB,EAAE,mBAAmB,CAAC,KAAK,EAAC,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;KAEJ;IAED,iBAAiB,GAAA;QACf,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,SAAU,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,GAAG,KAAI;YACV,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,OAAO;AACL,gBAAA,GAAG,GAAG;AACN,gBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,UAAU,CAAE,CAAC,CAAE;aAChG,CAAA;SACF,CAAC,CACH,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,SAAU,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,GAAG,KAAI;YACV,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAI;AAC5B,gBAAA,IAAG,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAC;oBAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;AAAC,iBAAA;AACxE,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAC,EAAE,CAAC,CAAA;SACN,CAAC,CACH,CAAC,CAAA;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAC9C,QAAQ,CAAE,QAAQ,KAAK,EAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAE,EAAC,CAAC,CAAC,CAClF,CAAC;KACH;IAaD,OAAO,CAAC,IAAW,EAAE,WAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KAC1C;;AAjPa,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,wEAwC3B,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAAAzE,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA0E,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxCnB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sbAD1B,CAAC,UAAU,EAAC,kBAAkB,EAAC,kBAAkB,CAAC,EAG5C,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,0BAA0B,6DAC1B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAoBpBC,eAAS,EAET,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAmB,6BCvEtC,+1JAiHA,EAAA,MAAA,EAAA,CAAA,qQAAA,EAAA,8NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,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,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjF,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnEgB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,UAAU,EAAC,kBAAkB,EAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,+1JAAA,EAAA,MAAA,EAAA,CAAA,qQAAA,EAAA,8NAAA,CAAA,EAAA,CAAA;;;8BAyC1D,MAAM;+BAAC,uBAAuB,CAAA;;8BAE9B,QAAQ;;yBAxCuD,aAAa,EAAA,CAAA;sBAA9E,eAAe;gBAAC,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBACJ,OAAO,EAAA,CAAA;sBAAlE,eAAe;gBAAC,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBAEjD,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAGG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAKqB,UAAU,EAAA,CAAA;sBAArC,eAAe;uBAACuE,eAAS,CAAA;gBAEY,WAAW,EAAA,CAAA;sBAAhD,eAAe;uBAAC,mBAAmB,CAAA;gBAC1B,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AEzDF,MAAM,mBAAmB,GAAuB;IACrD,iBAAiB,EAAE,CAAC,SAAS,CAAC;AAC9B,IAAA,oBAAoB,EAAE,SAAS;AAC/B,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,aAAa,EAAE,EAAE;CAClB,CAAA;AAGD,SAAS,sBAAsB,GAAA;IAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC7D,IAAA,IAAG,OAAO,EAAE;QACV,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,mBAAmB,GAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAE,CAAA;AACzD,KAAA;AACD,IAAA,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,CAC3B,sBAAsB,EAAE,EACxB,EAAE,CAACW,eAA4B,EAAE,CAAC,KAAK,EAAC,EAAC,GAAG,EAAC,KAAK,EAAC,KAAG;;IACpD,IAAI,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,IAAG,CAAC,OAAO,EAAE;QACX,OAAO,GAAI,EAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAG;AAC3D,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA,EAAC,CAAC;AACJ,KAAA;AAAM,SAAA;QACL,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAE,EAAA,EAAA,MAAM,kCAAM,OAAO,CAAC,MAAM,CAAA,EAAA,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,OAAO,GAAI,KAAK,EAAA,CAAA,EAAA,CAAG,CAAC;AACpG,KAAA;AACD,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAA,EAAA,EAAE,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAC,aAAa,CAAA,EAAA,EAAE,CAAC,GAAG,GAAG,OAAO,EAAG,CAAA,EAAA,CAAA,CAAA;AAC7E,CAAC,CAAC,EACF,EAAE,CAACC,qBAAkC,EAAE,CAAC,KAAK,EAAE,EAAC,GAAG,EAAC,OAAO,EAAC,KAAI;;IAC9D,IAAI,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,IAAG,CAAC,OAAO,EAAE;AACX,QAAA,OAAO,GAAI,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAG,MAAM,EAAG,EAAC,CAAC,OAAO,GAAG,IAAI,EAAE,EAAC,CAAC;AACtE,KAAA;AAAM,SAAA;QACL,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,OAAO,CAAC,MAAM,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5F,QAAA,OAAO,mCAAO,OAAO,CAAA,EAAA,EAAE,OAAO,EAAE,MAAM,EAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,MAAM,KAAE,CAAC,OAAO,GAAI,KAAK,MAAG,CAAC;AAClF,KAAA;AACD,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAA,EAAA,EAAE,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAC,aAAa,CAAA,EAAA,EAAE,CAAC,GAAG,GAAG,OAAO,EAAG,CAAA,EAAA,CAAA,CAAA;AAC7E,CAAC,CAAC,EACF,EAAE,CAACC,wBAAqC,EAAE,CAAC,KAAK,EAAE,EAAC,GAAG,EAAC,QAAQ,EAAC,KAAI;IAClE,IAAI,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACvC,IAAA,IAAG,OAAO,EAAE;AACV,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjF,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,EAAA,EAAC,OAAO,EAAE,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAC,MAAM,CAAA,EAAA,CAAE,CAAC;AAC7D,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,KAAK,CAAA,EAAA,EAAE,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAC,aAAa,CAAA,EAAA,EAAE,CAAC,GAAG,GAAG,OAAO,EAAI,CAAA,EAAA,CAAA,CAAA;AAC7E,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC,CAAC,CACH,CAAC;AAEc,SAAA,mBAAmB,CAAC,KAAqC,EAAE,MAAc,EAAA;AACvF,IAAA,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC;;MC7Da,gBAAgB,CAAA;IA0C3B,WAAqB,CAAA,QAAiB,EAAU,KAAiB,EAAA;AAA5C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAAU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAxCjE,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,MAAM,CAACF,eAA4B,CAAC,EACpC,MAAM,CAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACnC,gBAAgB,CAAE,CAAC,MAAM,KAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAC5C,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACvC,CAAC,EACF,GAAG,CAAE,CAAC,CAAC,MAAM,EAAC,OAAO,CAAC,KAAI;;YACxB,MAAM,gBAAgB,GAAuB,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,mCAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAE,CAAC;YAC9I,IAAG,CAAC,OAAO,EAAE;gBACX,OAAO,GAAI,EAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAG,EAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAC,EAAC,CAAC;gBACtF,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACtD,aAAA;AAAC,YAAA;gBACA,IAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC9C,oBAAA,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,EAAA,EAAC,MAAM,EAAE,EAAC,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,EAAC,GAAC,CAAC;AACxH,iBAAA;AAAM,qBAAA;oBACL,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACtG,iBAAA;AAEF,aAAA;AACD,YAAA,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAE,gBAAgB,CAAC,CAAC,CAAC;SACjF,CAAC,CACH,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CACvB,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,MAAM,CAACE,wBAAqC,CAAC,EAC7C,GAAG,CAAE,CAAC,CAAC,KAAI;;YACT,MAAM,gBAAgB,GAAuB,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,mCAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAE,CAAC;YAC5I,IAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACzC,OAAO;AACR,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,aAAA;AACH,YAAA,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAE,gBAAgB,CAAC,CAAC,CAAC;SACjF,CAAC,CACH,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CACvB,CAAC;KAEoE;;6GA1C3D,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/F,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCsHE,kBAAkB,CAAA;IAC7B,OAAO,OAAO,CAAC,MAA0B,EAAA;QACvC,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;gBACT,kBAAkB;AAClB,gBAAA,EAAE,OAAO,EAAG,uBAAuB,EAAG,QAAQ,EAAE,MAAM,EAAC;AACxD,aAAA;SACF,CAAC;KACH;;+GATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAzCvB,eAAe;QACf,uBAAuB;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,mBAAmB;QACnB,wBAAwB;QACxB,2BAA2B;QAC3B,mBAAmB;QACnB,eAAe;QACf,kBAAkB;QAClB,qBAAqB;QACrB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,mBAAmB;QACnB,cAAc;QACd,qBAAqB;QACrB,oBAAoB;QACpB,qBAAqB;QACrB,iBAAiB;QACjB,uBAAuB;QACvB,qBAAqB;QACrB,iBAAiB;QACjB,oBAAoB;QACpB,+BAA+B;QAC/B,+BAA+B;QAC/B,0BAA0B;QAC1B,4BAA4B;QAC5B,8BAA8B;QAC9B,oBAAoB;QACpB,kCAAkC;QAClC,qBAAqB;AACrB,QAAA,oBAAoB,aA/DxB,YAAY;QACZ,cAAc,sDAGd,WAAW;QACX,YAAY;QACZ,SAAS;QACT,cAAc;AACd,QAAA,eAAe,aAGX,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,mBAAmB;QACnB,wBAAwB;QACxB,2BAA2B;QAC3B,eAAe;QACf,kBAAkB;QAClB,qBAAqB;QACrB,+BAA+B;QAC/B,+BAA+B;QAC/B,0BAA0B;QAC1B,4BAA4B;QAC5B,8BAA8B;QAC9B,oBAAoB;QACpB,kCAAkC;QAClC,qBAAqB;QACrB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AA4Cf,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAPf,SAAA,EAAA;QACV,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,eAAe;KAChB,EAAA,OAAA,EAAA,CAtED,YAAY;QACZ,cAAc;AACd,QAAA,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;AACjE,QAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC5C,WAAW;QACX,YAAY;QACZ,SAAS;QACT,cAAc;QACd,eAAe,CAAA,EAAA,CAAA,CAAA;2FAgEN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA1E9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;AACd,wBAAA,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;AACjE,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;wBAC5C,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,cAAc;wBACd,eAAe;AAChB,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACL,qBAAqB;wBACrB,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;wBACnB,wBAAwB;wBACxB,2BAA2B;wBAC3B,eAAe;wBACf,kBAAkB;wBAClB,qBAAqB;wBACrB,+BAA+B;wBAC/B,+BAA+B;wBAC/B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,8BAA8B;wBAC9B,oBAAoB;wBACpB,kCAAkC;wBAClC,qBAAqB;wBACrB,oBAAoB;AACvB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,eAAe;wBACf,uBAAuB;wBACvB,qBAAqB;wBACrB,kBAAkB;wBAClB,mBAAmB;wBACnB,wBAAwB;wBACxB,2BAA2B;wBAC3B,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,qBAAqB;wBACrB,sBAAsB;wBACtB,oBAAoB;wBACpB,mBAAmB;wBACnB,mBAAmB;wBACnB,cAAc;wBACd,qBAAqB;wBACrB,oBAAoB;wBACpB,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB,qBAAqB;wBACrB,iBAAiB;wBACjB,oBAAoB;wBACpB,+BAA+B;wBAC/B,+BAA+B;wBAC/B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,8BAA8B;wBAC9B,oBAAoB;wBACpB,kCAAkC;wBAClC,qBAAqB;wBACrB,oBAAoB;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAG;wBACV,aAAa;wBACb,QAAQ;wBACR,YAAY;wBACZ,eAAe;AAChB,qBAAA;iBACJ,CAAA;;;MCtHY,YAAY,CAAA;IAGvB,WAAoB,CAAA,KAAsB,EAAG,SAAyC,EAAE,QAAoE,GAAA,IAAI,oBAAoB,EAAE,EAAA;AAAlK,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACxC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AACxB,YAAA,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAACgD,OAAK,EAAE,EAAE,GAAG,CAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,EAAC,kBAAkB,EAAE,CAAC,CAAC;AACxF,QAAA,MAAM,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAC,kBAAkB,EAAE,CAAC,CAAC;KAC1F;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,SAAS,CAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CACpC,QAAQ,CAAE,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAE,CAAE,CACtD,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,GAAQ,EAAA;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,GAAG,GAAI,EAAE,CAAC;AAC5B,aAAA,GAAG,CAAE,GAAG,KAAK;YACZ,GAAG;YACH,SAAS,EAAE,SAAS,CAAC,OAAO;YAC5B,KAAK,EAAE,CAAC,CAAC;AACV,SAAA,CAAC,CAAC,CAAC;KACL;IAED,QAAQ,CAAC,GAAQ,EAAE,QAAkB,EAAA;QACnC,QAAS,QAAQ,CAAC,SAAS;YACzB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAE,GAAG,CAAE,CAAC;AAC1B,gBAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YAChD,KAAK,SAAS,CAAC,IAAI;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAG,KAAK,CAAC,IAAI,CAAC,EAAC;AACb,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACD,gBAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AACpB,gBAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,WAAW,CAAE,MAAS,EAAE,QAAqB,EAAA;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAC,IAAO,EAAE,IAAiB,KAAI;AAC9D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACvD,IAAG,GAAG,KAAK,SAAS,EAAE;gBACpB,GAAG,CAAC,IAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,MAAM,CAAA,CAAQ,CAAA;QACrB,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAK,EAAA,OAAO,CAAE,CAAA;KAChC;AACF,CAAA;AAEY,MAAA,kBAAkB,GAAG,CAAC,UAAiC,KAAmB;IACrF,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACnD,IAAA,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAE,EAAE,UAAU,CAAC,IAAI,CAAE,GAAG,CAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC;AAC1G;;AClEA;MACa,cAAc,CAAA;AAE1B,CAAA;MAOY,YAAY,CAAA;AAKxB,CAAA;AAED,MAAM,YAAY,GAAgB;AAChC,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,QAAQ,EAAE,EAAE;CACb,CAAC;AAEU,IAAA,kBAKX;AALD,CAAA,UAAY,iBAAiB,EAAA;IAC3B,iBAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IACd,iBAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IACd,iBAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACX,iBAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACX,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAK5B,EAAA,CAAA,CAAA,CAAA;AAED;MACa,aAAa,GAAG,mBAAmB,GAAiB;AAEpD,MAAA,YAAY,GAAgB,aAAa,CAAC,eAAe,CAAC,YAAY,EAAE;MAExE,cAAc,GAAG,qBAAqB,CAAQ,cAAc,EAAE;AAC9D,MAAA,EACX,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACZ,GAAG,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE;MAElC,YAAY,GAAG,CAAC,EAAU,KAAK,cAAc,CACxD,cAAc,EACd,CAAC,QAAa,KAAM,QAAQ,CAAC,EAAE,CAAC,EAChC;AAEF;SACgB,mBAAmB,CAAC,KAAqB,GAAA,YAAY,EAAE,MAAc,EAAA;IAEnF,MAAM,YAAY,GAAiB,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAE,CAAC;AAExE,IAAA,IAAK,YAAY,EAAG;AAClB,QAAA,IAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,EAAG;YAClD,MAAM,WAAW,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAE,CAAC;AAC1D,YAAA,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACzC,YAAA,WAAW,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;YAC3D,OAAO,aAAa,CAAC,SAAS,CAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;YACL,OAAO,aAAa,CAAC,MAAM,CAAC,YAAY,EAAG,KAAK,CAAC,CAAC;AACnD,SAAA;AAEF,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf;;MCtDa,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJtB,YAAY,EAAArE,IAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AAIH,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJtB,YAAY;QACZ,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAA,EAAA,CAAA,CAAA;2FAGlD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACZ,wBAAA,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAC5D,qBAAA;iBACF,CAAA;;;MCHY,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;AASE,QAAA,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;KAOvC;IALC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC1C,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAG,GAAG,CAAC,CAC/D,CAAC;KACH;;wHAVU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gGCVxC,qLAGA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,qLAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,CAAA;8BAM3B,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEMK,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAV5B,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAG3B,YAAY;QACZwD,8BAAwB,aAGxB,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAP5B,YAAY;QACZA,8BAAwB,CAAA,EAAA,CAAA,CAAA;2FAMf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZA,8BAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,2BAA2B;AAC5B,qBAAA;iBACF,CAAA;;;ACjBD;;AAEG;;ACCH,MAAM,aAAa,CAAA;AAAnB,IAAA,WAAA,GAAA;AACE,QAAA,IAAK,CAAA,KAAA,GAGC,EAAE,CAAC;QACT,IAAA,CAAA,SAAS,GAAG,CAAC,KAAU,EAAE,oBAA4B,KAAa;YAChE,IAAG,OAAO,KAAK,IAAI,QAAQ;AAAE,gBAAA,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC;YAC/C,MAAM,YAAY,mCAAQ,KAAK,CAAA,EAAA,EAAE,qBAAqB,EAAE,oBAAoB,GAAE,CAAC;AAC/E,YAAA,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE;AAC7D,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9B,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAA;KACF;AAAA,CAAA;AAED,IAAI,MAAkB,CAAC;AACvB,IAAI,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAEjC,MAAM,QAAQ,GAAG,CAAC,KAAY,KAAI;IAChC,IAAG,KAAK,YAAY,KAAK;QAAE,MAAM,GAAG,KAAK,CAAC;AAC5C,CAAC,CAAC;AACI,SAAU,iBAAiB,CAAC,KAAY,EAAA;IAC5C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QAC3C,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,KAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;AAOG;AACI,MAAM,wBAAwB,GAAG,CACtC,eAAmE,EACnE,MAAyC,EACzC,UAAA,GAAwC,aAAa,KACW;AAChE,IAAA,MAAM,EAAE,GAAGzD,EAAI,EAAE,CAAC;AAClB,IAAA,MAAM,KAAK,GAAG,CAAC,KAAa,KAAK,cAAc,CAC7C,eAAe,CAAC,KAAK,CAAC,EACtB,CAAC,QAAgB,KAAI;AACnB,QAAA,IAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,EAAC;;YAEtD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;AAClB,KAAC,CAC2C,CAAC;AAC/C,IAAA,OAAO,KAAK,CAAC;AACf,EAAC;AAMK,SAAU,aAAa,CAAC,IAAS,EAAA;AACrC,IAAA,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC;AAC3C,CAAC;AAKD;;;;AAIG;AACF,MAAM,UAAU,GAAG,CAAoC,CAAI,EAAE,IAAoB,KAAmB;AACnG,IAAA,MAAM,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,CAAC,CAAE,CAAC;AACtB,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,MAAc,KAAa;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,IAAA,IAAG,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AACzC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,KAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACpD,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,IAAG,KAAK,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,EAAC;AAC1C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;;AC9FD;;AAEG;;ACFH;;AAEG;;;;"}
|