@smartsoft001/crud-shell-angular 1.2.91 → 2.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/addons.js +1 -0
- package/.storybook/config.js +5 -0
- package/.storybook/tsconfig.json +8 -0
- package/.storybook/webpack.config.js +7 -0
- package/jest.config.ts +38 -0
- package/ng-package.json +7 -0
- package/package.json +12 -23
- package/project.json +49 -0
- package/src/index.ts +13 -0
- package/src/lib/+state/crud.facade.ts +82 -0
- package/src/lib/+state/crud.feature.methods.ts +258 -0
- package/src/lib/+state/crud.feature.store.ts +77 -0
- package/src/lib/components/components.module.ts +58 -0
- package/src/lib/components/export/export.component.ts +69 -0
- package/src/lib/components/filter/base/base.component.ts +175 -0
- package/src/lib/components/filter/check/check.component.scss +25 -0
- package/src/lib/components/filter/check/check.component.ts +72 -0
- package/src/lib/components/filter/date/date.component.html +30 -0
- package/src/lib/components/filter/date/date.component.ts +70 -0
- package/src/lib/components/filter/date-time/date-time.component.html +62 -0
- package/src/lib/components/filter/date-time/date-time.component.ts +56 -0
- package/src/lib/components/filter/date-with-edit/date-with-edit.component.html +109 -0
- package/src/lib/components/filter/date-with-edit/date-with-edit.component.ts +70 -0
- package/src/lib/components/filter/filter.component.html +52 -0
- package/src/lib/components/filter/filter.component.ts +34 -0
- package/src/lib/components/filter/flag/flag.component.ts +55 -0
- package/src/lib/components/filter/index.ts +9 -0
- package/src/lib/components/filter/int/int.component.html +74 -0
- package/src/lib/components/filter/int/int.component.ts +57 -0
- package/src/lib/components/filter/radio/radio.component.ts +74 -0
- package/src/lib/components/filter/text/text.component.ts +46 -0
- package/src/lib/components/filters/filters.component.scss +150 -0
- package/src/lib/components/filters/filters.component.ts +157 -0
- package/src/lib/components/filters-config/filters-config.component.ts +69 -0
- package/src/lib/components/group/group.component.ts +93 -0
- package/src/lib/components/index.ts +7 -0
- package/src/lib/components/multiselect/multiselect.component.html +41 -0
- package/src/lib/components/multiselect/multiselect.component.scss +125 -0
- package/src/lib/components/multiselect/multiselect.component.ts +104 -0
- package/src/lib/crud-full.module.ts +51 -0
- package/src/lib/crud.config.ts +79 -0
- package/src/lib/crud.module.ts +72 -0
- package/src/lib/factories/list-pagination/list-pagination.factory.ts +77 -0
- package/src/lib/models/index.ts +1 -0
- package/src/lib/models/interfaces.ts +34 -0
- package/src/lib/pages/index.ts +6 -0
- package/src/lib/pages/item/base/base.component.ts +54 -0
- package/src/lib/pages/item/item.component.ts +513 -0
- package/src/lib/pages/item/standard/standard.component.scss +0 -0
- package/src/lib/pages/item/standard/standard.component.ts +50 -0
- package/src/lib/pages/list/base/base.component.ts +29 -0
- package/src/lib/pages/list/list.component.stories.ts +77 -0
- package/src/lib/pages/list/list.component.ts +438 -0
- package/src/lib/pages/list/standard/standard.component.ts +42 -0
- package/src/lib/pipes/form-options/form-options.pipe.ts +61 -0
- package/src/lib/pipes/index.ts +2 -0
- package/src/lib/pipes/pipes.module.ts +9 -0
- package/src/lib/providers/model-possibilities/model-possibilities.provider.ts +19 -0
- package/src/lib/services/crud/crud.service.spec.ts +303 -0
- package/src/lib/services/crud/crud.service.ts +178 -0
- package/src/lib/services/list-group/list-group.service.spec.ts +87 -0
- package/src/lib/services/list-group/list-group.service.ts +65 -0
- package/src/lib/services/page/page.service.spec.ts +143 -0
- package/src/lib/services/page/page.service.ts +44 -0
- package/src/lib/services/search/search.service.spec.ts +134 -0
- package/src/lib/services/search/search.service.ts +42 -0
- package/test-setup.ts +0 -0
- package/tsconfig.json +13 -0
- package/tsconfig.lib.json +31 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +10 -0
- package/tslint.json +10 -0
- package/esm2022/index.mjs +0 -18
- package/esm2022/lib/+state/crud.actions.mjs +0 -224
- package/esm2022/lib/+state/crud.effects.mjs +0 -182
- package/esm2022/lib/+state/crud.facade.mjs +0 -91
- package/esm2022/lib/+state/crud.reducer.mjs +0 -214
- package/esm2022/lib/+state/crud.selectors.mjs +0 -11
- package/esm2022/lib/components/components.module.mjs +0 -110
- package/esm2022/lib/components/export/export.component.mjs +0 -47
- package/esm2022/lib/components/filter/base/base.component.mjs +0 -152
- package/esm2022/lib/components/filter/check/check.component.mjs +0 -36
- package/esm2022/lib/components/filter/date/date.component.mjs +0 -47
- package/esm2022/lib/components/filter/date-time/date-time.component.mjs +0 -43
- package/esm2022/lib/components/filter/date-with-edit/date-with-edit.component.mjs +0 -49
- package/esm2022/lib/components/filter/filter.component.mjs +0 -30
- package/esm2022/lib/components/filter/flag/flag.component.mjs +0 -16
- package/esm2022/lib/components/filter/index.mjs +0 -10
- package/esm2022/lib/components/filter/int/int.component.mjs +0 -38
- package/esm2022/lib/components/filter/radio/radio.component.mjs +0 -16
- package/esm2022/lib/components/filter/text/text.component.mjs +0 -16
- package/esm2022/lib/components/filters/filters.component.mjs +0 -111
- package/esm2022/lib/components/filters-config/filters-config.component.mjs +0 -37
- package/esm2022/lib/components/group/group.component.mjs +0 -54
- package/esm2022/lib/components/index.mjs +0 -8
- package/esm2022/lib/components/multiselect/multiselect.component.mjs +0 -71
- package/esm2022/lib/crud-full.module.mjs +0 -103
- package/esm2022/lib/crud.config.mjs +0 -17
- package/esm2022/lib/crud.module.mjs +0 -106
- package/esm2022/lib/factories/list-pagination/list-pagination.factory.mjs +0 -69
- package/esm2022/lib/models/index.mjs +0 -2
- package/esm2022/lib/models/interfaces.mjs +0 -2
- package/esm2022/lib/pages/index.mjs +0 -7
- package/esm2022/lib/pages/item/base/base.component.mjs +0 -44
- package/esm2022/lib/pages/item/item.component.mjs +0 -395
- package/esm2022/lib/pages/item/standard/standard.component.mjs +0 -15
- package/esm2022/lib/pages/list/base/base.component.mjs +0 -23
- package/esm2022/lib/pages/list/list.component.mjs +0 -355
- package/esm2022/lib/pages/list/standard/standard.component.mjs +0 -34
- package/esm2022/lib/pipes/form-options/form-options.pipe.mjs +0 -55
- package/esm2022/lib/pipes/index.mjs +0 -3
- package/esm2022/lib/pipes/pipes.module.mjs +0 -20
- package/esm2022/lib/providers/model-possibilities/model-possibilities.provider.mjs +0 -11
- package/esm2022/lib/services/crud/crud.service.mjs +0 -138
- package/esm2022/lib/services/list-group/list-group.service.mjs +0 -60
- package/esm2022/lib/services/page/page.service.mjs +0 -41
- package/esm2022/lib/services/search/search.service.mjs +0 -41
- package/esm2022/lib/services/socket/socket.service.mjs +0 -17
- package/esm2022/smartsoft001-crud-shell-angular.mjs +0 -5
- package/fesm2022/smartsoft001-crud-shell-angular.mjs +0 -2810
- package/fesm2022/smartsoft001-crud-shell-angular.mjs.map +0 -1
- package/index.d.ts +0 -18
- package/index.d.ts.map +0 -1
- package/lib/+state/crud.actions.d.ts +0 -152
- package/lib/+state/crud.actions.d.ts.map +0 -1
- package/lib/+state/crud.effects.d.ts +0 -18
- package/lib/+state/crud.effects.d.ts.map +0 -1
- package/lib/+state/crud.facade.d.ts +0 -44
- package/lib/+state/crud.facade.d.ts.map +0 -1
- package/lib/+state/crud.reducer.d.ts +0 -43
- package/lib/+state/crud.reducer.d.ts.map +0 -1
- package/lib/+state/crud.selectors.d.ts +0 -10
- package/lib/+state/crud.selectors.d.ts.map +0 -1
- package/lib/components/components.module.d.ts +0 -27
- package/lib/components/components.module.d.ts.map +0 -1
- package/lib/components/export/export.component.d.ts +0 -21
- package/lib/components/export/export.component.d.ts.map +0 -1
- package/lib/components/filter/base/base.component.d.ts +0 -39
- package/lib/components/filter/base/base.component.d.ts.map +0 -1
- package/lib/components/filter/check/check.component.d.ts +0 -19
- package/lib/components/filter/check/check.component.d.ts.map +0 -1
- package/lib/components/filter/date/date.component.d.ts +0 -16
- package/lib/components/filter/date/date.component.d.ts.map +0 -1
- package/lib/components/filter/date-time/date-time.component.d.ts +0 -15
- package/lib/components/filter/date-time/date-time.component.d.ts.map +0 -1
- package/lib/components/filter/date-with-edit/date-with-edit.component.d.ts +0 -17
- package/lib/components/filter/date-with-edit/date-with-edit.component.d.ts.map +0 -1
- package/lib/components/filter/filter.component.d.ts +0 -14
- package/lib/components/filter/filter.component.d.ts.map +0 -1
- package/lib/components/filter/flag/flag.component.d.ts +0 -8
- package/lib/components/filter/flag/flag.component.d.ts.map +0 -1
- package/lib/components/filter/index.d.ts +0 -10
- package/lib/components/filter/index.d.ts.map +0 -1
- package/lib/components/filter/int/int.component.d.ts +0 -15
- package/lib/components/filter/int/int.component.d.ts.map +0 -1
- package/lib/components/filter/radio/radio.component.d.ts +0 -8
- package/lib/components/filter/radio/radio.component.d.ts.map +0 -1
- package/lib/components/filter/text/text.component.d.ts +0 -8
- package/lib/components/filter/text/text.component.d.ts.map +0 -1
- package/lib/components/filters/filters.component.d.ts +0 -83
- package/lib/components/filters/filters.component.d.ts.map +0 -1
- package/lib/components/filters-config/filters-config.component.d.ts +0 -19
- package/lib/components/filters-config/filters-config.component.d.ts.map +0 -1
- package/lib/components/group/group.component.d.ts +0 -23
- package/lib/components/group/group.component.d.ts.map +0 -1
- package/lib/components/index.d.ts +0 -8
- package/lib/components/index.d.ts.map +0 -1
- package/lib/components/multiselect/multiselect.component.d.ts +0 -28
- package/lib/components/multiselect/multiselect.component.d.ts.map +0 -1
- package/lib/crud-full.module.d.ts +0 -28
- package/lib/crud-full.module.d.ts.map +0 -1
- package/lib/crud.config.d.ts +0 -65
- package/lib/crud.config.d.ts.map +0 -1
- package/lib/crud.module.d.ts +0 -34
- package/lib/crud.module.d.ts.map +0 -1
- package/lib/factories/list-pagination/list-pagination.factory.d.ts +0 -20
- package/lib/factories/list-pagination/list-pagination.factory.d.ts.map +0 -1
- package/lib/models/index.d.ts +0 -2
- package/lib/models/index.d.ts.map +0 -1
- package/lib/models/interfaces.d.ts +0 -30
- package/lib/models/interfaces.d.ts.map +0 -1
- package/lib/pages/index.d.ts +0 -7
- package/lib/pages/index.d.ts.map +0 -1
- package/lib/pages/item/base/base.component.d.ts +0 -25
- package/lib/pages/item/base/base.component.d.ts.map +0 -1
- package/lib/pages/item/item.component.d.ts +0 -70
- package/lib/pages/item/item.component.d.ts.map +0 -1
- package/lib/pages/item/standard/standard.component.d.ts +0 -8
- package/lib/pages/item/standard/standard.component.d.ts.map +0 -1
- package/lib/pages/list/base/base.component.d.ts +0 -15
- package/lib/pages/list/base/base.component.d.ts.map +0 -1
- package/lib/pages/list/list.component.d.ts +0 -54
- package/lib/pages/list/list.component.d.ts.map +0 -1
- package/lib/pages/list/standard/standard.component.d.ts +0 -14
- package/lib/pages/list/standard/standard.component.d.ts.map +0 -1
- package/lib/pipes/form-options/form-options.pipe.d.ts +0 -15
- package/lib/pipes/form-options/form-options.pipe.d.ts.map +0 -1
- package/lib/pipes/index.d.ts +0 -3
- package/lib/pipes/index.d.ts.map +0 -1
- package/lib/pipes/pipes.module.d.ts +0 -8
- package/lib/pipes/pipes.module.d.ts.map +0 -1
- package/lib/providers/model-possibilities/model-possibilities.provider.d.ts +0 -18
- package/lib/providers/model-possibilities/model-possibilities.provider.d.ts.map +0 -1
- package/lib/services/crud/crud.service.d.ts +0 -38
- package/lib/services/crud/crud.service.d.ts.map +0 -1
- package/lib/services/list-group/list-group.service.d.ts +0 -15
- package/lib/services/list-group/list-group.service.d.ts.map +0 -1
- package/lib/services/page/page.service.d.ts +0 -12
- package/lib/services/page/page.service.d.ts.map +0 -1
- package/lib/services/search/search.service.d.ts +0 -16
- package/lib/services/search/search.service.d.ts.map +0 -1
- package/lib/services/socket/socket.service.d.ts +0 -10
- package/lib/services/socket/socket.service.d.ts.map +0 -1
- package/smartsoft001-crud-shell-angular.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smartsoft001-crud-shell-angular.mjs","sources":["../../../../../../libs/crud/shell/angular/src/lib/+state/crud.selectors.ts","../../../../../../libs/crud/shell/angular/src/lib/crud.config.ts","../../../../../../libs/crud/shell/angular/src/lib/+state/crud.actions.ts","../../../../../../libs/crud/shell/angular/src/lib/+state/crud.facade.ts","../../../../../../libs/crud/shell/angular/src/lib/components/export/export.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/export/export.component.html","../../../../../../libs/crud/shell/angular/src/lib/providers/model-possibilities/model-possibilities.provider.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/base/base.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/text/text.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/text/text.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date/date.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date/date.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/radio/radio.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/radio/radio.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/flag/flag.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/flag/flag.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/check/check.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/check/check.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/int/int.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/int/int.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filter/filter.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filter/filter.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filters/filters.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filters/filters.component.html","../../../../../../libs/crud/shell/angular/src/lib/components/filters-config/filters-config.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/filters-config/filters-config.component.html","../../../../../../libs/crud/shell/angular/src/lib/pipes/form-options/form-options.pipe.ts","../../../../../../libs/crud/shell/angular/src/lib/components/multiselect/multiselect.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/multiselect/multiselect.component.html","../../../../../../libs/crud/shell/angular/src/lib/services/list-group/list-group.service.ts","../../../../../../libs/crud/shell/angular/src/lib/components/group/group.component.ts","../../../../../../libs/crud/shell/angular/src/lib/components/group/group.component.html","../../../../../../libs/crud/shell/angular/src/lib/services/socket/socket.service.ts","../../../../../../libs/crud/shell/angular/src/lib/pipes/pipes.module.ts","../../../../../../libs/crud/shell/angular/src/lib/services/crud/crud.service.ts","../../../../../../libs/crud/shell/angular/src/lib/+state/crud.effects.ts","../../../../../../libs/crud/shell/angular/src/lib/factories/list-pagination/list-pagination.factory.ts","../../../../../../libs/crud/shell/angular/src/lib/components/components.module.ts","../../../../../../libs/crud/shell/angular/src/lib/+state/crud.reducer.ts","../../../../../../libs/crud/shell/angular/src/lib/services/page/page.service.ts","../../../../../../libs/crud/shell/angular/src/lib/services/search/search.service.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/list/base/base.component.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/list/standard/standard.component.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/list/standard/standard.component.html","../../../../../../libs/crud/shell/angular/src/lib/pages/list/list.component.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/item/base/base.component.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/item/standard/standard.component.ts","../../../../../../libs/crud/shell/angular/src/lib/pages/item/standard/standard.component.html","../../../../../../libs/crud/shell/angular/src/lib/pages/item/item.component.ts","../../../../../../libs/crud/shell/angular/src/lib/crud-full.module.ts","../../../../../../libs/crud/shell/angular/src/lib/crud.module.ts","../../../../../../libs/crud/shell/angular/src/smartsoft001-crud-shell-angular.ts"],"sourcesContent":["import {createFeatureSelector, createSelector} from \"@ngrx/store\";\n\nexport const getCrudState = (entity) => createFeatureSelector< any>(entity);\n\nexport const getCrudSelected = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.selected\n);\n\nexport const getCrudMultiSelected = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.multiSelected\n);\n\nexport const getCrudList = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.list\n);\n\nexport const getCrudTotalCount = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.totalCount\n);\n\nexport const getCrudLinks = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.links\n);\n\nexport const getCrudLoaded = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.loaded\n);\n\nexport const getCrudFilter = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.filter\n);\n\nexport const getCrudError = (entity) => createSelector(\n getCrudState(entity),\n (state) => state.error\n);\n","import {Injectable, Type} from \"@angular/core\";\n\nimport {\n IIconButtonOptions, ICellPipe, InputBaseComponent, ListMode, PaginationMode\n} from \"@smartsoft001/angular\";\n\nimport {ICrudFilterQueryItem, ICrudListGroup} from \"./models\";\n\n@Injectable()\nexport class CrudConfig<T> {\n apiUrl: string;\n entity: string;\n type?: any;\n reducerFactory?: () => any;\n baseQuery?: Array<ICrudFilterQueryItem>;\n}\n\n@Injectable()\nexport class CrudFullConfig<T> extends CrudConfig<T> {\n type: any;\n title: string;\n details?: boolean | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any,\n bottom?: any\n }\n };\n edit?: boolean | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any,\n bottom?: any\n }\n };\n add?: boolean | {\n components?: {\n top?: any,\n bottom?: any\n }\n };\n remove?: boolean;\n search?: boolean;\n export?: boolean;\n pagination?: {\n limit: number,\n };\n sort?: boolean | {\n default?: string;\n defaultDesc?: boolean;\n };\n list?: {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any,\n multi?: any\n },\n mode?: ListMode,\n paginationMode?: PaginationMode,\n resetQuery?: \"beforeInit\"\n groups?: Array<ICrudListGroup>\n };\n buttons?: Array<IIconButtonOptions>;\n inputComponents?: {\n [key: string]: Type<InputBaseComponent<T>>\n }\n}\n","import { Action } from \"@ngrx/store\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport { ICrudCreateManyOptions, ICrudFilter } from \"../models/interfaces\";\n\n\n/*\n * Create\n */\nexport const create = function<T extends IEntity<string>>(\n entity: string,\n item: T\n): Action & { item: T } {\n return {\n type: `[${entity}] Create`,\n item\n };\n};\n\nexport const createSuccess = function<T extends IEntity<string>>(\n entity: string,\n item: T\n): Action & { item: T } {\n return {\n type: `[${entity}] Create Success`,\n item\n };\n};\n\nexport const createFailure = function<T extends IEntity<string>>(\n entity: string,\n item: T,\n error\n): Action & { item: T; error } {\n return {\n type: `[${entity}] Create Failure`,\n item,\n error\n };\n};\n\n/*\n * Create many\n */\nexport const createMany = function<T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions }\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many`,\n data\n };\n};\n\nexport const createManySuccess = function<T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions }\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many Success`,\n data\n };\n};\n\nexport const createManyFailure = function<T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n error\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions }; error } {\n return {\n type: `[${entity}] Create Many Failure`,\n data,\n error\n };\n};\n\n/*\n * Read\n */\nexport const read = function(\n entity: string,\n filter: ICrudFilter = null\n): Action & { filter: ICrudFilter } {\n return {\n type: `[${entity}] Read`,\n filter\n };\n};\n\nexport const readSuccess = function<T extends IEntity<string>, F>(\n entity: string,\n filter: F,\n result: { data: T[]; totalCount: number; links }\n): Action & { result: { data: T[]; totalCount: number; links }; filter: F } {\n return {\n type: `[${entity}] Read Success`,\n result,\n filter\n };\n};\n\nexport const readFailure = function<F>(\n entity: string,\n filter: F,\n error\n): Action & { filter: F; error } {\n return {\n type: `[${entity}] Read Failure`,\n filter,\n error\n };\n};\n\n/*\n * Clear\n */\nexport const clear = function(\n entity: string,\n): Action {\n return {\n type: `[${entity}] Clear`\n };\n};\n\n/*\n * Export\n */\nexport const exportList = function(\n entity: string,\n filter: ICrudFilter = null,\n format\n): Action & { filter: ICrudFilter, format } {\n return {\n type: `[${entity}] Export`,\n filter,\n format\n };\n};\n\nexport const exportListSuccess = function<T extends IEntity<string>, F>(\n entity: string,\n filter: F\n): Action & { filter: F } {\n return {\n type: `[${entity}] Export Success`,\n filter\n };\n};\n\nexport const exportListFailure = function<F>(\n entity: string,\n filter: F,\n error\n): Action & { filter: F; error } {\n return {\n type: `[${entity}] Export Failure`,\n filter,\n error\n };\n};\n\n/*\n * Select\n */\nexport const select = function(\n entity: string,\n id: string\n): Action & { id: string } {\n return {\n type: `[${entity}] Select`,\n id\n };\n};\n\nexport const selectSuccess = function<T extends IEntity<string>, F>(\n entity: string,\n id: string,\n item: T\n): Action & { id: string; item: T } {\n return {\n type: `[${entity}] Select Success`,\n id,\n item\n };\n};\n\nexport const selectFailure = function<F>(\n entity: string,\n id: string,\n error\n): Action & { id: string; error } {\n return {\n type: `[${entity}] Select Failure`,\n id,\n error\n };\n};\n\nexport const unselect = function(entity: string): Action {\n return {\n type: `[${entity}] Unselect`\n };\n};\n\n/*\n * MultiSelect\n */\nexport const multiSelect = function<T extends IEntity<string>>(\n entity: string,\n items: Array<T>\n): Action & { items: Array<T> } {\n return {\n type: `[${entity}] MultiSelect`,\n items\n };\n};\n\n/*\n * Update\n */\nexport const update = function<T extends IEntity<string>>(\n entity: string,\n item: T\n): Action & { item: T } {\n return {\n type: `[${entity}] Update`,\n item\n };\n};\n\nexport const updateSuccess = function<T extends IEntity<string>>(\n entity: string,\n item: T\n): Action & { item: T } {\n return {\n type: `[${entity}] Update Success`,\n item\n };\n};\n\nexport const updateFailure = function<T extends IEntity<string>>(\n entity: string,\n item: T,\n error\n): Action & { item: T; error } {\n return {\n type: `[${entity}] Update Failure`,\n item,\n error\n };\n};\n\n/*\n * Update partial\n */\nexport const updatePartial = function<T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string }\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial`,\n item\n };\n};\n\nexport const updatePartialSuccess = function<T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string }\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial Success`,\n item\n };\n};\n\nexport const updatePartialFailure = function<T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n error\n): Action & { item: Partial<T> & { id: string }; error } {\n return {\n type: `[${entity}] Update partial Failure`,\n item,\n error\n };\n};\n\n/*\n * Update partial many\n */\nexport const updatePartialMany = function<T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[]\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many`,\n items\n };\n};\n\nexport const updatePartialManySuccess = function<T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[]\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many Success`,\n items\n };\n};\n\nexport const updatePartialManyFailure = function<T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n error\n): Action & { items: Partial<T> & { id: string }[]; error } {\n return {\n type: `[${entity}] Update partial many Failure`,\n items,\n error\n };\n};\n\n/*\n * Delete\n */\nexport const deleteItem = function(\n entity: string,\n id: string\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete`,\n id\n };\n};\n\nexport const deleteSuccess = function(\n entity: string,\n id: string\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete Success`,\n id\n };\n};\n\nexport const deleteFailure = function<F>(\n entity: string,\n id: string,\n error\n): Action & { id: string; error } {\n return {\n type: `[${entity}] Delete Failure`,\n id,\n error\n };\n};\n","import { select, Store } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\nimport { Injectable } from \"@angular/core\";\nimport { map, tap } from \"rxjs/operators\";\nimport * as _ from \"lodash\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\n\nimport { CrudConfig } from \"../crud.config\";\nimport * as CrudActions from \"./crud.actions\";\nimport * as CrudSelectors from \"./crud.selectors\";\nimport {ICrudCreateManyOptions, ICrudFilter} from \"../models/interfaces\";\nimport {NgrxStoreService} from \"@smartsoft001/angular\";\n\n\n@Injectable()\nexport class CrudFacade<T extends IEntity<string>> {\n selected: T;\n multiSelected: Array<T>;\n list: Array<T>;\n filter: ICrudFilter;\n\n loaded$: Observable<boolean> = this.store.pipe(\n select(CrudSelectors.getCrudLoaded(this.config.entity))\n );\n loading$: Observable<boolean> = this.store.pipe(\n select(CrudSelectors.getCrudLoaded(this.config.entity)),\n map(l => !l)\n );\n selected$: Observable<T> = this.store.pipe(\n select(CrudSelectors.getCrudSelected(this.config.entity)),\n tap(s => {\n this.selected = s;\n })\n );\n multiSelected$: Observable<T[]> = this.store.pipe(\n select(CrudSelectors.getCrudMultiSelected(this.config.entity)),\n tap(s => {\n this.multiSelected = s;\n })\n );\n list$: Observable<T[]> = this.store.pipe(\n select(CrudSelectors.getCrudList(this.config.entity)),\n tap(l => {\n this.list = l;\n })\n );\n filter$: Observable<ICrudFilter> = this.store.pipe(\n select(CrudSelectors.getCrudFilter(this.config.entity)),\n tap(f => {\n this.filter = f;\n })\n );\n totalCount$: Observable<number> = this.store.pipe(\n select(CrudSelectors.getCrudTotalCount(this.config.entity))\n );\n links$: Observable<any> = this.store.pipe(\n select(CrudSelectors.getCrudLinks(this.config.entity))\n );\n\n error$: Observable<any> = this.store.pipe(\n select(CrudSelectors.getCrudError(this.config.entity))\n );\n\n constructor(private store: Store<any>, private config: CrudConfig<T>) {\n if (NgrxStoreService.store) {\n this.store = NgrxStoreService.store;\n }\n }\n\n create(item: T): void {\n this.store.dispatch(CrudActions.create(this.config.entity, item));\n }\n\n createMany(items: Array<T>, options: ICrudCreateManyOptions): void {\n this.store.dispatch(CrudActions.createMany(this.config.entity, { items, options }));\n }\n\n read(filter: ICrudFilter = null): void {\n let baseQuery = [];\n if (this.config.baseQuery) {\n baseQuery = this.config.baseQuery;\n }\n\n const fullFilter = {\n ...(filter ? filter : {}),\n query: filter && filter.query ? filter.query : baseQuery\n };\n\n this.store.dispatch(CrudActions.read(this.config.entity, fullFilter));\n }\n\n clear(): void {\n this.store.dispatch(CrudActions.clear(this.config.entity));\n }\n\n select(id: string): void {\n this.store.dispatch(CrudActions.select(this.config.entity, id));\n }\n\n unselect(): void {\n this.store.dispatch(CrudActions.unselect(this.config.entity));\n }\n\n multiSelect(items: Array<T>): void {\n this.store.dispatch(CrudActions.multiSelect(this.config.entity, items));\n }\n\n update(item: T): void {\n this.getStore().dispatch(CrudActions.update(this.config.entity, item));\n }\n\n export(filter: ICrudFilter = null, format = null): void {\n this.getStore().dispatch(CrudActions.exportList(this.config.entity, filter, format));\n }\n\n updatePartial(item: Partial<T> & { id: string }): void {\n this.getStore().dispatch(CrudActions.updatePartial(this.config.entity, item));\n }\n\n updatePartialMany(items: (Partial<T> & {id: string})[]) {\n this.getStore().dispatch(CrudActions.updatePartialMany(this.config.entity, items));\n }\n\n delete(id: string): void {\n this.getStore().dispatch(CrudActions.deleteItem(this.config.entity, id));\n }\n\n private getStore(): Store {\n if (NgrxStoreService.store) return NgrxStoreService.store;\n\n return this.store;\n }\n}\n","import {Component, ElementRef, OnInit} from '@angular/core';\nimport {Observable} from \"rxjs\";\n\nimport {BaseComponent, IButtonOptions, PopoverService, StyleService} from \"@smartsoft001/angular\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {CrudFacade} from \"../../+state/crud.facade\";\n\n@Component({\n selector: 'smart-crud-export',\n templateUrl: './export.component.html',\n styleUrls: ['./export.component.scss']\n})\nexport class ExportComponent<T extends IEntity<string>> extends BaseComponent implements OnInit {\n\n buttonExportCsvOptions: IButtonOptions = this.initButtonExportOptions('csv');\n buttonExportXlsxOptions: IButtonOptions = this.initButtonExportOptions('xlsx');\n\n loading$: Observable<boolean> = this.facade.loading$;\n\n constructor(\n private facade: CrudFacade<T>,\n private popoverService: PopoverService,\n private styleService: StyleService,\n private elementRef: ElementRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n private initButtonExportOptions(format: string): IButtonOptions {\n return {\n click: () => {\n this.facade.export({\n ...this.facade.filter,\n offset: null,\n limit: null\n }, format);\n\n const subscription = this.facade.loaded$.subscribe(val => {\n if (!val) return;\n this.popoverService.close();\n subscription.unsubscribe();\n });\n },\n loading$: this.facade.loading$,\n expand: 'block'\n }\n }\n}\n","<div class=\"smart-content\">\n <p>\n <smart-button [options]=\"buttonExportCsvOptions\">CSV</smart-button>\n </p>\n <p>\n <smart-button [options]=\"buttonExportXlsxOptions\">XLSX</smart-button>\n </p>\n</div>","import { InjectionToken } from \"@angular/core\";\nimport {Observable} from \"rxjs\";\n\n/**\n * @deprecated - please, use IModelPossibilitiesProvider from @smartsoft001/angular\n */\nexport abstract class ICrudModelPossibilitiesProvider {\n abstract get<T>(type: any): { [key: string]: Observable<{ id: any; text: string }[]> };\n}\n\n/**\n * @deprecated - please, use MODEL_POSSIBILITIES_PROVIDER from @smartsoft001/angular\n */\nexport const CRUD_MODEL_POSSIBILITIES_PROVIDER = new InjectionToken<\n ICrudModelPossibilitiesProvider\n>(\"CRUD_MODEL_POSSIBILITIES_PROVIDER\");\n","import {Directive, Inject, Input, OnInit, Optional} from \"@angular/core\";\nimport {Debounce} from \"lodash-decorators\";\nimport {Observable} from \"rxjs\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport {FieldType, IModelFilter} from \"@smartsoft001/models\";\n\nimport {ICrudFilter} from \"../../../models/interfaces\";\nimport {CrudFacade} from \"../../../+state/crud.facade\";\nimport {\n CRUD_MODEL_POSSIBILITIES_PROVIDER,\n ICrudModelPossibilitiesProvider,\n} from \"../../../providers/model-possibilities/model-possibilities.provider\";\nimport {CrudConfig} from \"../../../crud.config\";\nimport {TranslateService} from \"@ngx-translate/core\";\n\n@Directive()\nexport class BaseComponent<T extends IEntity<string>> implements OnInit {\n possibilities$: Observable<{ id: any; text: string }[]>;\n\n @Input() item: IModelFilter;\n @Input() filter: ICrudFilter;\n\n get value(): any {\n if (this.isArrayType()) {\n return this.filter.query\n .filter(\n (q) => q.key === this.item.key && q.type === this.item.type\n )\n .map(q => q.value);\n }\n\n const query = this.filter.query.find(\n (q) => q.key === this.item.key && q.type === this.item.type\n );\n return query?.value;\n }\n\n set value(val: any) {\n this.refresh(val);\n }\n\n get minValue(): any {\n if (this.isArrayType()) {\n return this.filter.query\n .filter(\n (q) => q.key === this.item.key && q.type === \">=\"\n )\n .map(q => q.value);\n }\n\n const query = this.filter.query.find(\n (q) => q.key === this.item.key && q.type === \">=\"\n );\n return query?.value;\n }\n\n set minValue(val: any) {\n this.refresh(val, \">=\");\n }\n\n get maxValue(): any {\n if (this.isArrayType()) {\n return this.filter.query\n .filter(\n (q) => q.key === this.item.key && q.type === \"<=\"\n )\n .map(q => q.value);\n }\n\n const query = this.filter.query.find(\n (q) => q.key === this.item.key && q.type === \"<=\"\n );\n return query?.value;\n }\n\n set maxValue(val: any) {\n this.refresh(val, \"<=\");\n }\n\n get lang(): string {\n return this.translateService.currentLang;\n }\n\n constructor(\n protected facade: CrudFacade<T>,\n private config: CrudConfig<T>,\n @Optional()\n @Inject(CRUD_MODEL_POSSIBILITIES_PROVIDER)\n private modelPossibilitiesProvider: ICrudModelPossibilitiesProvider,\n protected translateService: TranslateService\n ) {}\n\n @Debounce(500)\n refresh(val: any, type = null): void {\n if (!type) type = this.item.type;\n\n this.filter.offset = 0;\n\n if (this.isArrayType()) {\n this.refreshForArray(val as [], type);\n return;\n }\n\n let query = this.filter.query.find(\n (q) => q.key === this.item.key && q.type === type\n );\n\n if (val === null || val === undefined || val === '') {\n const index = this.filter.query.indexOf(query);\n if (index > -1) {\n this.filter.query.splice(index, 1);\n }\n\n this.facade.read(this.filter);\n return;\n }\n\n if (!query) {\n query = {\n key: this.item.key,\n type: type,\n value: null,\n };\n\n this.filter.query.push(query);\n }\n\n query.value = val;\n query.label = this.item.label;\n\n this.facade.read(this.filter);\n }\n\n clear(): void {\n this.filter.query = this.filter.query.filter(\n (q) => q.key !== this.item.key\n );\n this.filter.offset = 0;\n this.facade.read(this.filter);\n }\n\n ngOnInit(): void {\n this.initPossibilities();\n }\n\n private initPossibilities(): void {\n let possibilities = this.item.possibilities$;\n\n if (this.modelPossibilitiesProvider) {\n const possibilitiesFromProvider = this.modelPossibilitiesProvider.get(this.config.type);\n if (possibilitiesFromProvider && possibilitiesFromProvider[this.item.key])\n possibilities = possibilitiesFromProvider[this.item.key];\n }\n\n this.possibilities$ = possibilities;\n }\n\n private isArrayType(): boolean {\n return (this.item?.fieldType === FieldType.check);\n }\n\n private refreshForArray(vals: [], type): void {\n const queries = this.filter.query.filter(\n (q) => q.key === this.item.key && q.type === type\n );\n\n queries.forEach(query => {\n const index = this.filter.query.indexOf(query);\n if (index > -1) {\n this.filter.query.splice(index, 1);\n }\n });\n\n if (vals === null || vals === undefined || !vals.length) {\n this.facade.read(this.filter);\n return;\n }\n\n vals.forEach(val => {\n const query = {\n key: this.item.key,\n type: type,\n value: val,\n };\n\n this.filter.query.push(query);\n });\n\n this.facade.read(this.filter);\n }\n}\n","import { Component } from '@angular/core';\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss']\n})\nexport class FilterTextComponent<T extends IEntity<string>> extends BaseComponent<T> {\n\n}\n","<ion-row>\n <ion-col>\n <ion-label position=\"floating\">\n {{ item.label | translate }}\n </ion-label>\n <ion-input [(ngModel)]=\"value\"></ion-input>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value\">\n <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import { Component } from '@angular/core';\n// @ts-ignore\nimport moment from \"moment\";\nimport {GuidService} from \"@smartsoft001/utils\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-date',\n templateUrl: './date.component.html',\n styleUrls: ['./date.component.scss']\n})\nexport class FilterDateComponent<T extends IEntity<string>> extends BaseComponent<T> {\n id = GuidService.create();\n\n get allowAdvanced(): boolean {\n return this.item?.type === '=';\n }\n\n set customValue(val) {\n const momentDate = moment(val);\n this.value = (val as string)?.length >= 10 && momentDate.isValid() ? momentDate.format('YYYY-MM-DD') : val;\n }\n\n get customValue(): any {\n return this.value;\n }\n\n set customMinValue(val) {\n const momentDate = moment(val);\n this.minValue = (val as string)?.length >= 10 && momentDate.isValid() ? momentDate.format('YYYY-MM-DD') : val;\n }\n\n get customMinValue(): any {\n return this.minValue;\n }\n\n set customMaxValue(val) {\n const momentDate = moment(val);\n this.maxValue = (val as string)?.length >= 10 && momentDate.isValid() ? momentDate.format('YYYY-MM-DD') : val;\n }\n\n get customMaxValue(): any {\n return this.maxValue;\n }\n}\n","<ion-row>\n <ion-col>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n <ion-item button=\"true\" id=\"open-date-input-{{ id }}\" color=\"primary\">\n <ion-text>{{ customValue ? customValue : ('select' | translate) }}</ion-text>\n <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">\n <ng-template>\n <ion-datetime displayFormat=\"YYYY-MM-DD\"\n pickerFormat=\"YYYY-MM-DD\"\n [(ngModel)]=\"customValue\"\n presentation=\"date\"\n ></ion-datetime>\n </ng-template>\n </ion-popover>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value\">\n <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {IonDatetime} from \"@ionic/angular\";\nimport {Subscription} from \"rxjs\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport { GuidService } from '@smartsoft001/utils';\n\nimport {FilterDateComponent} from \"../date/date.component\";\n\n@Component({\n selector: 'smart-crud-filter-date-with-edit',\n templateUrl: './date-with-edit.component.html',\n styleUrls: ['./date-with-edit.component.scss']\n})\nexport class FilterDateWithEditComponent<T extends IEntity<string>> extends FilterDateComponent<T>\nimplements OnInit, OnDestroy {\n private _subscriptions = new Subscription();\n\n advanced = false;\n id = GuidService.create();\n\n @ViewChild(IonDatetime, { read: IonDatetime, static: false }) dateTimePicker: IonDatetime;\n\n toggleAdvanced(): void {\n this.advanced = !this.advanced;\n if (this.advanced) this.value = null;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.dateTimePicker) {\n this._subscriptions.add(this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n this.customValue = val.detail.value;\n }));\n } else {\n console.error('dateTimePicker not found!');\n }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n\n","<ion-row>\n <ion-col>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n\n <ion-input placeholder=\"YYYY-MM-DD\"\n [(ngModel)]=\"customValue\"\n *ngIf=\"!advanced\"\n [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"\n ></ion-input>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"!advanced\">\n <ion-button id=\"open-date-input-{{ id }}\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"calendar-outline\"></ion-icon>\n <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">\n <ng-template>\n <ion-datetime displayFormat=\"YYYY-MM-DD\"\n pickerFormat=\"YYYY-MM-DD\"\n [(ngModel)]=\"customValue\"\n presentation=\"date\"\n first-day-of-week=\"1\"\n locale=\"{{ lang }}\"\n ></ion-datetime>\n </ng-template>\n </ion-popover>\n </ion-button>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"allowAdvanced\">\n <ion-button (click)=\"toggleAdvanced()\" class=\"squere-button\" [disabled]=\"minValue || maxValue\">\n <ion-icon *ngIf=\"!advanced\" slot=\"icon-only\" name=\"settings-outline\"></ion-icon>\n <ion-icon *ngIf=\"advanced\" slot=\"icon-only\" name=\"settings\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value || minValue || maxValue\">\n <ion-button color=\"danger\" (click)=\"clear()\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>\n<ion-row *ngIf=\"(advanced || minValue || maxValue) && allowAdvanced\">\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'from' | translate }}\n </ion-label>\n <ion-input placeholder=\"YYYY-MM-DD\"\n [(ngModel)]=\"customMinValue\"\n [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"\n ></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"customMinValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '>=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'to' | translate }}\n </ion-label>\n <ion-input placeholder=\"YYYY-MM-DD\"\n [(ngModel)]=\"customMaxValue\"\n [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"\n ></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"customMaxValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '<=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {IonDatetime} from \"@ionic/angular\";\nimport {Subscription} from \"rxjs\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport { GuidService } from '@smartsoft001/utils';\n\nimport {FilterDateComponent} from \"../date/date.component\";\n\n@Component({\n selector: 'smart-crud-filter-date-time',\n templateUrl: './date-time.component.html',\n styleUrls: ['./date-time.component.scss']\n})\nexport class FilterDateTimeComponent<T extends IEntity<string>> extends FilterDateComponent<T>\nimplements OnInit, OnDestroy {\n private _subscriptions = new Subscription();\n\n id = GuidService.create();\n\n @ViewChild(IonDatetime, { read: IonDatetime, static: false }) dateTimePicker: IonDatetime;\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.dateTimePicker) {\n this._subscriptions.add(this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n this.customValue = val.detail.value;\n }));\n } else {\n console.error('dateTimePicker not found!');\n }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n\n","<ion-row>\n <ion-col>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value || minValue || maxValue\">\n <ion-button color=\"danger\" (click)=\"clear()\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>\n<ion-row>\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'from' | translate }}\n </ion-label>\n <ion-input placeholder=\"YYYY-MM-DD HH:mm:ss\"\n [(ngModel)]=\"customMinValue\"\n pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"\n ></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"customMinValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '>=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'to' | translate }}\n </ion-label>\n <ion-input placeholder=\"YYYY-MM-DD HH:mm:ss\"\n [(ngModel)]=\"customMaxValue\"\n pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"\n ></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"customMaxValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '<=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import { Component } from '@angular/core';\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss']\n})\nexport class FilterRadioComponent<T extends IEntity<string>> extends BaseComponent<T> {\n\n}\n","<ion-row>\n <ion-col>\n <ion-radio-group [(ngModel)]=\"value\">\n <ion-item-divider>\n <ion-icon slot=\"start\" name=\"filter-outline\"></ion-icon>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n <ion-button *ngIf=\"value || value === false\" slot=\"end\" color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-item-divider>\n\n <ion-item *ngFor=\"let item of possibilities$ | async\">\n <ion-label>{{ item.text | translate }}</ion-label>\n <ion-radio [value]=\"item.id\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n </ion-col>\n <!-- <ion-col size=\"auto\" *ngIf=\"value\">\n <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col> -->\n</ion-row>","import { Component } from '@angular/core';\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-flag',\n templateUrl: './flag.component.html',\n styleUrls: ['./flag.component.scss']\n})\nexport class FilterFlagComponent<T extends IEntity<string>> extends BaseComponent<T> {\n\n}\n","<ion-row>\n <ion-col>\n <div class=\"flag-container\">\n <ion-label position=\"static\">\n {{ item.label | translate }}\n </ion-label>\n <ion-checkbox [(ngModel)]=\"value\" slot=\"end\"></ion-checkbox>\n </div>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value === true || value === false\">\n <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import {AfterContentInit, Component} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport { combineLatest } from 'rxjs';\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-check',\n templateUrl: './check.component.html',\n styleUrls: ['./check.component.scss']\n})\nexport class FilterCheckComponent<T extends IEntity<string>> extends BaseComponent<T> implements AfterContentInit {\n list$: Observable<{ value: any, isCheck: boolean }[]>;\n\n ngAfterContentInit(): void {\n this.list$ = combineLatest([ this.possibilities$, this.facade.filter$]).pipe((\n map(([possibilities]) => {\n return possibilities.map(pos => ({\n value: pos,\n isCheck: this.value.some(r => r === pos.id)\n }))\n })\n ));\n }\n\n onCheckChange(checked: boolean, entry: { value: any; isCheck: boolean }) {\n if (checked && !this.value.some(r => r === entry.value.id)) {\n this.value = [\n ...this.value,\n entry.value.id\n ]\n }\n\n if (!checked && this.value.some(r => r === entry.value.id)) {\n this.value = this.value.filter(r => r !== entry.value.id);\n }\n }\n}\n","<ion-row>\n <ion-col>\n <ion-item-divider>\n <ion-icon slot=\"start\" name=\"filter-outline\"></ion-icon>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n <ion-button *ngIf=\"value && value.length\" slot=\"end\" color=\"danger\" (click)=\"refresh([])\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-item-divider>\n <ion-item *ngFor=\"let entry of list$ | async\">\n <ion-label>{{entry.value.text | translate}}</ion-label>\n <ion-checkbox slot=\"end\" [checked]=\"entry.isCheck\" (ionChange)=\"onCheckChange($event.detail.checked, entry)\"></ion-checkbox>\n </ion-item>\n </ion-col>\n <!-- <ion-col size=\"auto\" *ngIf=\"value\">\n <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col> -->\n</ion-row>","import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {IonDatetime} from \"@ionic/angular\";\nimport {Subscription} from \"rxjs\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {FilterDateComponent} from \"../date/date.component\";\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: 'smart-crud-filter-int',\n templateUrl: './int.component.html',\n styleUrls: ['./int.component.scss']\n})\nexport class FilterIntComponent<T extends IEntity<string>> extends BaseComponent<T>\nimplements OnInit, OnDestroy {\n private _subscriptions = new Subscription();\n\n advanced = false;\n\n get allowAdvanced(): boolean {\n return this.item?.type === '=';\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n\n toggleAdvanced(): void {\n this.advanced = !this.advanced;\n if (this.advanced) this.value = null;\n }\n}\n\n","<ion-row>\n <ion-col>\n <ion-label>\n {{ item.label | translate }}\n </ion-label>\n <ion-input [(ngModel)]=\"value\" type=\"number\" step=\"1\" *ngIf=\"!advanced\"></ion-input>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"allowAdvanced\">\n <ion-button (click)=\"toggleAdvanced()\" class=\"squere-button\" [disabled]=\"minValue || maxValue\">\n <ion-icon *ngIf=\"!advanced\" slot=\"icon-only\" name=\"settings-outline\"></ion-icon>\n <ion-icon *ngIf=\"advanced\" slot=\"icon-only\" name=\"settings\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"value || minValue || maxValue\">\n <ion-button color=\"danger\" (click)=\"clear()\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>\n<ion-row *ngIf=\"(advanced || minValue || maxValue) && allowAdvanced\">\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'from' | translate }}\n </ion-label>\n <ion-input [(ngModel)]=\"minValue\" type=\"number\" step=\"1\"></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"minValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '>=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col>\n <ion-item>\n <ion-label>\n {{ 'to' | translate }}\n </ion-label>\n <ion-input [(ngModel)]=\"maxValue\" type=\"number\" step=\"1\"></ion-input>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"maxValue\">\n <ion-button color=\"danger\" (click)=\"refresh(null, '<=')\" class=\"squere-button\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n</ion-row>","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport {FieldType, IModelFilter} from \"@smartsoft001/models\";\n\nimport {ICrudFilter} from \"../../models/interfaces\";\n\n@Component({\n selector: \"smart-crud-filter\",\n templateUrl: \"./filter.component.html\",\n styleUrls: [\"./filter.component.scss\"],\n})\nexport class FilterComponent implements OnInit {\n FieldType = FieldType;\n\n @Input() item: IModelFilter;\n @Input() filter: ICrudFilter;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ion-item [ngSwitch]=\"item.fieldType\">\n <smart-crud-filter-date\n *ngSwitchCase=\"FieldType.date\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-date>\n\n <smart-crud-filter-date-with-edit\n *ngSwitchCase=\"FieldType.dateWithEdit\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-date-with-edit>\n\n <smart-crud-filter-date-time\n *ngSwitchCase=\"FieldType.dateTime\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-date-time>\n\n <smart-crud-filter-radio\n *ngSwitchCase=\"FieldType.radio\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-radio>\n\n <smart-crud-filter-check\n *ngSwitchCase=\"FieldType.check\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-check>\n\n <smart-crud-filter-flag\n *ngSwitchCase=\"FieldType.flag\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-flag>\n\n <smart-crud-filter-int\n *ngSwitchCase=\"FieldType.int\"\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-int>\n\n <smart-crud-filter-text\n *ngSwitchDefault\n [item]=\"item\"\n [filter]=\"filter\"\n ></smart-crud-filter-text>\n</ion-item>\n","import {Component, ElementRef, Input, OnInit} from '@angular/core';\nimport {Observable} from \"rxjs\";\n\nimport {AuthService, MenuService, StyleService} from \"@smartsoft001/angular\";\nimport {\n FieldType,\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldListMetadata,\n IModelFilter\n} from \"@smartsoft001/models\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {ICrudFilter} from \"../../models/interfaces\";\nimport {CrudConfig} from \"../../crud.config\";\nimport {CrudFacade} from \"../../+state/crud.facade\";\n\n/**\n * This component is only to use in crud module\n * @requires CrudModule\n * @example\n *\n * html: <smart-crud-filters></smart-crud-filters>\n *\n * use on the model:\n * @Model({\n titleKey: 'body',\n filters: [\n {\n label: 'testNegation',\n key: 'body',\n type: '!=',\n },\n {\n label: 'fromDate',\n key: 'createDate',\n type: '<=',\n fieldType: FieldType.dateWithEdit\n },\n {\n label: 'select',\n key: 'type',\n type: '=',\n fieldType: FieldType.radio,\n possibilities$: of([\n {\n id: 1, text: 'Test 1'\n },\n {\n id: 2, text: 'Test 2'\n }\n ])\n }\n ]\n})\n *\n * use on the field (list.filter property):\n * @Field({\n create: modifyMetdata,\n update: {\n ...modifyMetdata,\n multi: true\n },\n type: FieldType.longText,\n details: true,\n list: {\n order: 2,\n filter: true\n }\n })\n body: string;\n */\n@Component({\n selector: 'smart-crud-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss']\n})\nexport class FiltersComponent<T extends IEntity<string>> implements OnInit {\n list: Array<IModelFilter>;\n\n filter$: Observable<ICrudFilter>;\n\n /**\n * Hide menu used only from MenuService\n */\n @Input() hideMenu: boolean;\n\n constructor(\n private menuService: MenuService,\n private config: CrudConfig<T>,\n private facade: CrudFacade<T>,\n private styleService: StyleService,\n private elementRef: ElementRef\n ) { }\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n\n const modelFilters = getModelOptions(this.config.type).filters;\n\n this.list = [\n ...(modelFilters ? modelFilters.map(item => {\n if (!item.label) {\n item.label = 'MODEL.' + item.key;\n }\n return item;\n }) : []),\n ...getModelFieldsWithOptions(new this.config.type())\n .filter(item => (item.options?.list as IFieldListMetadata)?.filter)\n .map(item => ({\n key: item.key,\n type: item.options.type === FieldType.text || item.options.type === FieldType.longText\n ? '~=' as '~=' : '=' as '=',\n label: 'MODEL.' + item.key,\n fieldType: item.options.type\n }))\n ];\n this.filter$ = this.facade.filter$;\n }\n}\n","<ion-header [hidden]=\"hideMenu\">\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'filters' | translate }}</ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content style=\"height: 100vh;\">\n <ion-list>\n <ng-container *ngFor=\"let item of list\">\n <smart-crud-filter [item]=\"item\" [filter]=\"filter$ | async\"></smart-crud-filter>\n </ng-container>\n </ion-list>\n <div class=\"menu-bottom-space\">\n \n </div>\n</ion-content>","import {Component, ElementRef, OnInit} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport {StyleService} from \"@smartsoft001/angular\";\n\nimport {ICrudFilterQueryItem} from '../../models/interfaces';\nimport { CrudFacade } from '../../+state/crud.facade';\n\n@Component({\n selector: 'smart-crud-filters-config',\n templateUrl: './filters-config.component.html',\n styleUrls: ['./filters-config.component.scss']\n})\nexport class FiltersConfigComponent<T extends IEntity<string>> implements OnInit {\n query$: Observable<ICrudFilterQueryItem[]>;\n\n constructor(\n private readonly facade: CrudFacade<any>,\n private styleService: StyleService,\n private elementRef: ElementRef\n ) { }\n\n onRemoveQuery(item: ICrudFilterQueryItem): void {\n const index = this.facade.filter.query.indexOf(item);\n if (index > -1) {\n this.facade.filter.query.splice(index, 1);\n }\n this.facade.read(this.facade.filter);\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n\n this.query$ = this.facade.filter$.pipe(\n map(filter => {\n return filter?.query?.filter(i => !i.hidden);\n })\n );\n }\n}\n"," <ng-container *ngIf=\"query$ | async; let query\">\n <ion-toolbar *ngIf=\"query?.length\">\n <ion-chip *ngFor=\"let item of query\" (click)=\"onRemoveQuery(item)\" color=\"medium\" outline=\"true\">\n <ion-icon name=\"filter-circle-outline\" color=\"primary\"></ion-icon>\n <ion-label>{{ 'MODEL.' + item.key | translate }} {{ item.type }} {{ item.value | translate }}</ion-label>\n <ion-icon name=\"close\" color=\"danger\"></ion-icon>\n </ion-chip>\n </ion-toolbar>\n</ng-container>","import {Inject, Optional, Pipe, PipeTransform, Type} from \"@angular/core\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport {IFormOptions, InputBaseComponent} from \"@smartsoft001/angular\";\n\nimport {\n CRUD_MODEL_POSSIBILITIES_PROVIDER,\n ICrudModelPossibilitiesProvider,\n} from \"../../providers/model-possibilities/model-possibilities.provider\";\n\n@Pipe({\n name: \"smartFormOptions\",\n})\nexport class FormOptionsPipe<T extends IEntity<string>>\n implements PipeTransform {\n constructor(\n @Optional()\n @Inject(CRUD_MODEL_POSSIBILITIES_PROVIDER)\n private modelPossibilitiesProvider: ICrudModelPossibilitiesProvider\n ) {}\n\n transform(\n item: T,\n mode: string,\n type: any,\n uniqueProvider?: (values: Record<keyof T, any>) => Promise<boolean>,\n inputComponents?: { [key: string]: Type<InputBaseComponent<any>> }\n ): IFormOptions<T> {\n if (!mode || !type) return null;\n\n let possibilities = {};\n\n if (type && this.modelPossibilitiesProvider) {\n possibilities = this.modelPossibilitiesProvider.get(type);\n }\n\n if (mode === \"create\") {\n return {\n mode: \"create\",\n possibilities,\n inputComponents,\n uniqueProvider,\n model: new type(),\n };\n } else {\n const model = new type();\n\n if (item) {\n Object.keys(item).forEach((key) => {\n model[key] = item[key];\n });\n }\n\n return {\n mode: mode,\n uniqueProvider,\n possibilities: possibilities,\n inputComponents,\n model: model,\n };\n }\n }\n}\n","import {IEntity} from \"@smartsoft001/domain-core\";\nimport {Component, OnInit} from \"@angular/core\";\nimport {Observable, Subject} from \"rxjs\";\nimport {tap} from \"rxjs/operators\";\nimport * as _ from \"lodash\";\n\nimport {getModelFieldsWithOptions, IFieldEditMetadata} from \"@smartsoft001/models\";\nimport {IButtonOptions, MenuService} from \"@smartsoft001/angular\";\n\nimport {CrudFacade} from \"../../+state/crud.facade\";\nimport {CrudConfig, CrudFullConfig} from \"../../crud.config\";\n\n@Component({\n selector: 'smart-crud-multiselect',\n templateUrl: './multiselect.component.html',\n styleUrls: ['./multiselect.component.scss']\n})\nexport class MultiselectComponent<T extends IEntity<string>> implements OnInit {\n private _list: Array<T>;\n private _changes: Partial<T>\n\n item: T;\n valid: boolean;\n buttonOptions: IButtonOptions = {\n click: async () => {\n const result = this._list.map(item => {\n return {\n ...this._changes,\n id: item.id\n }\n });\n\n this.facade.updatePartialMany(result);\n await this.menuService.closeEnd();\n },\n confirm: true\n }\n lock: boolean;\n showForm = false;\n\n list$: Observable<T[]>;\n\n constructor(\n private facade: CrudFacade<T>,\n public config: CrudFullConfig<T>,\n private menuService: MenuService\n ) {\n this.list$ = this.facade.multiSelected$.pipe(\n tap(list => {\n this.lock = true;\n const model = new this.config.type();\n\n const fieldsWithOptions = getModelFieldsWithOptions(model)\n .filter(f => (f.options.update as IFieldEditMetadata)?.multi);\n\n this.showForm = !!fieldsWithOptions.length;\n\n fieldsWithOptions.forEach(({ key }) => {\n const uniques = _.uniq(list.map(i => i[key]));\n\n if (uniques.length === 1) {\n model[key] = uniques[0];\n }\n });\n\n this.item = model;\n })\n );\n }\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n onPartialChange(changes: Partial<T>, list: Array<T>) {\n this.lock = false;\n this._list = list;\n this._changes = changes;\n }\n\n onValidChange(valid: boolean) {\n this.valid = valid;\n }\n\n ngOnInit(): void {\n\n }\n}","<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"config?.list?.components?.multi\">\n <ng-template [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"showForm && item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>","import {IEntity} from \"@smartsoft001/domain-core\";\nimport {Injectable} from \"@angular/core\";\nimport { debounce } from \"lodash-decorators\";\n\nimport {ICrudListGroup} from \"../../models/interfaces\";\nimport { CrudFacade } from \"../../+state/crud.facade\";\n\n@Injectable()\nexport class CrudListGroupService<T extends IEntity<string>> {\n private _destroyed: Array<ICrudListGroup> = [];\n\n constructor(private facade: CrudFacade<T>,) {\n }\n\n change(val, item: ICrudListGroup, groups: Array<ICrudListGroup>, force: boolean): void {\n if (val || force) {\n item.changed = true;\n\n let current = this.facade.filter.query.find(q => q.key === item.key && q.type === '=');\n\n if (!current) {\n current = {\n key: item.key,\n type: \"=\",\n value: null\n };\n this.facade.filter.query.push(current);\n }\n\n current.value = item.value;\n current.hidden = true;\n\n this.facade.read({\n ...this.facade.filter,\n offset: 0\n });\n }\n }\n\n destroy(groups: Array<ICrudListGroup>): void {\n this._destroyed = [\n ...(this._destroyed ? this._destroyed : []),\n ...groups.filter(g => g.changed)\n ];\n\n this.refresh();\n }\n\n @debounce(250)\n private refresh(): void {\n const list = this._destroyed;\n this._destroyed = [];\n\n const newQuery = this.facade.filter.query.filter(q => !list.some(i => q.key === i.key));\n\n this.facade.read({\n ...this.facade.filter,\n query: newQuery,\n })\n }\n}","import {ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit} from '@angular/core';\n\nimport {BaseComponent, IListOptions, StyleService} from \"@smartsoft001/angular\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {ICrudListGroup} from \"../../models/interfaces\";\nimport {CrudFacade} from \"../../+state/crud.facade\";\nimport {CrudListGroupService} from \"../../services/list-group/list-group.service\";\n\n@Component({\n selector: 'smart-crud-group',\n templateUrl: './group.component.html',\n styleUrls: ['./group.component.scss']\n})\nexport class GroupComponent<T extends IEntity<string>> extends BaseComponent implements OnInit, OnDestroy {\n @Input() groups: Array<ICrudListGroup>;\n @Input() listOptions: IListOptions<T>;\n\n constructor(\n private styleService: StyleService,\n private elementRef: ElementRef,\n private facade: CrudFacade<T>,\n private cd: ChangeDetectorRef,\n private groupService: CrudListGroupService<T>\n ) {\n super();\n }\n\n change(val, item: ICrudListGroup, force = false): void {\n this.groups.filter(i => i.value !== item.value || i.key !== item.key).forEach(i => {\n i.show = false;\n });\n\n this.groupService.change(val, item, this.groups, force);\n\n if (val) {\n setTimeout(() => {\n item.show = val;\n this.cd.detectChanges();\n });\n } else {\n item.show = val;\n this.cd.detectChanges();\n }\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n ngOnDestroy(): void {\n this.groupService.destroy(this.groups);\n super.ngOnDestroy();\n }\n}\n","<smart-accordion *ngFor=\"let item of groups\" [(show)]=\"item.show\" (showChange)=\"change($event, item)\">\n <smart-accordion-header [ngClass]=\"{ 'accordion-show': item.show }\">{{ item.text | translate }}</smart-accordion-header>\n <smart-accordion-body>\n <smart-list *ngIf=\"item.show && !item.children && listOptions\" [options]=\"listOptions\"></smart-list>\n <div *ngIf=\"item.children\" style=\"margin-left: 50px\">\n <smart-crud-group [groups]=\"item.children\" [listOptions]=\"listOptions\"></smart-crud-group>\n </div>\n </smart-accordion-body>\n</smart-accordion>\n<br/><br/><br/>","import {Injectable} from \"@angular/core\";\n\nimport {CrudConfig} from \"../../crud.config\";\n\n@Injectable()\nexport class SocketService<T>// extends Socket\n{\n // constructor(private crudConfig: CrudConfig<T>) {\n // super( {\n // url: crudConfig.apiUrl,\n // options: {\n // transports: [\"websocket\"],\n // path: new URL(crudConfig.apiUrl).pathname + '/_socket/'\n // }\n // });\n // }\n}\n\n@Injectable()\nexport class NotSocketService<T> { }\n","import {NgModule} from \"@angular/core\";\n\nimport {FormOptionsPipe} from \"./form-options/form-options.pipe\";\n\n@NgModule({\n declarations: [\n FormOptionsPipe\n ],\n exports: [\n FormOptionsPipe\n ]\n})\nexport class CrudPipesModule {\n\n}\n","import {Injectable, Optional} from \"@angular/core\";\nimport {forkJoin, Observable} from \"rxjs\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { map } from \"rxjs/operators\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\n\nimport { CrudConfig } from \"../../crud.config\";\nimport { ICrudCreateManyOptions, ICrudFilter } from \"../../models/interfaces\";\nimport { SocketService } from \"../socket/socket.service\";\n\n@Injectable()\nexport class CrudService<T extends IEntity<string>> {\n protected _formatMap = {\n csv: \"text/csv\",\n xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n };\n\n constructor(\n protected config: CrudConfig<T>,\n protected http: HttpClient,\n @Optional() protected socket: SocketService<T>\n ) {}\n\n // changes(criteria: { id?: string } = {}): Observable<ItemChangedData> {\n // this.socket.emit(\"changes\", criteria);\n // return this.socket.fromEvent(\"changes\");\n // }\n\n // TODO : Location is null\n create(item: T): Observable<string> {\n return this.http\n .post<void>(this.config.apiUrl, item, { observe: \"response\" })\n .pipe(\n map((response) => {\n const location = response.headers[\"Location\"];\n if (!location) return null;\n const array = location.split(\"/\");\n return array[array.length - 1];\n })\n );\n }\n\n createMany(\n items: Array<T>,\n options: ICrudCreateManyOptions\n ): Observable<void> {\n return this.http.post<void>(\n this.config.apiUrl + \"/bulk?mode=\" + options.mode,\n items\n );\n }\n\n getById(id: string): Observable<T> {\n return this.http.get<T>(this.config.apiUrl + \"/\" + id);\n }\n\n getList(\n filter: ICrudFilter = null\n ): Observable<{ data: T[]; totalCount: number; links }> {\n return this.http.get<{ data: T[]; totalCount: number; links }>(\n this.config.apiUrl + this.getQuery(filter)\n );\n }\n\n exportList(filter: ICrudFilter = null, format): Observable<void> {\n if (!format) {\n format = \"csv\";\n }\n\n if (format === \"xlsx\") {\n return this.http\n .get(this.config.apiUrl + this.getQuery(filter), {\n headers: {\n \"Content-Type\": this._formatMap[format],\n },\n observe: \"response\",\n reportProgress: false,\n responseType: \"blob\",\n })\n .pipe(\n map((res) => {\n const downloadLink = document.createElement(\"a\");\n const blob = res.body;\n\n const url = URL.createObjectURL(blob);\n downloadLink.href = url;\n downloadLink.download = \"data.\" + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n })\n );\n }\n\n return this.http\n .get<string>(this.config.apiUrl + this.getQuery(filter), {\n headers: {\n \"Content-Type\": this._formatMap[format],\n },\n responseType: \"text\" as \"json\",\n })\n .pipe(\n map((res) => {\n const downloadLink = document.createElement(\"a\");\n const blob = new Blob([\"\\ufeff\", res]);\n\n const url = URL.createObjectURL(blob);\n downloadLink.href = url;\n downloadLink.download = \"data.\" + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n })\n );\n }\n\n update(item: T): Observable<void> {\n return this.http.put<void>(this.config.apiUrl + \"/\" + item.id, item);\n }\n\n updatePartial(item: Partial<T> & { id: string }): Observable<void> {\n return this.http.patch<void>(this.config.apiUrl + \"/\" + item.id, item);\n }\n\n updatePartialMany(items: (Partial<T> & { id: string })[]): Observable<any> {\n return forkJoin(items.map(item => {\n return this.updatePartial(item);\n }));\n }\n\n delete(id: string): Observable<void> {\n return this.http.delete<void>(this.config.apiUrl + \"/\" + id);\n }\n\n protected getQuery(filter: ICrudFilter): string {\n let query = \"\";\n\n if (filter && filter.searchText) {\n query += \"&$search=\" + filter.searchText;\n }\n\n if (filter && filter.limit) {\n query += `&limit=${filter.limit}&offset=${\n filter.offset ? filter.offset : 0\n }`;\n }\n\n if (filter && filter.sortBy) {\n query += `&sort=${(filter.sortDesc ? \"-\" : \"\") + filter.sortBy}`;\n }\n\n if (filter && filter.query) {\n filter.query.forEach((q) => {\n if (\n q.value\n && (typeof q.value === 'string')\n && q.value.match(/^-?\\d+$/)\n && q.value[0] !== \"'\"\n && q.value[0] !== '\"'\n ) {\n query += \"&\" + q.key + q.type + `'${q.value}'`;\n } else {\n query += \"&\" + q.key + q.type + q.value;\n }\n });\n }\n\n return query ? \"?\" + query.replace(\"&\", \"\") : \"\";\n }\n}\n","import \"reflect-metadata\";\n\nimport { Injectable } from \"@angular/core\";\nimport { catchError, first, tap } from \"rxjs/operators\";\nimport { of } from \"rxjs\";\nimport { Action, ActionsSubject, select, State, Store } from \"@ngrx/store\";\n\nimport { CrudService } from \"../services/crud/crud.service\";\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport * as CrudActions from \"./crud.actions\";\nimport { CrudConfig } from \"../crud.config\";\nimport { getCrudFilter } from \"./crud.selectors\";\n\n@Injectable()\nexport class CrudEffects<T extends IEntity<string>> {\n constructor(\n private actions$: ActionsSubject,\n private service: CrudService<T>,\n private config: CrudConfig<T>,\n private store: Store<any>,\n private state: State<any>\n ) {}\n\n init(): void {\n const metadata = Reflect.getMetadata(this.config.entity, CrudEffects);\n\n if (metadata) return;\n\n Reflect.defineMetadata(this.config.entity, true, CrudEffects);\n\n this.actions$.subscribe((action: Action & any) => {\n switch (action.type) {\n case `[${this.config.entity}] Create`:\n this.service\n .create(action.item)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.createSuccess(this.config.entity, action.item)\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.createFailure(\n this.config.entity,\n action.item,\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Create Success`:\n const createState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createState.filter ? { ...createState.filter, offset: 0 } : null\n )\n );\n break;\n\n case `[${this.config.entity}] Create Many`:\n this.service\n .createMany(action.data.items, action.data.options)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.createManySuccess(this.config.entity, {\n items: action.data.items,\n options: action.data.options,\n })\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.createManyFailure(\n this.config.entity,\n {\n items: action.data.items,\n options: action.data.options,\n },\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Create Many Success`:\n const createManyState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createManyState.filter\n ? { ...createManyState.filter, offset: 0 }\n : null\n )\n );\n break;\n\n case `[${this.config.entity}] Read`:\n this.service\n .getList(action.filter)\n .pipe(\n tap((result) =>\n this.store.dispatch(\n CrudActions.readSuccess(\n this.config.entity,\n action.filter,\n result\n )\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.readFailure(\n this.config.entity,\n action.filter,\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Export`:\n this.service\n .exportList(action.filter, action.format)\n .pipe(\n tap((result) =>\n this.store.dispatch(\n CrudActions.exportListSuccess(\n this.config.entity,\n action.filter\n )\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.exportListFailure(\n this.config.entity,\n action.filter,\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Select`:\n this.service\n .getById(action.id)\n .pipe(\n tap((result) =>\n this.store.dispatch(\n CrudActions.selectSuccess(\n this.config.entity,\n action.id,\n result\n )\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.selectFailure(\n this.config.entity,\n action.id,\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Update`:\n this.service\n .updatePartial(action.item)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.updateSuccess(this.config.entity, action.item)\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.updateFailure(\n this.config.entity,\n action.item,\n error\n )\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Update Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n })\n );\n\n this.store.dispatch(CrudActions.select(this.config.entity, action.item.id));\n });\n break;\n\n case `[${this.config.entity}] Update partial`:\n this.service\n .updatePartial(action.item)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.updatePartialSuccess(\n this.config.entity,\n action.item\n )\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.updatePartialFailure(\n this.config.entity,\n action.item,\n error\n )\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Update partial Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n })\n );\n\n this.store.dispatch(CrudActions.select(this.config.entity, action.item.id));\n });\n break;\n\n case `[${this.config.entity}] Update partial many`:\n this.service\n .updatePartialMany(action.items)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.updatePartialManySuccess(\n this.config.entity,\n action.items\n )\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.updatePartialManyFailure(\n this.config.entity,\n action.items,\n error\n )\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Update partial many Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n })\n );\n });\n break;\n\n case `[${this.config.entity}] Delete`:\n this.service\n .delete(action.id)\n .pipe(\n tap(() =>\n this.store.dispatch(\n CrudActions.deleteSuccess(this.config.entity, action.id)\n )\n ),\n catchError((error) => {\n this.store.dispatch(\n CrudActions.deleteFailure(\n this.config.entity,\n action.id,\n error\n )\n );\n return of();\n })\n )\n .subscribe();\n break;\n\n case `[${this.config.entity}] Delete Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n })\n );\n });\n break;\n\n default:\n break;\n }\n });\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { map } from \"rxjs/operators\";\nimport { combineLatest } from \"rxjs\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport {IListPaginationOptions, PaginationMode} from \"@smartsoft001/angular\";\n\nimport {CrudFacade} from \"../../+state/crud.facade\";\nimport {ICrudFilter} from \"../../models/interfaces\";\n\n@Injectable()\nexport class CrudListPaginationFactory<T extends IEntity<string>> {\n constructor(private readonly facade: CrudFacade<T>) {}\n\n async create(options: {\n mode?: PaginationMode,\n limit: number;\n provider: {\n getLinks(): any;\n getFilter(): ICrudFilter;\n };\n }): Promise<IListPaginationOptions> {\n return {\n mode: options.mode,\n limit: options.limit,\n loadNextPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().next)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n const sub = this.facade.loaded$.subscribe((l) => {\n if (l) {\n // if (sub && !sub.closed) sub.unsubscribe();\n setTimeout(() => {\n res(\n options.provider.getLinks() &&\n options.provider.getLinks().next\n );\n });\n }\n });\n\n this.facade.read({\n ...options.provider.getFilter(),\n offset:\n options.provider.getFilter().offset +\n options.provider.getFilter().limit,\n });\n });\n },\n loadPrevPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().prev)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n const sub = this.facade.loaded$.subscribe((l) => {\n if (l) {\n // if (sub && !sub.closed) sub.unsubscribe();\n setTimeout(() => {\n res(\n options.provider.getLinks() &&\n options.provider.getLinks().prev\n );\n });\n }\n });\n\n this.facade.read({\n ...options.provider.getFilter(),\n offset:\n options.provider.getFilter().offset -\n options.provider.getFilter().limit,\n });\n });\n },\n page$: this.facade.filter$.pipe(\n map((f) => {\n return f?.limit ? f.offset / f.limit + 1 : 0;\n })\n ),\n totalPages$: combineLatest(\n this.facade.filter$,\n this.facade.totalCount$\n ).pipe(\n map(([filter, totalCount]) => {\n return filter?.limit ? Math.ceil(totalCount / filter.limit) : 0;\n })\n ),\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { StoreModule } from '@ngrx/store';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DynamicIoModule } from 'ng-dynamic-component';\n\nimport { SharedModule } from '@smartsoft001/angular';\n\nimport { ExportComponent } from './export/export.component';\nimport {\n FilterComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterFlagComponent,\n FilterRadioComponent,\n FilterTextComponent,\n FilterCheckComponent,\n FilterIntComponent,\n FilterDateTimeComponent,\n} from './filter';\nimport { FiltersConfigComponent } from './filters-config/filters-config.component';\nimport { FiltersComponent } from './filters/filters.component';\nimport { MultiselectComponent } from './multiselect/multiselect.component';\nimport { SocketService } from '../services/socket/socket.service';\nimport { CrudPipesModule } from '../pipes/pipes.module';\nimport { CrudService } from '../services/crud/crud.service';\nimport { CrudEffects } from '../+state/crud.effects';\nimport { CrudFacade } from '../+state/crud.facade';\nimport { CrudListPaginationFactory } from '../factories/list-pagination/list-pagination.factory';\nimport { GroupComponent } from './group/group.component';\n\nconst COMPONENTS = [\n ExportComponent,\n FilterComponent,\n FilterTextComponent,\n FiltersConfigComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterDateTimeComponent,\n FilterRadioComponent,\n FiltersComponent,\n FilterFlagComponent,\n FilterCheckComponent,\n FilterIntComponent,\n MultiselectComponent,\n GroupComponent,\n];\n\n@NgModule({\n declarations: [...COMPONENTS],\n imports: [\n //AuthSharedModule,\n StoreModule,\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n DynamicIoModule,\n ],\n exports: [CrudPipesModule, ...COMPONENTS],\n providers: [\n CrudService,\n CrudEffects,\n CrudFacade,\n SocketService,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudComponentsModule {}\n","import {IEntity} from \"@smartsoft001/domain-core\";\nimport {Action} from \"@ngrx/store\";\nimport {PaginationMode} from \"@smartsoft001/angular\";\n\nimport {ICrudFilter} from \"../models/interfaces\";\n\nexport interface State<T extends IEntity<string>> {\n selected?: T;\n multiSelected?: Array<T>;\n list?: T[];\n totalCount?: number;\n filter?: ICrudFilter;\n links?: any;\n loaded: boolean; // has the Auth list been loaded\n error?: string | null; // last none error (if any)\n}\n\nexport const initialState: State<any> = {\n loaded: false\n};\n\nconst crudReducer = (state = initialState, action, entity) => {\n switch (action.type) {\n case `[${entity}] Create`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Create Success`:\n return {\n ...state,\n loaded: true,\n error: null\n };\n\n case `[${entity}] Create Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Create Many`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Create Many Success`:\n return {\n ...state,\n loaded: true,\n error: null\n };\n\n case `[${entity}] Create Many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Export`:\n return {\n ...state,\n loaded: false\n };\n\n case `[${entity}] Export Success`:\n return {\n ...state,\n loaded: true\n };\n\n case `[${entity}] Export Failure`:\n return {\n ...state,\n loaded: true\n };\n\n case `[${entity}] Read`:\n return {\n ...state,\n loaded: false,\n filter: action.filter,\n error: null,\n totalCount: null,\n links: null,\n };\n\n case `[${entity}] Read Success`:\n\n let list = [];\n\n if (\n action.filter\n && action.filter.offset\n && state.list\n && action.filter.paginationMode !== PaginationMode.singlePage\n ) {\n state.list.forEach(i => {\n list.push(i);\n });\n\n list = [\n ...list,\n ...action.result.data\n ];\n } else {\n list = action.result.data;\n }\n\n return {\n ...state,\n loaded: true,\n list,\n totalCount: action.result.totalCount,\n links: action.result.links,\n error: null\n };\n\n case `[${entity}] Clear`:\n return { ...initialState };\n\n case `[${entity}] Read Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Select`:\n return {\n ...state,\n loaded: false,\n selected: null,\n error: null\n };\n\n case `[${entity}] Select Success`:\n return {\n ...state,\n loaded: true,\n selected: action.item,\n error: null\n };\n\n case `[${entity}] Select Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] MultiSelect`:\n return {\n ...state,\n multiSelected: [...action.items]\n };\n\n case `[${entity}] Unselect`:\n return {\n ...state,\n loaded: true,\n selected: null,\n error: null\n };\n\n case `[${entity}] Update`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Update Success`:\n return {\n ...state,\n loaded: true,\n error: null\n };\n\n case `[${entity}] Update Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Update partial`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Update partial Success`:\n return {\n ...state,\n loaded: true,\n error: null\n };\n\n case `[${entity}] Update partial Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Update partial many`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Update partial many Success`:\n return {\n ...state,\n multiSelected: [],\n loaded: true,\n error: null\n };\n\n case `[${entity}] Update partial many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n case `[${entity}] Delete`:\n return {\n ...state,\n loaded: false,\n error: null\n };\n\n case `[${entity}] Delete Success`:\n return {\n ...state,\n loaded: true,\n error: null\n };\n\n case `[${entity}] Delete Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error\n };\n\n default:\n return state;\n }\n};\n\nexport function getReducer(entity) {\n return (state, action: Action) => {\n return crudReducer(state, action, entity);\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {AuthService} from \"@smartsoft001/angular\";\nimport {getModelOptions} from \"@smartsoft001/models\";\n\nimport { CrudFullConfig } from \"../../crud.config\";\n\n@Injectable()\nexport class PageService<T> {\n constructor(\n private authService: AuthService,\n private config: CrudFullConfig<T>\n ) { }\n\n checkPermissions(): void {\n const val: CrudFullConfig<T> = this.config;\n const modelOptions = getModelOptions(val.type);\n\n if (\n val.add &&\n modelOptions.create &&\n modelOptions.create.permissions &&\n !this.authService.expectPermissions(modelOptions.create.permissions)\n ) {\n val.add = false;\n }\n\n if (\n val.edit &&\n modelOptions.update &&\n modelOptions.update.permissions &&\n !this.authService.expectPermissions(modelOptions.update.permissions)\n ) {\n val.edit = false;\n }\n\n if (\n val.remove &&\n modelOptions.remove &&\n modelOptions.remove.permissions &&\n !this.authService.expectPermissions(modelOptions.remove.permissions)\n ) {\n val.remove = false;\n }\n }\n}","import {Injectable} from \"@angular/core\";\nimport {BehaviorSubject, Observable, combineLatest} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\n\nimport {ICrudFilter} from \"../../models/interfaces\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CrudSearchService {\n private _filterSource = new BehaviorSubject<Partial<ICrudFilter>>(null);\n private _enabledSource = new BehaviorSubject<boolean>(false);\n\n get filter(): Partial<ICrudFilter> {\n if (!this._enabledSource.value) return {};\n return this._filterSource.value;\n }\n\n get enabled(): boolean {\n return this._enabledSource.value;\n }\n\n enabled$ = this._enabledSource.asObservable();\n\n filter$: Observable<Partial<ICrudFilter>> = combineLatest([\n this._filterSource.asObservable(), this.enabled$\n ]).pipe(\n map(([ filter, enabled ]) => {\n if (!enabled) return {};\n return filter;\n })\n );\n\n setFilter(val: Partial<ICrudFilter>): void {\n this._filterSource.next(val);\n }\n\n setEnabled(val: boolean): void {\n this._enabledSource.next(val);\n }\n}","import {\n Directive,\n Input,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\n\nimport {\n BaseComponent,\n DynamicComponentType,\n IListOptions,\n} from \"@smartsoft001/angular\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport {CrudFullConfig} from \"../../../crud.config\";\n\n@Directive()\nexport abstract class CrudListPageBaseComponent<T extends IEntity<string>> extends BaseComponent {\n static smartType: DynamicComponentType = \"crud-list-page\";\n\n @ViewChild(\"contentTpl\", { read: ViewContainerRef, static: true })\n contentTpl: ViewContainerRef;\n\n @Input()\n listOptions: IListOptions<T>;\n\n constructor(\n public config: CrudFullConfig<T>,\n ) {\n super();\n }\n}","import {Component} from \"@angular/core\";\nimport {map} from \"rxjs/operators\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {CrudListPageBaseComponent} from \"../base/base.component\";\nimport {CrudListGroupService} from \"../../../services/list-group/list-group.service\";\nimport { CrudFacade } from \"../../../+state/crud.facade\";\nimport {CrudFullConfig} from \"../../../crud.config\";\n\n@Component({\n selector: \"smart-crud-list-standard-page\",\n templateUrl: \"./standard.component.html\",\n styleUrls: [\"./standard.component.scss\"],\n providers: [\n CrudListGroupService\n ]\n})\nexport class ListStandardComponent<T extends IEntity<string>> extends CrudListPageBaseComponent<T> {\n isSearch$ = this.facade.filter$.pipe(\n map(filter => {\n return !!filter?.searchText\n })\n );\n\n constructor(\n private readonly facade: CrudFacade<T>,\n public readonly config: CrudFullConfig<T>,\n ) {\n super(config);\n }\n}","<smart-crud-filters-config></smart-crud-filters-config>\n<smart-list *ngIf=\"listOptions\"\n [hidden]=\"!(!config.list?.groups || (isSearch$ | async))\"\n [options]=\"listOptions\"\n></smart-list>\n<smart-crud-group *ngIf=\"config.list?.groups && !(isSearch$ | async)\"\n [groups]=\"config.list?.groups\"\n [listOptions]=\"listOptions\"\n>\n</smart-crud-group>","import {\n ChangeDetectorRef,\n Component,\n ComponentFactory, ComponentFactoryResolver, ElementRef,\n Injector, NgModuleRef, OnDestroy,\n OnInit, QueryList, TemplateRef,\n ViewChild, ViewChildren,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { map, tap } from \"rxjs/operators\";\nimport { Router } from \"@angular/router\";\nimport {Observable, Subject} from \"rxjs\";\nimport * as _ from \"lodash\";\n\nimport {\n CreateDynamicComponent,\n DynamicComponentLoader, DynamicContentDirective,\n HardwareService,\n IIconButtonOptions,\n IListOptions,\n IPageOptions,\n ListMode,\n MenuService, StyleService,\n} from \"@smartsoft001/angular\";\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport {\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldEditMetadata,\n IFieldListMetadata,\n} from \"@smartsoft001/models\";\n\nimport { CrudFacade } from \"../../+state/crud.facade\";\nimport { CrudFullConfig } from \"../../crud.config\";\nimport { ICrudFilter } from \"../../models/interfaces\";\nimport { ExportComponent } from \"../../components/export/export.component\";\nimport { FiltersComponent } from \"../../components/filters/filters.component\";\nimport { MultiselectComponent } from \"../../components/multiselect/multiselect.component\";\nimport { CrudListPaginationFactory } from \"../../factories/list-pagination/list-pagination.factory\";\nimport {PageService} from \"../../services/page/page.service\";\nimport {CrudListPageBaseComponent} from \"./base/base.component\";\nimport {CrudSearchService} from \"../../services/search/search.service\";\nimport { SpecificationService } from \"@smartsoft001/utils\";\n\n@Component({\n selector: \"smart-crud-list-page\",\n template: `\n <smart-page [options]=\"pageOptions\" *ngIf=\"filter$ | async\">\n <div #topTpl></div>\n <smart-crud-list-standard-page *ngIf=\"template === 'default'\" [listOptions]=\"listOptions\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-list-standard-page>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n </smart-page>\n `\n})\nexport class ListComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudListPageBaseComponent<any>>('crud-list-page')\n implements OnInit, OnDestroy\n{\n private _cleanMultiSelected$ = new Subject<void>();\n\n pageOptions: IPageOptions;\n listOptions: IListOptions<T>;\n filter: ICrudFilter;\n links: { next; prev };\n\n filter$: Observable<ICrudFilter> = this.facade.filter$.pipe(\n tap((filter) => {\n this.filter = filter;\n })\n );\n\n @ViewChild(\"topTpl\", { read: ViewContainerRef, static: false })\n topTpl: ViewContainerRef;\n\n @ViewChild(\"contentTpl\", { read: TemplateRef, static: false })\n contentTpl: TemplateRef<any>;\n\n @ViewChildren(DynamicContentDirective, { read: DynamicContentDirective })\n dynamicContents = new QueryList<DynamicContentDirective>();\n\n constructor(\n private facade: CrudFacade<T>,\n private router: Router,\n private dynamicComponentLoader: DynamicComponentLoader<T>,\n private injector: Injector,\n private cd: ChangeDetectorRef,\n private menuService: MenuService,\n private hardwareService: HardwareService,\n private paginationFacade: CrudListPaginationFactory<T>,\n private styleService: StyleService,\n private elementRef: ElementRef,\n private pageService: PageService<T>,\n public config: CrudFullConfig<T>,\n private searchService: CrudSearchService,\n private moduleRef: NgModuleRef<any>,\n private componentFactoryResolver: ComponentFactoryResolver\n ) {\n super(cd, moduleRef, componentFactoryResolver);\n\n this.facade.links$.pipe(this.takeUntilDestroy).subscribe((links) => {\n this.links = links;\n });\n }\n\n refreshProperties(): void {\n this.baseInstance.listOptions = this.listOptions;\n }\n\n async ngOnInit(): Promise<void> {\n await this.pageService.checkPermissions();\n\n const options = getModelOptions(this.config.type);\n\n let newFilter = null;\n\n if (this.config.list?.resetQuery === 'beforeInit') {\n newFilter = {\n query: this.config.baseQuery ? [ ...this.config.baseQuery ] : [],\n paginationMode: this.config.list.paginationMode,\n limit: this.config.pagination ? this.config.pagination.limit : null,\n offset: this.config.pagination ? 0 : null,\n sortBy: this.config.sort ? this.config.sort[\"default\"] : null,\n sortDesc: this.config.sort ? this.config.sort[\"defaultDesc\"] : null,\n ...this.searchService.filter\n };\n } else if (this.filter) {\n newFilter = this.filter;\n } else {\n newFilter = {\n paginationMode: this.config.list.paginationMode,\n limit: this.searchService.filter?.limit ? this.searchService.filter.limit : this.config.pagination\n ? this.config.pagination.limit : null,\n offset: this.searchService.filter?.offset || this.searchService.filter?.offset === 0\n ? this.searchService.filter.offset : this.config.pagination ? 0 : null,\n sortBy: this.searchService.filter?.sortBy ? this.searchService.filter.sortBy : this.config.sort\n ? this.config.sort[\"default\"] : null,\n sortDesc: this.searchService.filter?.sortDesc ? this.searchService.filter.sortDesc : this.config.sort\n ? this.config.sort[\"defaultDesc\"] : null,\n query: this.config.baseQuery ? [ ...this.config.baseQuery ] : [],\n ...this.searchService.filter\n };\n }\n\n this.facade.read(newFilter);\n\n const endButtons = this.getEndButtons();\n\n this.pageOptions = {\n title: this.config.title,\n search: this.config.search\n ? {\n text$: this.filter$.pipe(map((f) => (f ? f.searchText : null))),\n set: (txt) => {\n if (txt !== this.filter.searchText)\n this.facade.read({\n ...this.filter,\n searchText: txt,\n offset: 0,\n });\n },\n }\n : null,\n endButtons: endButtons,\n };\n\n const compiledComponents =\n await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].top\n ? [this.config.details[\"components\"].top]\n : []),\n ...(this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].bottom\n ? [this.config.details[\"components\"].bottom]\n : []),\n ...(this.config.list &&\n this.config.list[\"components\"] &&\n this.config.list[\"components\"].top\n ? [this.config.list[\"components\"].top]\n : []),\n ],\n });\n\n this.listOptions = {\n provider: {\n getData: (filter): void => {\n const global = {\n ...this.filter,\n ...filter,\n };\n this.facade.read(global);\n },\n onChangeMultiSelected: async (list) => {\n if (list.length && !this.menuService.openedEnd) {\n await this.menuService.openEnd({\n injector: this.injector,\n component: MultiselectComponent,\n });\n } else if (!list.length && this.menuService.openedEnd) {\n await this.menuService.closeEnd();\n }\n\n this.facade.multiSelect(list);\n },\n list$: this.facade.list$,\n loading$: this.facade.loaded$.pipe(map((l) => !l)),\n onCleanMultiSelected$: this._cleanMultiSelected$\n },\n cellPipe: this.config.list ? this.config.list.cellPipe : null,\n mode: this.config.list?.mode,\n type: this.config.type,\n details: this.config.details\n ? {\n provider: {\n getData: (id) => {\n this.facade.select(id);\n },\n clearData: () => {\n this.facade.unselect();\n },\n item$: this.facade.selected$,\n loading$: this.facade.loaded$.pipe(map((l) => !l)),\n },\n componentFactories: {\n top:\n this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].top\n ? compiledComponents.find(\n (cc) =>\n cc.component === this.config.details[\"components\"].top\n ).factory\n : null,\n bottom:\n this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].bottom\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n this.config.details[\"components\"].bottom\n ).factory\n : null,\n },\n }\n : null,\n item:\n !!this.config.edit || this.config.details\n ? {\n options: {\n routingPrefix: \"/\" + this.router.routerState.snapshot.url + \"/\",\n edit: !!this.config.edit,\n },\n }\n : null,\n remove: this.config.remove\n ? {\n provider: {\n invoke: (id) => this.facade.delete(id),\n check: (item: T) => {\n return options?.remove?.enabled ? SpecificationService.valid(item, options?.remove?.enabled) : true;\n }\n },\n }\n : null,\n pagination: await this.paginationFacade.create({\n mode: this.config.list.paginationMode,\n limit: this.config.pagination.limit,\n provider: {\n getFilter: () => {\n return this.filter;\n },\n getLinks: () => this.links,\n },\n }),\n sort: this.config.sort,\n };\n\n this.cd.detectChanges();\n\n this.initCloseMenu();\n this.initTopComponent(compiledComponents);\n\n this.refreshDynamicInstance();\n }\n\n private initCloseMenu() {\n this.router.events.pipe(this.takeUntilDestroy).subscribe(async () => {\n await this.clear();\n });\n }\n\n private async clear() {\n await this.menuService.closeEnd();\n\n this.listOptions = {\n ...this.listOptions,\n select: null,\n };\n\n this.facade.multiSelect([]);\n }\n\n private getEndButtons(): Array<IIconButtonOptions> {\n const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());\n const modelOptions = getModelOptions(this.config.type);\n\n const showFilters =\n fieldsWithOptions.some(\n (x) => (x.options?.list as IFieldListMetadata)?.filter\n ) || modelOptions?.filters?.length;\n\n const showMultiEdit =\n this.config.list?.components?.multi ||\n (\n this.config.edit &&\n fieldsWithOptions.some(\n (x) => (x.options?.update as IFieldEditMetadata)?.multi\n ) &&\n !this.hardwareService.isMobile &&\n (!this.config?.list?.mode ||\n this.config?.list?.mode === ListMode.desktop)\n );\n\n return [\n ...(showMultiEdit\n ? [\n {\n icon: \"checkbox-outline\",\n text: \"multi\",\n handler: () => {\n this.facade.multiSelect([]);\n this._cleanMultiSelected$.next();\n\n setTimeout(async () => {\n this.listOptions = {\n ...this.listOptions,\n select: this.listOptions.select === \"multi\" ? null : \"multi\",\n };\n if (this.menuService.openedEnd)\n await this.menuService.closeEnd();\n this.cd.detectChanges();\n });\n },\n },\n ]\n : []),\n ...(showFilters\n ? [\n {\n icon: \"filter-outline\",\n text: \"filters\",\n handler: async () => {\n await this.menuService.openEnd({\n injector: this.injector,\n component: FiltersComponent,\n });\n },\n },\n ]\n : []),\n ...(this.config.add\n ? [\n {\n icon: \"add\",\n text: \"add\",\n handler: () => {\n this.router.navigate([\n \"/\" + this.router.routerState.snapshot.url + \"/add\",\n ]);\n },\n },\n ]\n : []),\n ...(this.config.export\n ? [\n {\n text: \"export\",\n icon: \"download-outline\",\n type: \"popover\" as \"popover\",\n component: ExportComponent,\n },\n ]\n : []),\n ...(this.config.buttons ? this.config.buttons : []),\n ];\n }\n\n private initTopComponent(\n compiledComponents: {\n component: any;\n factory: ComponentFactory<any>;\n }[]\n ) {\n const factory =\n this.config.list &&\n this.config.list[\"components\"] &&\n this.config.list[\"components\"].top\n ? compiledComponents.find(\n (cc) => cc.component === this.config.list[\"components\"].top\n ).factory\n : null;\n\n setTimeout(() => {\n if (factory && !this.topTpl.get(0)) {\n this.topTpl.createComponent(factory);\n }\n });\n }\n}\n","import {\n Directive, EventEmitter,\n Input, Output, QueryList,\n ViewChild, ViewChildren,\n ViewContainerRef\n} from \"@angular/core\";\nimport {Observable} from \"rxjs\";\n\nimport {\n BaseComponent,\n DynamicComponentType, FormComponent, IDetailsOptions,\n} from \"@smartsoft001/angular\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\nimport { CrudFullConfig } from \"../../../crud.config\";\nimport { CrudFacade } from \"../../../+state/crud.facade\";\n\n@Directive()\nexport abstract class CrudItemPageBaseComponent<T extends IEntity<string>> extends BaseComponent {\n static smartType: DynamicComponentType = \"crud-item-page\";\n\n selected$: Observable<T>;\n\n @ViewChild(\"contentTpl\", { read: ViewContainerRef, static: true })\n contentTpl: ViewContainerRef;\n\n @ViewChildren(FormComponent, { read: FormComponent }) formComponents = new QueryList<FormComponent<any>>();\n\n @Input()\n detailsOptions: IDetailsOptions<T>;\n\n @Input()\n mode: string;\n\n @Input()\n uniqueProvider: (values: Record<keyof T, any>) => Promise<boolean>;\n\n @Output()\n onPartialChange = new EventEmitter<Partial<T>>();\n\n @Output()\n onChange = new EventEmitter<T>();\n\n @Output()\n onValidChange = new EventEmitter<boolean>();\n\n constructor(\n public config: CrudFullConfig<T>,\n public facade: CrudFacade<T>\n ) {\n super();\n this.selected$ = facade.selected$;\n\n\n }\n}","import {Component} from \"@angular/core\";\n\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {CrudItemPageBaseComponent} from \"../base/base.component\";\n\n@Component({\n selector: \"smart-crud-item-standard-page\",\n templateUrl: \"./standard.component.html\",\n styleUrls: [\"./standard.component.scss\"],\n})\nexport class ItemStandardComponent<T extends IEntity<string>> extends CrudItemPageBaseComponent<T> {}","<ng-container *ngIf=\"mode === 'details'; else editTpl\">\n <smart-details *ngIf=\"detailsOptions\" [options]='detailsOptions'></smart-details>\n</ng-container>\n\n<ng-template #editTpl>\n <smart-form\n [options]=\"\n (selected$ | async)\n | smartFormOptions : mode:config?.type:uniqueProvider : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n</ng-template>\n\n<br/><br/>","import {\n ChangeDetectorRef,\n Component, ComponentFactoryResolver,\n ElementRef, NgModuleRef,\n OnInit,\n QueryList, TemplateRef,\n ViewChild,\n ViewChildren, ViewContainerRef\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { Location } from \"@angular/common\";\nimport {TranslateService} from \"@ngx-translate/core\";\n\nimport {\n AuthService, CreateDynamicComponent, DetailsService,\n DynamicComponentLoader, DynamicContentDirective, ICellPipe,\n IDetailsOptions,\n IIconButtonOptions,\n IPageOptions, StyleService, ToastService,\n} from \"@smartsoft001/angular\";\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport {getModelOptions} from \"@smartsoft001/models\";\nimport { SpecificationService } from \"@smartsoft001/utils\";\n\nimport { CrudFacade } from \"../../+state/crud.facade\";\nimport { CrudFullConfig } from \"../../crud.config\";\nimport { CrudService } from \"../../services/crud/crud.service\";\nimport { ICrudFilter } from \"../../models/interfaces\";\nimport { IonContent } from \"@ionic/angular\";\nimport {AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup} from \"@angular/forms\"\nimport {ItemStandardComponent} from \"./standard/standard.component\";\nimport { CrudItemPageBaseComponent } from \"./base/base.component\";\nimport { PageService } from \"../../services/page/page.service\";\n\n@Component({\n selector: \"smart-crud-item-page\",\n template: `\n <smart-page [options]=\"pageOptions\">\n <div #topTpl class=\"top-content\"></div>\n <smart-crud-item-standard-page *ngIf=\"template === 'default'\"\n [detailsOptions]=\"detailsOptions\"\n [mode]=\"mode\"\n [uniqueProvider]=\"uniqueProvider\"\n (onPartialChange)=\"onPartialChange($event)\"\n (onChange)=\"onChange($event)\"\n (onValidChange)=\"onValidChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-item-standard-page>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n <div #bottomTpl class=\"bottom-content\"></div>\n </smart-page>\n `\n})\nexport class ItemComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudItemPageBaseComponent<any>>('crud-item-page')\n implements OnInit {\n private _mode: string;\n\n pageOptions: IPageOptions = {\n title: \"\",\n showBackButton: true,\n hideMenuButton: true,\n };\n detailsOptions: IDetailsOptions<T>;\n id: string;\n formValue: T;\n formValid = false;\n item: T;\n formPartialValue: Partial<T>;\n uniqueProvider: (values: Record<keyof T, any>) => Promise<boolean>;\n\n set mode(val: string) {\n this._mode = val;\n this.refreshDynamicInstance();\n }\n get mode(): string {\n return this._mode;\n }\n\n\n selected$: Observable<T>;\n\n @ViewChildren(ItemStandardComponent, { read: ItemStandardComponent }) standardComponents = new QueryList<ItemStandardComponent<any>>();\n @ViewChild(IonContent, { static: true }) content: IonContent;\n\n @ViewChild(\"contentTpl\", { read: TemplateRef, static: false })\n contentTpl: TemplateRef<any>;\n\n @ViewChild(\"topTpl\", { read: ViewContainerRef, static: true })\n topTpl: ViewContainerRef;\n\n @ViewChild(\"bottomTpl\", { read: ViewContainerRef, static: true })\n bottomTpl: ViewContainerRef;\n\n @ViewChildren(DynamicContentDirective, { read: DynamicContentDirective })\n dynamicContents = new QueryList<DynamicContentDirective>();\n\n constructor(\n private router: Router,\n private activeRoute: ActivatedRoute,\n private facade: CrudFacade<T>,\n private service: CrudService<T>,\n private route: ActivatedRoute,\n private dynamicComponentLoader: DynamicComponentLoader<T>,\n private translateService: TranslateService,\n public config: CrudFullConfig<T>,\n private location: Location,\n private cd: ChangeDetectorRef,\n authService: AuthService,\n private styleService: StyleService,\n private elementRef: ElementRef,\n private toastService: ToastService,\n private pageService: PageService<T>,\n private moduleRef: NgModuleRef<any>,\n private componentFactoryResolver: ComponentFactoryResolver,\n private detailsService: DetailsService\n ) {\n super(cd, moduleRef, componentFactoryResolver);\n\n this.selected$ = this.facade.selected$;\n }\n\n refreshProperties() {\n this.baseInstance.detailsOptions = this.detailsOptions;\n this.baseInstance.mode = this.mode;\n this.baseInstance.uniqueProvider = this.uniqueProvider;\n this.baseInstance.onPartialChange.pipe(this.takeUntilDestroy).subscribe(val => this.onPartialChange(val));\n this.baseInstance.onChange.pipe(this.takeUntilDestroy).subscribe(val => this.onChange(val));\n this.baseInstance.onValidChange.pipe(this.takeUntilDestroy).subscribe(val => this.onValidChange(val));\n }\n\n async ngOnInit() {\n this.detailsService.init();\n this.styleService.init(this.elementRef);\n\n this.pageService.checkPermissions();\n\n if (this.router.routerState.snapshot.url.split('?')[0].endsWith(\"/add\")) {\n this.mode = \"create\";\n await this.generateComponents('add');\n } else {\n this.mode = this.config.details ? \"details\" : \"update\";\n\n if (this.mode === 'update') {\n await this.generateComponents('edit');\n }\n\n this.activeRoute.params\n .pipe(this.takeUntilDestroy)\n .subscribe(({ id }) => {\n this.facade.select(id);\n this.id = id;\n });\n\n this.activeRoute.queryParams\n .pipe(this.takeUntilDestroy)\n .subscribe(({ edit }) => {\n if (edit) {\n this.mode = \"update\";\n this.generateComponents('edit');\n }\n });\n }\n\n this.uniqueProvider = async (values) => {\n const filter: ICrudFilter = {\n query: [],\n };\n\n Object.keys(values).forEach((key) => {\n filter.query.push({\n key: key,\n value: values[key],\n type: \"=\",\n });\n });\n\n if (this.id) {\n filter.query.push({\n key: \"id\",\n value: this.id,\n type: \"!=\",\n });\n }\n const { totalCount } = await this.service.getList(filter).toPromise();\n\n return !totalCount;\n };\n\n if (this.config.details) {\n const compiledComponents = await this.dynamicComponentLoader.getComponentsWithFactories(\n {\n components: [\n ...(this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].top\n ? [this.config.details[\"components\"].top]\n : []),\n ...(this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].bottom\n ? [this.config.details[\"components\"].bottom]\n : []),\n ],\n }\n );\n\n this.detailsOptions = {\n type: this.config.type,\n item$: this.facade.selected$,\n cellPipe: this.config.details ? (this.config.details as {cellPipe?: ICellPipe<T>}).cellPipe : null,\n componentFactories: {\n top:\n this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].top\n ? compiledComponents.find(\n (cc) => cc.component === this.config.details[\"components\"].top\n ).factory\n : null,\n bottom:\n this.config.details &&\n this.config.details[\"components\"] &&\n this.config.details[\"components\"].bottom\n ? compiledComponents.find(\n (cc) => cc.component === this.config.details[\"components\"].bottom\n ).factory\n : null,\n },\n };\n }\n\n this.initPageOptions();\n\n this.facade.selected$.pipe(this.takeUntilDestroy).subscribe(item => {\n this.item = item;\n this.initPageOptions();\n this.cd.detectChanges();\n });\n\n this.refreshDynamicInstance();\n }\n\n private async generateComponents(mode: 'add' | 'edit') {\n const compiledComponents = await this.dynamicComponentLoader.getComponentsWithFactories(\n {\n components: [\n ...(this.config[mode] &&\n this.config[mode][\"components\"] &&\n this.config[mode][\"components\"].top\n ? [this.config[mode][\"components\"].top]\n : []),\n ...(this.config[mode] &&\n this.config[mode][\"components\"] &&\n this.config[mode][\"components\"].bottom\n ? [this.config[mode][\"components\"].bottom]\n : []),\n ],\n }\n );\n\n const topComponentFactory = compiledComponents.find(\n (cc) => cc.component === this.config[mode][\"components\"]?.top\n )?.factory;\n\n const bottomComponentFactory = compiledComponents.find(\n (cc) => cc.component === this.config[mode][\"components\"]?.bottom\n )?.factory;\n\n if (!this.topTpl.get(0) && topComponentFactory) {\n this.topTpl.createComponent(topComponentFactory);\n }\n\n if (!this.bottomTpl.get(0) && bottomComponentFactory) {\n this.bottomTpl.createComponent(bottomComponentFactory);\n }\n }\n\n onPartialChange(val: Partial<T>) {\n this.formPartialValue = val;\n }\n\n onChange(val: T) {\n this.formValue = val;\n }\n\n onValidChange(val: boolean) {\n this.formValid = val;\n }\n\n private initPageOptions(): void {\n this.pageOptions = {\n ...this.pageOptions,\n title: this.getTitle(),\n endButtons: this.getButtons(),\n };\n }\n\n private getButtons(): Array<IIconButtonOptions> {\n const options = getModelOptions(this.config.type);\n\n switch (this.mode) {\n case \"create\":\n return [\n {\n icon: \"add\",\n text: \"add\",\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.facade.create(this.formValue);\n this.location.back();\n },\n },\n ];\n case \"update\":\n return [\n ...(this.config.details\n ? [\n {\n icon: \"close\",\n text: \"cancel\",\n handler: () => {\n this.mode = \"details\";\n this.initPageOptions();\n this.topTpl.clear();\n this.bottomTpl.clear();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : []),\n {\n icon: \"save\",\n text: \"save\",\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.formPartialValue.id = this.id;\n this.facade.updatePartial(this.formPartialValue as any);\n\n if (this.config.details) {\n this.mode = \"details\";\n this.initPageOptions();\n } else {\n this.location.back();\n }\n },\n },\n ];\n case \"details\":\n return this.config.edit && (\n !options?.update?.enabled || SpecificationService.valid(this.item, options?.update?.enabled)\n )\n ? [\n {\n icon: \"create\",\n text: \"edit\",\n handler: () => {\n this.mode = \"update\";\n this.generateComponents('edit');\n this.initPageOptions();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : [];\n }\n }\n\n private getTitle(): string {\n const options = getModelOptions(this.config.type);\n\n const prefix = options.titleKey && this.item ? this.removeParagraph(this.item[options.titleKey]) + ' - ' : '';\n\n switch (this.mode) {\n case \"create\":\n return \"add\";\n case \"update\":\n return prefix + this.translateService.instant(\"change\");\n case \"details\":\n return prefix + this.translateService.instant(\"details\");\n }\n }\n\n private removeParagraph(val: string): string {\n if (!val || val.indexOf('<p>') !== 0) return val;\n\n const div=document.createElement(\"div\");\n div.innerHTML=val;\n\n const item = div.querySelectorAll(\"p\").item(0);\n\n return item.innerHTML;\n }\n\n private checkFirstInvalid(): boolean {\n this.cd.detectChanges();\n\n const form = this.template === 'default'\n ? this.standardComponents.first.formComponents.first.form\n : this.baseInstance.formComponents.first.form;\n\n this.cd.detectChanges();\n\n if (form.valid) return false;\n\n const invalidFields = [];\n\n this.getInvalidFields(form, invalidFields, '');\n\n this.toastService.info({\n title: this.translateService.instant('INPUT.ERRORS.requires'),\n message: invalidFields.slice(0, 3).join('<br/>')\n });\n\n return true;\n }\n\n private getInvalidFields(control: AbstractControl, invalidFields: any[], baseField: string, key = null) {\n if (control.valid) return;\n\n const field = key ? baseField + ' > ' + this.translateService.instant('MODEL.' + key) : baseField;\n\n if (control.errors?.customMessage) {\n invalidFields.push(field + ` (${control.errors.customMessage})`);\n return;\n }\n\n if (control instanceof UntypedFormControl) {\n invalidFields.push(field);\n }\n\n if (control instanceof UntypedFormGroup) {\n Object.keys(control.controls).forEach(groupKey => {\n this.getInvalidFields(control.controls[groupKey], invalidFields, field, groupKey);\n });\n }\n\n if (control instanceof UntypedFormArray) {\n control.controls.forEach((c, index) => {\n this.getInvalidFields(c, invalidFields, field + `(${index + 1})`);\n });\n }\n }\n}\n","import {NgModule} from \"@angular/core\";\nimport {RouterModule} from \"@angular/router\";\nimport {Store, StoreModule} from \"@ngrx/store\";\nimport {FormsModule} from \"@angular/forms\";\nimport {CommonModule} from \"@angular/common\";\n\nimport {NgrxStoreService, SharedModule} from \"@smartsoft001/angular\";\nimport {IEntity} from \"@smartsoft001/domain-core\";\n\nimport {CrudConfig} from \"./crud.config\";\nimport {CrudEffects} from \"./+state/crud.effects\";\nimport {getReducer} from \"./+state/crud.reducer\";\nimport {ListComponent} from \"./pages/list/list.component\";\nimport {ItemComponent} from \"./pages/item/item.component\";\nimport {CrudPipesModule} from \"./pipes/pipes.module\";\nimport { CrudService } from './services/crud/crud.service';\nimport { CrudFacade } from './+state/crud.facade';\nimport {CrudListPaginationFactory} from \"./factories/list-pagination/list-pagination.factory\";\nimport {CrudComponentsModule} from \"./components/components.module\";\nimport {PageService} from \"./services/page/page.service\";\nimport {ListStandardComponent} from \"./pages/list/standard/standard.component\";\nimport {ItemStandardComponent} from \"./pages/item/standard/standard.component\";\nimport {CrudListGroupService} from \"./services/list-group/list-group.service\";\n\nexport const PAGES = [\n ItemComponent,\n ListComponent,\n ListStandardComponent,\n ItemStandardComponent\n];\n\n@NgModule({\n declarations: [\n ...PAGES\n ],\n imports: [\n StoreModule,\n SharedModule,\n CrudPipesModule,\n RouterModule.forChild([\n { path: '', component: ListComponent },\n { path: 'add', component: ItemComponent },\n { path: ':id', component: ItemComponent }\n ]),\n FormsModule,\n CommonModule,\n CrudComponentsModule\n ],\n exports: [\n ...PAGES,\n CrudComponentsModule\n ],\n providers: [\n CrudService,\n CrudListGroupService,\n PageService,\n CrudEffects,\n CrudFacade,\n CrudListPaginationFactory,\n ]\n})\nexport class CrudFullModule<T extends IEntity<string>> {\n constructor(store: Store<any>, config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity)\n );\n effects.init();\n }\n}\n","import { ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from \"@angular/core\";\nimport { Store, StoreModule } from \"@ngrx/store\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { IEntity } from \"@smartsoft001/domain-core\";\nimport {\n FILE_SERVICE_CONFIG,\n IFileServiceConfig,\n NgrxSharedModule,\n NgrxStoreService,\n SharedModule,\n} from \"@smartsoft001/angular\";\n\nimport { CrudConfig, CrudFullConfig } from \"./crud.config\";\nimport { CrudEffects } from \"./+state/crud.effects\";\nimport { getReducer } from \"./+state/crud.reducer\";\nimport { CrudService } from \"./services/crud/crud.service\";\nimport { CrudFacade } from \"./+state/crud.facade\";\nimport { CrudPipesModule } from \"./pipes/pipes.module\";\nimport { CrudFullModule } from \"./crud-full.module\";\nimport {NotSocketService, SocketService} from \"./services/socket/socket.service\";\nimport { CrudListPaginationFactory } from \"./factories/list-pagination/list-pagination.factory\";\nimport { CrudComponentsModule } from \"./components/components.module\";\nimport {PageService} from \"./services/page/page.service\";\nimport {CrudListGroupService} from \"./services/list-group/list-group.service\";\n\n@NgModule({\n imports: [\n //AuthSharedModule,\n StoreModule,\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n CrudComponentsModule,\n NgrxSharedModule,\n ],\n exports: [CrudComponentsModule],\n providers: [\n CrudService,\n CrudListGroupService,\n PageService,\n CrudEffects,\n CrudFacade,\n SocketService,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudCoreModule<T extends IEntity<string>> {\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity)\n );\n effects.init();\n }\n}\n\n@NgModule({})\nexport class CrudModule<T extends IEntity<string>> {\n static forFeature<T extends IEntity<string>>(\n options:\n | ICrudModuleOptionsWithRoutng<T>\n | ICrudModuleOptionsWithoutRoutng<T>\n ): ModuleWithProviders<CrudModule<any>> {\n return {\n ngModule: options.routing ? CrudFullModule : CrudCoreModule,\n providers: [\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ...(\n options.socket\n ? [SocketService]\n : [{ provide: SocketService, useClass: NotSocketService }]\n ),\n ],\n };\n }\n}\n\nexport interface ICrudModuleOptionsWithRoutng<T> {\n config: CrudFullConfig<T>;\n socket?: boolean;\n routing: true;\n}\n\nexport interface ICrudModuleOptionsWithoutRoutng<T> {\n config: CrudConfig<T>;\n socket?: boolean;\n routing: false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["select","CrudSelectors.getCrudLoaded","CrudSelectors.getCrudSelected","CrudSelectors.getCrudMultiSelected","CrudSelectors.getCrudList","CrudSelectors.getCrudFilter","CrudSelectors.getCrudTotalCount","CrudSelectors.getCrudLinks","CrudSelectors.getCrudError","CrudActions.create","CrudActions.createMany","CrudActions.read","CrudActions.clear","CrudActions.select","CrudActions.unselect","CrudActions.multiSelect","CrudActions.update","CrudActions.exportList","CrudActions.updatePartial","CrudActions.updatePartialMany","CrudActions.deleteItem","i2.CrudConfig","BaseComponent","i1.CrudFacade","i2","i3","i1","i3.FilterTextComponent","i4.FilterDateComponent","i5.FilterDateWithEditComponent","i6.FilterDateTimeComponent","i7.FilterRadioComponent","i8.FilterFlagComponent","i9.FilterCheckComponent","i10.FilterIntComponent","i3.CrudFacade","i4","i5","i6.FilterComponent","i7","i2.CrudFullConfig","i8.FormOptionsPipe","i2.CrudFacade","i3.CrudListGroupService","i1.CrudConfig","i3.SocketService","CrudActions.createSuccess","CrudActions.createFailure","CrudActions.createManySuccess","CrudActions.createManyFailure","CrudActions.readSuccess","CrudActions.readFailure","CrudActions.exportListSuccess","CrudActions.exportListFailure","CrudActions.selectSuccess","CrudActions.selectFailure","CrudActions.updateSuccess","CrudActions.updateFailure","CrudActions.updatePartialSuccess","CrudActions.updatePartialFailure","CrudActions.updatePartialManySuccess","CrudActions.updatePartialManyFailure","CrudActions.deleteSuccess","CrudActions.deleteFailure","i2.CrudService","i3.CrudConfig","i1.CrudFullConfig","i5.FiltersConfigComponent","i6.GroupComponent","i4.CrudListPaginationFactory","i5.PageService","i6.CrudFullConfig","i7.CrudSearchService","i8","i9.ListStandardComponent","i3.FormOptionsPipe","i3.CrudService","i8.PageService","i9.ItemStandardComponent","i3.CrudEffects","i2.CrudEffects"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,qBAAqB,CAAO,MAAM,EAAE;AAE/D,MAAA,eAAe,GAAG,CAAC,MAAM,KAAK,cAAc,CACrD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAC3B;AAEW,MAAA,oBAAoB,GAAG,CAAC,MAAM,KAAK,cAAc,CAC1D,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,EAChC;AAEW,MAAA,WAAW,GAAG,CAAC,MAAM,KAAK,cAAc,CACjD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EACvB;AAEW,MAAA,iBAAiB,GAAG,CAAC,MAAM,KAAK,cAAc,CACvD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,EAC7B;AAEW,MAAA,YAAY,GAAG,CAAC,MAAM,KAAK,cAAc,CAClD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EACxB;AAEW,MAAA,aAAa,GAAG,CAAC,MAAM,KAAK,cAAc,CACnD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EACzB;AAEW,MAAA,aAAa,GAAG,CAAC,MAAM,KAAK,cAAc,CACnD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EACzB;AAEW,MAAA,YAAY,GAAG,CAAC,MAAM,KAAK,cAAc,CAClD,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;;MChCb,UAAU,CAAA;iIAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAV,UAAU,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;AAUL,MAAO,cAAkB,SAAQ,UAAa,CAAA;iIAAvC,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACXX;;AAEG;AACU,MAAA,MAAM,GAAG,UACpB,MAAc,EACd,IAAO,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAU,QAAA,CAAA;QAC1B,IAAI;KACL,CAAC;AACJ,EAAE;AAEW,MAAA,aAAa,GAAG,UAC3B,MAAc,EACd,IAAO,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,IAAI;KACL,CAAC;AACJ,EAAE;MAEW,aAAa,GAAG,UAC3B,MAAc,EACd,IAAO,EACP,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,UAAU,GAAG,UACxB,MAAc,EACd,IAAqD,EAAA;IAErD,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAe,aAAA,CAAA;QAC/B,IAAI;KACL,CAAC;AACJ,EAAE;AAEW,MAAA,iBAAiB,GAAG,UAC/B,MAAc,EACd,IAAqD,EAAA;IAErD,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAuB,qBAAA,CAAA;QACvC,IAAI;KACL,CAAC;AACJ,EAAE;MAEW,iBAAiB,GAAG,UAC/B,MAAc,EACd,IAAqD,EACrD,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAuB,qBAAA,CAAA;QACvC,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;MACU,IAAI,GAAG,UAClB,MAAc,EACd,SAAsB,IAAI,EAAA;IAE1B,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAQ,MAAA,CAAA;QACxB,MAAM;KACP,CAAC;AACJ,EAAE;MAEW,WAAW,GAAG,UACzB,MAAc,EACd,MAAS,EACT,MAAgD,EAAA;IAEhD,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAgB,cAAA,CAAA;QAChC,MAAM;QACN,MAAM;KACP,CAAC;AACJ,EAAE;MAEW,WAAW,GAAG,UACzB,MAAc,EACd,MAAS,EACT,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAgB,cAAA,CAAA;QAChC,MAAM;QACN,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACI,MAAM,KAAK,GAAG,UACjB,MAAc,EAAA;IAEhB,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAS,OAAA,CAAA;KAC1B,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,UAAU,GAAG,UACxB,MAAc,EACd,MAAA,GAAsB,IAAI,EAC1B,MAAM,EAAA;IAEN,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAU,QAAA,CAAA;QAC1B,MAAM;QACN,MAAM;KACP,CAAC;AACJ,EAAE;AAEW,MAAA,iBAAiB,GAAG,UAC/B,MAAc,EACd,MAAS,EAAA;IAET,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,MAAM;KACP,CAAC;AACJ,EAAE;MAEW,iBAAiB,GAAG,UAC/B,MAAc,EACd,MAAS,EACT,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,MAAM;QACN,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,MAAM,GAAG,UACpB,MAAc,EACd,EAAU,EAAA;IAEV,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAU,QAAA,CAAA;QAC1B,EAAE;KACH,CAAC;AACJ,EAAE;MAEW,aAAa,GAAG,UAC3B,MAAc,EACd,EAAU,EACV,IAAO,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,EAAE;QACF,IAAI;KACL,CAAC;AACJ,EAAE;MAEW,aAAa,GAAG,UAC3B,MAAc,EACd,EAAU,EACV,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,EAAE;QACF,KAAK;KACN,CAAC;AACJ,EAAE;AAEK,MAAM,QAAQ,GAAG,UAAS,MAAc,EAAA;IAC7C,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAY,UAAA,CAAA;KAC7B,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,WAAW,GAAG,UACvB,MAAc,EACd,KAAe,EAAA;IAEjB,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAe,aAAA,CAAA;QAC/B,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,MAAM,GAAG,UACpB,MAAc,EACd,IAAO,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAU,QAAA,CAAA;QAC1B,IAAI;KACL,CAAC;AACJ,EAAE;AAEW,MAAA,aAAa,GAAG,UAC3B,MAAc,EACd,IAAO,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,IAAI;KACL,CAAC;AACJ,EAAE;MAEW,aAAa,GAAG,UAC3B,MAAc,EACd,IAAO,EACP,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,aAAa,GAAG,UAC3B,MAAc,EACd,IAAiC,EAAA;IAEjC,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,IAAI;KACL,CAAC;AACJ,EAAE;AAEW,MAAA,oBAAoB,GAAG,UAClC,MAAc,EACd,IAAiC,EAAA;IAEjC,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAA0B,wBAAA,CAAA;QAC1C,IAAI;KACL,CAAC;AACJ,EAAE;MAEW,oBAAoB,GAAG,UAClC,MAAc,EACd,IAAiC,EACjC,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAA0B,wBAAA,CAAA;QAC1C,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,iBAAiB,GAAG,UAC7B,MAAc,EACd,KAAoC,EAAA;IAEtC,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAuB,qBAAA,CAAA;QACvC,KAAK;KACN,CAAC;AACJ,EAAE;AAEW,MAAA,wBAAwB,GAAG,UACpC,MAAc,EACd,KAAoC,EAAA;IAEtC,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAA+B,6BAAA,CAAA;QAC/C,KAAK;KACN,CAAC;AACJ,EAAE;MAEW,wBAAwB,GAAG,UACpC,MAAc,EACd,KAAoC,EACpC,KAAK,EAAA;IAEP,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAA+B,6BAAA,CAAA;QAC/C,KAAK;QACL,KAAK;KACN,CAAC;AACJ,EAAE;AAEF;;AAEG;AACU,MAAA,UAAU,GAAG,UACxB,MAAc,EACd,EAAU,EAAA;IAEV,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAU,QAAA,CAAA;QAC1B,EAAE;KACH,CAAC;AACJ,EAAE;AAEW,MAAA,aAAa,GAAG,UAC3B,MAAc,EACd,EAAU,EAAA;IAEV,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,EAAE;KACH,CAAC;AACJ,EAAE;MAEW,aAAa,GAAG,UAC3B,MAAc,EACd,EAAU,EACV,KAAK,EAAA;IAEL,OAAO;QACL,IAAI,EAAE,CAAI,CAAA,EAAA,MAAM,CAAkB,gBAAA,CAAA;QAClC,EAAE;QACF,KAAK;KACN,CAAC;AACJ;;MCnVa,UAAU,CAAA;IAgDrB,WAAoB,CAAA,KAAiB,EAAU,MAAqB,EAAA;QAAhD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QA1CpE,IAAO,CAAA,OAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAC5CA,QAAM,CAACC,aAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7CD,QAAM,CAACC,aAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACvD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACb,CAAC;QACF,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CACxCD,QAAM,CAACE,eAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACzD,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnB,CAAC,CACH,CAAC;QACF,IAAc,CAAA,cAAA,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7CF,QAAM,CAACG,oBAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAC9D,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB,CAAC,CACL,CAAC;QACF,IAAK,CAAA,KAAA,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CACtCH,QAAM,CAACI,WAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACrD,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf,CAAC,CACH,CAAC;QACF,IAAO,CAAA,OAAA,GAA4B,IAAI,CAAC,KAAK,CAAC,IAAI,CAChDJ,QAAM,CAACK,aAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACvD,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;QACF,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAC/CL,QAAM,CAACM,iBAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;QACF,IAAM,CAAA,MAAA,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CACvCN,QAAM,CAACO,YAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACvD,CAAC;QAEF,IAAM,CAAA,MAAA,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CACrCP,QAAM,CAACQ,YAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACzD,CAAC;QAGA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACrC,SAAA;KACF;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,MAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;KACnE;IAED,UAAU,CAAC,KAAe,EAAE,OAA+B,EAAA;QACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,UAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KACrF;IAED,IAAI,CAAC,SAAsB,IAAI,EAAA;QAC7B,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzB,YAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACnC,SAAA;AAED,QAAA,MAAM,UAAU,GAAG;YACjB,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,YAAA,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;SACzD,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;KACvE;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,KAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,MAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KACjE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,QAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,WAAW,CAAC,KAAe,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACC,WAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAACC,MAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;KACxE;AAED,IAAA,MAAM,CAAC,MAAsB,GAAA,IAAI,EAAE,MAAM,GAAG,IAAI,EAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAACC,UAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,aAAa,CAAC,IAAiC,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAACC,aAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,iBAAiB,CAAC,KAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAACC,iBAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACpF;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAACC,UAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KAC1E;IAEO,QAAQ,GAAA;QACd,IAAI,gBAAgB,CAAC,KAAK;YAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAE1D,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;iIApHU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAV,UAAU,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACFL,MAAO,eAA2C,SAAQC,eAAa,CAAA;AAO3E,IAAA,WAAA,CACY,MAAqB,EACrB,cAA8B,EAC9B,YAA0B,EAC1B,UAAsB,EAAA;AAEhC,QAAA,KAAK,EAAE,CAAC;QALE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AATlC,QAAA,IAAA,CAAA,sBAAsB,GAAmB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC7E,QAAA,IAAA,CAAA,uBAAuB,GAAmB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAE/E,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KASpD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACzC;AAEO,IAAA,uBAAuB,CAAC,MAAc,EAAA;QAC5C,OAAO;YACL,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACjB,oBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrB,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,KAAK,EAAE,IAAI;iBACZ,EAAE,MAAM,CAAC,CAAC;AAEX,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAG;AACvD,oBAAA,IAAI,CAAC,GAAG;wBAAE,OAAO;AACjB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;oBAC5B,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7B,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC9B,YAAA,MAAM,EAAE,OAAO;SAChB,CAAA;KACF;iIAtCU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gFCb5B,6OAOM,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,6OAAA,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA,CAAA;;;AEN/B;;AAEG;MACmB,+BAA+B,CAAA;AAEpD,CAAA;AAED;;AAEG;MACU,iCAAiC,GAAG,IAAI,cAAc,CAEjE,mCAAmC;;MCExB,aAAa,CAAA;AAMxB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;iBACnB,MAAM,CACL,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAC5D;iBACA,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAC5D,CAAC;QACF,OAAO,KAAK,EAAE,KAAK,CAAC;KACrB;IAED,IAAI,KAAK,CAAC,GAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACnB;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;iBACnB,MAAM,CACH,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD;iBACA,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAChC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD,CAAC;QACF,OAAO,KAAK,EAAE,KAAK,CAAC;KACrB;IAED,IAAI,QAAQ,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;iBACnB,MAAM,CACH,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD;iBACA,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAChC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD,CAAC;QACF,OAAO,KAAK,EAAE,KAAK,CAAC;KACrB;IAED,IAAI,QAAQ,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;KAC1C;AAED,IAAA,WAAA,CACY,MAAqB,EACvB,MAAqB,EAGrB,0BAA2D,EACzD,gBAAkC,EAAA;QALlC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAGrB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAAiC;QACzD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAC1C;AAGJ,IAAA,OAAO,CAAC,GAAQ,EAAE,IAAI,GAAG,IAAI,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAS,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD,CAAC;QAEF,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE;AACnD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,aAAA;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;AACR,SAAA;QAED,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG;AACN,gBAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;AAClB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;aACZ,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QAClB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CACjC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE7C,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,yBAAyB,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvE,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;KACrC;IAEO,WAAW,GAAA;QACjB,QAAQ,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE;KACnD;IAEO,eAAe,CAAC,IAAQ,EAAE,IAAI,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CACpC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACpD,CAAC;AAEF,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACjB,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;AAClB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,GAAG;aACX,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AA7KU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,gEAuEd,iCAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAvEhC,aAAa,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AA6ExB,UAAA,CAAA;IADC,QAAQ,CAAC,GAAG,CAAC;;;;AAuCb,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;2FAnHU,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;;0BAuEL,QAAQ;;0BACR,MAAM;2BAAC,iCAAiC,CAAA;2EApElC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAyEN,OAAO,EAAA,EAAA,EAAA,EAAA,CAAA;;ACnFH,MAAO,mBAA+C,SAAQ,aAAgB,CAAA;iIAAvE,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qFCXhC,kdAYU,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDDG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,kdAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;;;AEO9B,MAAO,mBAA+C,SAAQ,aAAgB,CAAA;AALpF,IAAA,WAAA,GAAA;;AAME,QAAA,IAAA,CAAA,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;AAgC3B,KAAA;AA9BC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;KAChC;IAED,IAAI,WAAW,CAAC,GAAG,EAAA;AACjB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAI,GAAc,EAAE,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;KAC5G;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAI,cAAc,CAAC,GAAG,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAI,GAAc,EAAE,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;KAC/G;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAI,cAAc,CAAC,GAAG,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAI,GAAc,EAAE,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;KAC/G;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;iIAhCU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qFCdhC,2hCAuBU,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDTG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,2hCAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;;;AEI9B,MAAO,2BAAuD,SAAQ,mBAAsB,CAAA;AALlG,IAAA,WAAA,GAAA;;AAOU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAA,CAAA,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;AA0B3B,KAAA;IAtBC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACtC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAgB,KAAI;gBACnF,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;aACrC,CAAC,CAAC,CAAC;AACL,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC5C,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AACnC,SAAA;KACF;iIA9BU,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAO3B,QAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,oDCrB7C,gtGAyEU,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD3DG,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,gtGAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;8BAWkB,cAAc,EAAA,CAAA;sBAA3E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AEPxD,MAAO,uBAAmD,SAAQ,mBAAsB,CAAA;AAL9F,IAAA,WAAA,GAAA;;AAOU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;AAE5C,QAAA,IAAA,CAAA,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;AAqB3B,KAAA;IAjBC,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAgB,KAAI;gBACnF,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;aACrC,CAAC,CAAC,CAAC;AACL,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC5C,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AACnC,SAAA;KACF;iIAxBU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAMvB,QAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,oDCpB7C,4tDA6CU,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/BG,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,4tDAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;8BAUuB,cAAc,EAAA,CAAA;sBAA3E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AEXxD,MAAO,oBAAgD,SAAQ,aAAgB,CAAA;iIAAxE,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sFCTjC,ymCAwBU,EAAA,MAAA,EAAA,CAAA,2tBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDfG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,ymCAAA,EAAA,MAAA,EAAA,CAAA,2tBAAA,CAAA,EAAA,CAAA;;;AEM/B,MAAO,mBAA+C,SAAQ,aAAgB,CAAA;iIAAvE,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qFCXhC,ukBAcU,EAAA,MAAA,EAAA,CAAA,gVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDHG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,wBAAwB,EAAA,QAAA,EAAA,ukBAAA,EAAA,MAAA,EAAA,CAAA,gVAAA,CAAA,EAAA,CAAA;;;AEOhC,MAAO,oBAAgD,SAAQ,aAAgB,CAAA;IAGjF,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EACxE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAI;YACpB,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK;AAC7B,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;AAC9C,aAAA,CAAC,CAAC,CAAA;SACN,CAAC,EACJ,CAAC;KACN;IAED,aAAa,CAAC,OAAgB,EAAE,KAAuC,EAAA;QACnE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACxD,IAAI,CAAC,KAAK,GAAG;gBACT,GAAG,IAAI,CAAC,KAAK;gBACb,KAAK,CAAC,KAAK,CAAC,EAAE;aACjB,CAAA;AACJ,SAAA;QAED,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7D,SAAA;KACJ;iIAzBQ,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sFCdjC,qjCAqBU,EAAA,MAAA,EAAA,CAAA,2tBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDPG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,yBAAyB,EAAA,QAAA,EAAA,qjCAAA,EAAA,MAAA,EAAA,CAAA,2tBAAA,CAAA,EAAA,CAAA;;;AEIjC,MAAO,kBAA8C,SAAQ,aAAgB,CAAA;AALnF,IAAA,WAAA,GAAA;;AAOU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAoBlB,KAAA;AAlBC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;KAChC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AACnC,SAAA;KACF;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACtC;iIAvBU,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oFCd/B,49DA8CU,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDhCG,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,49DAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;;;MECtB,eAAe,CAAA;AAM1B,IAAA,WAAA,GAAA;QALA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;KAKN;AAEhB,IAAA,QAAQ,MAAW;iIARR,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,qGCX5B,wzCAiDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,mBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtCa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,wzCAAA,EAAA,CAAA;0EAOpB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;AEER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDG;MAMU,gBAAgB,CAAA;IAU3B,WACY,CAAA,WAAwB,EACxB,MAAqB,EACrB,MAAqB,EACrB,YAA0B,EAC1B,UAAsB,EAAA;QAJtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAC7B;AAEL,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACnC;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1C,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAE/D,IAAI,CAAC,IAAI,GAAG;YACR,IAAI,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,IAAG;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACf,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAClC,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC,GAAG,EAAE,CAAC;YACR,GAAG,yBAAyB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/C,iBAAA,MAAM,CAAC,IAAI,IAAK,IAAI,CAAC,OAAO,EAAE,IAA2B,EAAE,MAAM,CAAC;AAClE,iBAAA,GAAG,CAAC,IAAI,KAAK;gBACZ,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ;AAClF,sBAAE,IAAY,GAAG,GAAU;AAC/B,gBAAA,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG;AAC1B,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AAC7B,aAAA,CAAC,CAAC;SACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KACpC;iIA7CU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,4FC7E7B,krBAmBc,EAAA,MAAA,EAAA,CAAA,67FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD0DD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,krBAAA,EAAA,MAAA,EAAA,CAAA,67FAAA,CAAA,EAAA,CAAA;kMAYrB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEtEK,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CACqB,MAAuB,EAChC,YAA0B,EAC1B,UAAsB,EAAA;QAFb,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAChC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAC7B;AAEL,IAAA,aAAa,CAAC,IAA0B,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACtC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAClC,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,OAAO,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC9C,CAAC,CACL,CAAC;KACH;iIAzBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iECfnC,2hBAQe,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDOF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,2hBAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA;;;MEE1B,eAAe,CAAA;AAE1B,IAAA,WAAA,CAGU,0BAA2D,EAAA;QAA3D,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAAiC;KACjE;IAEJ,SAAS,CACP,IAAO,EACP,IAAY,EACZ,IAAS,EACT,cAAmE,EACnE,eAAkE,EAAA;AAElE,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QAEhC,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,0BAA0B,EAAE;YAC3C,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,SAAA;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,aAAa;gBACb,eAAe;gBACf,cAAc;gBACd,KAAK,EAAE,IAAI,IAAI,EAAE;aAClB,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AAEzB,YAAA,IAAI,IAAI,EAAE;gBACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBAChC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,iBAAC,CAAC,CAAC;AACJ,aAAA;YAED,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI;gBACV,cAAc;AACd,gBAAA,aAAa,EAAE,aAAa;gBAC5B,eAAe;AACf,gBAAA,KAAK,EAAE,KAAK;aACb,CAAC;AACH,SAAA;KACF;AAhDU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAIhB,iCAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;+HAJhC,eAAe,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,kBAAkB;AACzB,iBAAA,CAAA;;0BAII,QAAQ;;0BACR,MAAM;2BAAC,iCAAiC,CAAA;;;MCAhC,oBAAoB,CAAA;AAyB7B,IAAA,WAAA,CACY,MAAqB,EACtB,MAAyB,EACxB,WAAwB,EAAA;QAFxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAtBpC,QAAA,IAAA,CAAA,aAAa,GAAmB;YAC5B,KAAK,EAAE,YAAW;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;oBACjC,OAAO;wBACH,GAAG,IAAI,CAAC,QAAQ;wBAChB,EAAE,EAAE,IAAI,CAAC,EAAE;qBACd,CAAA;AACL,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACtC,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;aACrC;AACD,YAAA,OAAO,EAAE,IAAI;SAChB,CAAA;QAED,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AASb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CACxC,GAAG,CAAC,IAAI,IAAG;AACP,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAErC,YAAA,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,CAAC;AACrD,iBAAA,MAAM,CAAC,CAAC,IAAK,CAAC,CAAC,OAAO,CAAC,MAA6B,EAAE,KAAK,CAAC,CAAC;YAElE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAE3C,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAI;gBAClC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE9C,gBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACrB,CAAC,CACL,CAAC;KACL;AAED,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACrC;IAED,eAAe,CAAC,OAAmB,EAAE,IAAc,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KAC3B;AAED,IAAA,aAAa,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,QAAQ,GAAA;KAEP;iIArEQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8DCjBjC,skCAuBe,EAAA,MAAA,EAAA,CAAA,y3EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,eAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDNF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,wBAAwB,EAAA,QAAA,EAAA,skCAAA,EAAA,MAAA,EAAA,CAAA,y3EAAA,CAAA,EAAA,CAAA;;;MELzB,oBAAoB,CAAA;AAG7B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAFjC,IAAU,CAAA,UAAA,GAA0B,EAAE,CAAC;KAG9C;AAED,IAAA,MAAM,CAAC,GAAG,EAAE,IAAoB,EAAE,MAA6B,EAAE,KAAc,EAAA;QAC3E,IAAI,GAAG,IAAI,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAEpB,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YAEvF,IAAI,CAAC,OAAO,EAAE;AACV,gBAAA,OAAO,GAAG;oBACN,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,oBAAA,IAAI,EAAE,GAAG;AACT,oBAAA,KAAK,EAAE,IAAI;iBACd,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAA;AAED,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AAEtB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrB,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,MAA6B,EAAA;QACjC,IAAI,CAAC,UAAU,GAAG;AACd,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YAC3C,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;SACnC,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAGO,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAErB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrB,YAAA,KAAK,EAAE,QAAQ;AAClB,SAAA,CAAC,CAAA;KACL;iIAnDQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAApB,oBAAoB,EAAA,CAAA,CAAA,EAAA;;AAyCrB,UAAA,CAAA;IADP,QAAQ,CAAC,GAAG,CAAC;;;;AAWb,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;2FAnDQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;8FA0CC,OAAO,EAAA,EAAA,EAAA,EAAA,CAAA;;ACnCb,MAAO,cAA0C,SAAQD,eAAa,CAAA;IAIxE,WACY,CAAA,YAA0B,EAC1B,UAAsB,EACtB,MAAqB,EACrB,EAAqB,EACrB,YAAqC,EAAA;AAE7C,QAAA,KAAK,EAAE,CAAC;QANA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QACrB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;KAGhD;AAED,IAAA,MAAM,CAAC,GAAG,EAAE,IAAoB,EAAE,KAAK,GAAG,KAAK,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AAC9E,YAAA,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAExD,QAAA,IAAI,GAAG,EAAE;YACL,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC5B,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAA;KACJ;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3C;IAED,WAAW,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;iIAvCQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAd,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3B,6nBASe,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKF,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,6nBAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA;kNAKnB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MEXG,aAAa,CAAA;iIAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAb,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;MAeE,gBAAgB,CAAA;iIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCNE,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAf,eAAe,EAAA,YAAA,EAAA,CANpB,eAAe,CAAA,EAAA,OAAA,EAAA,CAGf,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;kIAGV,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,eAAe;AAClB,qBAAA;AACJ,iBAAA,CAAA;;;MCCY,WAAW,CAAA;AAMtB,IAAA,WAAA,CACY,MAAqB,EACrB,IAAgB,EACJ,MAAwB,EAAA;QAFpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QACJ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AARtC,QAAA,IAAA,CAAA,UAAU,GAAG;AACrB,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,IAAI,EAAE,mEAAmE;SAC1E,CAAC;KAME;;;;;;AAQJ,IAAA,MAAM,CAAC,IAAO,EAAA;QACZ,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAC7D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;YACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAChC,CAAC,CACH,CAAC;KACL;IAED,UAAU,CACR,KAAe,EACf,OAA+B,EAAA;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,EACjD,KAAK,CACN,CAAC;KACH;AAED,IAAA,OAAO,CAAC,EAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;KACxD;IAED,OAAO,CACL,SAAsB,IAAI,EAAA;AAE1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC3C,CAAC;KACH;AAED,IAAA,UAAU,CAAC,MAAA,GAAsB,IAAI,EAAE,MAAM,EAAA;QAC3C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,KAAK,CAAC;AAChB,SAAA;QAED,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,IAAI,CAAC,IAAI;AACb,iBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/C,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,iBAAA;AACD,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,YAAY,EAAE,MAAM;aACrB,CAAC;AACD,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAI;gBACV,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBAEtB,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,gBAAA,YAAY,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBACxC,YAAY,CAAC,KAAK,EAAE,CAAC;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;aACzC,CAAC,CACH,CAAC;AACL,SAAA;QAED,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAS,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvD,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,aAAA;AACD,YAAA,YAAY,EAAE,MAAgB;SAC/B,CAAC;AACD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAI;YACV,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,YAAA,YAAY,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACxC,YAAY,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACzC,CAAC,CACH,CAAC;KACL;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACtE;AAED,IAAA,aAAa,CAAC,IAAiC,EAAA;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACxE;AAED,IAAA,iBAAiB,CAAC,KAAsC,EAAA;QACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;AAC7B,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACnC,CAAC,CAAC,CAAC;KACL;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;KAC9D;AAES,IAAA,QAAQ,CAAC,MAAmB,EAAA;QACpC,IAAI,KAAK,GAAG,EAAE,CAAC;AAEf,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAC/B,YAAA,KAAK,IAAI,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YAC1B,KAAK,IAAI,UAAU,MAAM,CAAC,KAAK,CAC7B,QAAA,EAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAClC,EAAE,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAC3B,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AAClE,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACvB,IACI,CAAC,CAAC,KAAK;AACJ,wBAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC7B,uBAAA,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AACxB,uBAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;AAClB,uBAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EACvB;AACE,oBAAA,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAI,CAAA,EAAA,CAAC,CAAC,KAAK,GAAG,CAAC;AAClD,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3C,iBAAA;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;KAClD;iIA/JU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,UAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAX,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;0BAUN,QAAQ;;;MCPA,WAAW,CAAA;IACtB,WACU,CAAA,QAAwB,EACxB,OAAuB,EACvB,MAAqB,EACrB,KAAiB,EACjB,KAAiB,EAAA;QAJjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgB;QACxB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACvB;IAEJ,IAAI,GAAA;AACF,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtE,QAAA,IAAI,QAAQ;YAAE,OAAO;AAErB,QAAA,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAoB,KAAI;YAC/C,QAAQ,MAAM,CAAC,IAAI;AACjB,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,QAAA,CAAA;AACnC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,yBAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAC3D,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,IAAI,EACX,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAkB,gBAAA,CAAA;AAC3C,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9D,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBpC,IAAgB,CACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CACjE,CACF,CAAC;oBACF,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAe,aAAA,CAAA;AACxC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;yBAClD,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBqC,iBAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChD,wBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;AACxB,wBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;qBAC7B,CAAC,CACH,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,iBAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB;AACE,4BAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;AACxB,4BAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;yBAC7B,EACD,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAuB,qBAAA,CAAA;AAChD,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClE,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBtC,IAAgB,CACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,eAAe,CAAC,MAAM;0BAClB,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;AAC1C,0BAAE,IAAI,CACT,CACF,CAAC;oBACF,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAQ,MAAA,CAAA;AACjC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACtB,yBAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBuC,WAAuB,CACrB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CACP,CACF,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,WAAuB,CACrB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,MAAM,EACb,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,QAAA,CAAA;AACnC,oBAAA,IAAI,CAAC,OAAO;yBACT,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AACxC,yBAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,iBAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,MAAM,CACd,CACF,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,iBAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,MAAM,EACb,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,QAAA,CAAA;AACnC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAClB,yBAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,EAAE,EACT,MAAM,CACP,CACF,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,EAAE,EACT,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,QAAA,CAAA;AACnC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,yBAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAC3D,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,IAAI,EACX,KAAK,CACN,CACF,CAAC;AACF,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC9C,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1D,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAkB,gBAAA,CAAA;AAC3C,oBAAA,IAAI,CAAC,KAAK;AACP,yBAAA,IAAI,CAACX,QAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,yBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBW,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,4BAAA,GAAG,MAAM;AACT,4BAAA,MAAM,EAAE,CAAC;AACV,yBAAA,CAAC,CACH,CAAC;wBAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACE,MAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,qBAAC,CAAC,CAAC;oBACL,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAkB,gBAAA,CAAA;AAC3C,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,yBAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB6C,oBAAgC,CAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,IAAI,CACZ,CACF,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,oBAAgC,CAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,IAAI,EACX,KAAK,CACN,CACF,CAAC;AACF,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAChD,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1D,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAA0B,wBAAA,CAAA;AACnD,oBAAA,IAAI,CAAC,KAAK;AACP,yBAAA,IAAI,CAACX,QAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,yBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBW,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,4BAAA,GAAG,MAAM;AACT,4BAAA,MAAM,EAAE,CAAC;AACV,yBAAA,CAAC,CACH,CAAC;wBAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACE,MAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,qBAAC,CAAC,CAAC;oBACL,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAuB,qBAAA,CAAA;AAChD,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,yBAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB+C,wBAAoC,CAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,KAAK,CACb,CACF,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,wBAAoC,CAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,KAAK,EACZ,KAAK,CACN,CACF,CAAC;AACF,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAClD,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1D,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAA+B,6BAAA,CAAA;AACxD,oBAAA,IAAI,CAAC,KAAK;AACP,yBAAA,IAAI,CAACX,QAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,yBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBW,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,4BAAA,GAAG,MAAM;AACT,4BAAA,MAAM,EAAE,CAAC;AACV,yBAAA,CAAC,CACH,CAAC;AACJ,qBAAC,CAAC,CAAC;oBACL,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,QAAA,CAAA;AACnC,oBAAA,IAAI,CAAC,OAAO;AACT,yBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjB,yBAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBmD,aAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CACzD,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjBC,aAAyB,CACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,MAAM,CAAC,EAAE,EACT,KAAK,CACN,CACF,CAAC;wBACF,OAAO,EAAE,EAAE,CAAC;AACd,qBAAC,CAAC,CACH;AACA,yBAAA,SAAS,EAAE,CAAC;oBACf,MAAM;AAER,gBAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAkB,gBAAA,CAAA;AACzC,oBAAA,IAAI,CAAC,KAAK;AACL,yBAAA,IAAI,CAAC/D,QAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,yBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AAClB,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACfW,IAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,4BAAA,GAAG,MAAM;AACT,4BAAA,MAAM,EAAE,CAAC;AACZ,yBAAA,CAAC,CACL,CAAC;AACN,qBAAC,CAAC,CAAC;oBACT,MAAM;AAER,gBAAA;oBACE,MAAM;AACT,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;iIA7UU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAX,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;MCDE,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAA6B,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;KAAI;IAEtD,MAAM,MAAM,CAAC,OAOZ,EAAA;QACC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,MAAK;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI;AACnE,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEhC,gBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,KAAI;AACzB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC9C,wBAAA,IAAI,CAAC,EAAE;;4BAEL,UAAU,CAAC,MAAK;AACd,gCAAA,GAAG,CACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;oCACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CACnC,CAAC;AACJ,6BAAC,CAAC,CAAC;AACJ,yBAAA;AACH,qBAAC,CAAC,CAAC;AAEH,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,wBAAA,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;wBAC/B,MAAM,EACJ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM;AACnC,4BAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK;AACrC,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;YACD,YAAY,EAAE,MAAK;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI;AACnE,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEhC,gBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,KAAI;AACzB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC9C,wBAAA,IAAI,CAAC,EAAE;;4BAEL,UAAU,CAAC,MAAK;AACd,gCAAA,GAAG,CACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;oCACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CACnC,CAAC;AACJ,6BAAC,CAAC,CAAC;AACJ,yBAAA;AACH,qBAAC,CAAC,CAAC;AAEH,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,wBAAA,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;wBAC/B,MAAM,EACJ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM;AACnC,4BAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK;AACrC,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,gBAAA,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C,aAAC,CAAC,CACH;YACD,WAAW,EAAE,aAAa,CACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KAAI;gBAC3B,OAAO,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClE,aAAC,CAAC,CACH;SACF,CAAC;KACH;iIA9EU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA1C,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAzB,yBAAyB,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;ACoBX,MAAM,UAAU,GAAG;IACjB,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,2BAA2B;IAC3B,uBAAuB;IACvB,oBAAoB;IACpB,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,oBAAoB;IACpB,cAAc;CACf,CAAC;MAsBW,oBAAoB,CAAA;iIAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBApC/B,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;YACvB,oBAAoB;YACpB,gBAAgB;YAChB,mBAAmB;YACnB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,cAAc,CAAA,EAAA,OAAA,EAAA;;YAOZ,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;YACZ,eAAe,CAAA,EAAA,OAAA,EAAA,CAEP,eAAe,EA3BzB,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;YACvB,oBAAoB;YACpB,gBAAgB;YAChB,mBAAmB;YACnB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;AAuBH,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EARpB,SAAA,EAAA;YACT,WAAW;YACX,WAAW;YACX,UAAU;YACV,aAAa;YACb,yBAAyB;AAC1B,SAAA,EAAA,OAAA,EAAA;;YAdC,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;AACZ,YAAA,eAAe,EAEP,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;AAC7B,oBAAA,OAAO,EAAE;;wBAEP,WAAW;wBACX,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,UAAU,CAAC;AACzC,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,WAAW;wBACX,UAAU;wBACV,aAAa;wBACb,yBAAyB;AAC1B,qBAAA;AACF,iBAAA,CAAA;;;AClDY,MAAA,YAAY,GAAe;AACpC,IAAA,MAAM,EAAE,KAAK;EACf;AAEF,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,YAAY,EAAE,MAAM,EAAE,MAAM,KAAI;IACzD,QAAQ,MAAM,CAAC,IAAI;QACf,KAAK,CAAA,CAAA,EAAI,MAAM,CAAU,QAAA,CAAA;YACrB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAe,aAAA,CAAA;YAC1B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAuB,qBAAA,CAAA;YAClC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAuB,qBAAA,CAAA;YAClC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAU,QAAA,CAAA;YACrB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;aAChB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;aACf,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;aACf,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAQ,MAAA,CAAA;YACnB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAgB,cAAA,CAAA;YAE3B,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IACI,MAAM,CAAC,MAAM;mBACV,MAAM,CAAC,MAAM,CAAC,MAAM;AACpB,mBAAA,KAAK,CAAC,IAAI;mBACV,MAAM,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,UAAU,EAC/D;AACE,gBAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;AACpB,oBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,GAAG;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;iBACxB,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7B,aAAA;YAED,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,IAAI;AACJ,gBAAA,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;AACpC,gBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;AAC1B,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAS,OAAA,CAAA;AACpB,YAAA,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;QAE/B,KAAK,CAAA,CAAA,EAAI,MAAM,CAAgB,cAAA,CAAA;YAC3B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAU,QAAA,CAAA;YACrB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,MAAM,CAAC,IAAI;AACrB,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAe,aAAA,CAAA;YAC1B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;aACnC,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAY,UAAA,CAAA;YACvB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAU,QAAA,CAAA;YACrB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAA0B,wBAAA,CAAA;YACrC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAA0B,wBAAA,CAAA;YACrC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAuB,qBAAA,CAAA;YAClC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAA+B,6BAAA,CAAA;YAC1C,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAA+B,6BAAA,CAAA;YAC1C,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAU,QAAA,CAAA;YACrB,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;aACd,CAAC;QAEN,KAAK,CAAA,CAAA,EAAI,MAAM,CAAkB,gBAAA,CAAA;YAC7B,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;AAEN,QAAA;AACI,YAAA,OAAO,KAAK,CAAC;AACpB,KAAA;AACL,CAAC,CAAC;AAEI,SAAU,UAAU,CAAC,MAAM,EAAA;AAC7B,IAAA,OAAO,CAAC,KAAK,EAAE,MAAc,KAAI;QAC7B,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAC,CAAA;AACL;;MClQa,WAAW,CAAA;IACpB,WACY,CAAA,WAAwB,EACxB,MAAyB,EAAA;QADzB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;KAChC;IAEL,gBAAgB,GAAA;AACZ,QAAA,MAAM,GAAG,GAAsB,IAAI,CAAC,MAAM,CAAC;QAC3C,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/C,IACI,GAAG,CAAC,GAAG;AACP,YAAA,YAAY,CAAC,MAAM;YACnB,YAAY,CAAC,MAAM,CAAC,WAAW;AAC/B,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EACtE;AACE,YAAA,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;AACnB,SAAA;QAED,IACI,GAAG,CAAC,IAAI;AACR,YAAA,YAAY,CAAC,MAAM;YACnB,YAAY,CAAC,MAAM,CAAC,WAAW;AAC/B,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EACtE;AACE,YAAA,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;AACpB,SAAA;QAED,IACI,GAAG,CAAC,MAAM;AACV,YAAA,YAAY,CAAC,MAAM;YACnB,YAAY,CAAC,MAAM,CAAC,WAAW;AAC/B,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EACtE;AACE,YAAA,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,SAAA;KACJ;iIApCQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAX,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;MCGE,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAW7D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAE9C,IAAO,CAAA,OAAA,GAAqC,aAAa,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ;AACnD,SAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,CAAE,MAAM,EAAE,OAAO,CAAE,KAAI;AACxB,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,EAAE,CAAC;AACxB,YAAA,OAAO,MAAM,CAAC;SACjB,CAAC,CACL,CAAC;AASL,KAAA;AA3BG,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;KACnC;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KACpC;AAaD,IAAA,SAAS,CAAC,GAAyB,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAChC;AAED,IAAA,UAAU,CAAC,GAAY,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjC;iIA9BQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACQK,MAAgB,yBAAqD,SAAQlB,eAAa,CAAA;aACrF,IAAS,CAAA,SAAA,GAAyB,gBAAzB,CAA0C,EAAA;AAQ1D,IAAA,WAAA,CACW,MAAyB,EAAA;AAEhC,QAAA,KAAK,EAAE,CAAC;QAFD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;KAGnC;iIAbiB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4C,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uJAGV,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAH/B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;kGAKN,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjE,WAAW,EAAA,CAAA;sBADV,KAAK;;;ACJJ,MAAO,qBAAiD,SAAQ,yBAA4B,CAAA;IAO9F,WACqB,CAAA,MAAqB,EACtB,MAAyB,EAAA;QAEzC,KAAK,CAAC,MAAM,CAAC,CAAC;QAHG,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;AAR7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAClC,GAAG,CAAC,MAAM,IAAG;AACT,YAAA,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,CAAA;SAC9B,CAAC,CACH,CAAC;KAOD;iIAZQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3C,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAJnB,QAAA,EAAA,+BAAA,EAAA,SAAA,EAAA;YACP,oBAAoB;AACvB,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBL,kaASmB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,sBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA3C,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAG9B,SAAA,EAAA;wBACP,oBAAoB;AACvB,qBAAA,EAAA,QAAA,EAAA,kaAAA,EAAA,CAAA;;;ME2CQ,aACT,SAAQ,sBAAsB,CAAiC,gBAAgB,CAAC,CAAA;AAyBlF,IAAA,WAAA,CACU,MAAqB,EACrB,MAAc,EACd,sBAAiD,EACjD,QAAkB,EAClB,EAAqB,EACrB,WAAwB,EACxB,eAAgC,EAChC,gBAA8C,EAC9C,YAA0B,EAC1B,UAAsB,EACtB,WAA2B,EAC5B,MAAyB,EACxB,aAAgC,EAChC,SAA2B,EAC3B,wBAAkD,EAAA;AAE1D,QAAA,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAhBvC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;QACjD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA8B;QAC9C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC5B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACxB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAmB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AArCpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAOnD,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB,CAAC,CACH,CAAC;AASF,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,SAAS,EAA2B,CAAC;AAqBzD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACjE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;KAClD;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAE1C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK,YAAY,EAAE;AACjD,YAAA,SAAS,GAAG;gBACV,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAE,GAAG,EAAE;AAChE,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;AAC/C,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI;AACnE,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI;gBAC7D,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;AACnE,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;aAC7B,CAAC;AACH,SAAA;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,SAAA;AAAM,aAAA;AACL,YAAA,SAAS,GAAG;AACV,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;gBAC/C,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;sBAC5F,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI;AACzC,gBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;sBAC9E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI;gBAC1E,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAC3F,sBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI;gBACxC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI;AAClG,sBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;gBAC5C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAE,GAAG,EAAE;AAChE,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;aAC7B,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE5B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAExC,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AACxB,kBAAE;AACE,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/D,oBAAA,GAAG,EAAE,CAAC,GAAG,KAAI;AACX,wBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU;AAChC,4BAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,GAAG,IAAI,CAAC,MAAM;AACd,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,MAAM,EAAE,CAAC;AACV,6BAAA,CAAC,CAAC;qBACN;AACF,iBAAA;AACH,kBAAE,IAAI;AACR,YAAA,UAAU,EAAE,UAAU;SACvB,CAAC;QAEF,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;AAC3D,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;AACnC,sBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;sBACvC,EAAE,CAAC;AACP,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM;AACtC,sBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;sBAC1C,EAAE,CAAC;AACP,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;AACpB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG;AAChC,sBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;sBACpC,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,QAAQ,EAAE;AACR,gBAAA,OAAO,EAAE,CAAC,MAAM,KAAU;AACxB,oBAAA,MAAM,MAAM,GAAG;wBACb,GAAG,IAAI,CAAC,MAAM;AACd,wBAAA,GAAG,MAAM;qBACV,CAAC;AACF,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC1B;AACD,gBAAA,qBAAqB,EAAE,OAAO,IAAI,KAAI;oBACpC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAC9C,wBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;4BAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,4BAAA,SAAS,EAAE,oBAAoB;AAChC,yBAAA,CAAC,CAAC;AACJ,qBAAA;yBAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACrD,wBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACnC,qBAAA;AAED,oBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAC/B;AACD,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClD,qBAAqB,EAAE,IAAI,CAAC,oBAAoB;AACjD,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC7D,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;AAC5B,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;AAC1B,kBAAE;AACE,oBAAA,QAAQ,EAAE;AACR,wBAAA,OAAO,EAAE,CAAC,EAAE,KAAI;AACd,4BAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;yBACxB;wBACD,SAAS,EAAE,MAAK;AACd,4BAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;yBACxB;AACD,wBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;AAC5B,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,qBAAA;AACD,oBAAA,kBAAkB,EAAE;AAClB,wBAAA,GAAG,EACD,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,4BAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;4BACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;8BACjC,kBAAkB,CAAC,IAAI,CACrB,CAAC,EAAE,KACD,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CACzD,CAAC,OAAO;AACX,8BAAE,IAAI;AACV,wBAAA,MAAM,EACJ,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,4BAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;4BACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM;AACtC,8BAAE,kBAAkB,CAAC,IAAI,CACrB,CAAC,EAAE,KACD,EAAE,CAAC,SAAS;gCACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAC3C,CAAC,OAAO;AACX,8BAAE,IAAI;AACX,qBAAA;AACF,iBAAA;AACH,kBAAE,IAAI;AACR,YAAA,IAAI,EACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACvC,kBAAE;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG;AAC/D,wBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AACzB,qBAAA;AACF,iBAAA;AACH,kBAAE,IAAI;AACV,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AACxB,kBAAE;AACE,oBAAA,QAAQ,EAAE;AACR,wBAAA,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACtC,wBAAA,KAAK,EAAE,CAAC,IAAO,KAAI;4BACjB,OAAO,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;yBACrG;AACF,qBAAA;AACF,iBAAA;AACH,kBAAE,IAAI;AACR,YAAA,UAAU,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7C,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;AACrC,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;AACnC,gBAAA,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAK;wBACd,OAAO,IAAI,CAAC,MAAM,CAAC;qBACpB;AACD,oBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK;AAC3B,iBAAA;aACF,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACvB,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAExB,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAE1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,YAAW;AAClE,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,MAAM,KAAK,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,MAAM,EAAE,IAAI;SACb,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KAC7B;IAEO,aAAa,GAAA;AACnB,QAAA,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvD,MAAM,WAAW,GACf,iBAAiB,CAAC,IAAI,CACpB,CAAC,CAAC,KAAM,CAAC,CAAC,OAAO,EAAE,IAA2B,EAAE,MAAM,CACvD,IAAI,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;QAErC,MAAM,aAAa,GACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK;AACnC,aACI,IAAI,CAAC,MAAM,CAAC,IAAI;AAChB,gBAAA,iBAAiB,CAAC,IAAI,CAClB,CAAC,CAAC,KAAM,CAAC,CAAC,OAAO,EAAE,MAA6B,EAAE,KAAK,CAC1D;AACD,gBAAA,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ;AAC9B,iBAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI;AACrB,oBAAA,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC,CACpD,CAAC;QAEN,OAAO;AACL,YAAA,IAAI,aAAa;AACf,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC5B,4BAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;4BAEjC,UAAU,CAAC,YAAW;gCACpB,IAAI,CAAC,WAAW,GAAG;oCACjB,GAAG,IAAI,CAAC,WAAW;AACnB,oCAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO;iCAC7D,CAAC;AACF,gCAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS;AAC5B,oCAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACpC,gCAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC1B,6BAAC,CAAC,CAAC;yBACJ;AACF,qBAAA;AACF,iBAAA;kBACD,EAAE,CAAC;AACP,YAAA,IAAI,WAAW;AACb,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,gBAAgB;AACtB,wBAAA,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,YAAW;AAClB,4BAAA,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gCAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gCAAA,SAAS,EAAE,gBAAgB;AAC5B,6BAAA,CAAC,CAAC;yBACJ;AACF,qBAAA;AACF,iBAAA;kBACD,EAAE,CAAC;AACP,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG;AACjB,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gCACnB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM;AACpD,6BAAA,CAAC,CAAC;yBACJ;AACF,qBAAA;AACF,iBAAA;kBACD,EAAE,CAAC;AACP,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;AACpB,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,IAAI,EAAE,SAAsB;AAC5B,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;kBACD,EAAE,CAAC;AACP,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;SACpD,CAAC;KACH;AAEO,IAAA,gBAAgB,CACtB,kBAGG,EAAA;AAEH,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,CAAC,IAAI;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG;cAC9B,kBAAkB,CAAC,IAAI,CACrB,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAC5D,CAAC,OAAO;cACT,IAAI,CAAC;QAEX,UAAU,CAAC,MAAK;YACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;iIArWU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA6C,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAb,aAAa,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiBK,gBAAgB,EAGZ,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,kDAG9B,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,uBAAuB,EApC5D,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;AACF,iBAAA,CAAA;ifAmBC,MAAM,EAAA,CAAA;sBADL,SAAS;uBAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAI9D,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAI7D,eAAe,EAAA,CAAA;sBADd,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAA;;;ACjEpE,MAAgB,yBAAqD,SAAQnD,eAAa,CAAA;aACrF,IAAS,CAAA,SAAA,GAAyB,gBAAzB,CAA0C,EAAA;IA2B1D,WACW,CAAA,MAAyB,EACzB,MAAqB,EAAA;AAE5B,QAAA,KAAK,EAAE,CAAC;QAHD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACzB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAtBsB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,EAAsB,CAAC;AAY3G,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAc,CAAC;AAGjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAK,CAAC;AAGjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;AAOxC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;KAGrC;iIApCiB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4C,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAKV,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EAGnC,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,aAAa,2BAAU,aAAa,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FARhC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;wHAON,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGX,cAAc,EAAA,CAAA;sBAAnE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;gBAGpD,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,MAAM;gBAIP,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAIP,aAAa,EAAA,CAAA;sBADZ,MAAM;;;AC/BL,MAAO,qBAAiD,SAAQ,yBAA4B,CAAA;iIAArF,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4FCXlC,mlBAgBU,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiD,eAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDLG,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,+BAA+B,EAAA,QAAA,EAAA,mlBAAA,EAAA,CAAA;;;MEmDhC,aACT,SAAQ,sBAAsB,CAAiC,gBAAgB,CAAC,CAAA;IAiBlF,IAAI,IAAI,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAoBD,IAAA,WAAA,CACU,MAAc,EACd,WAA2B,EAC3B,MAAqB,EACrB,OAAuB,EACvB,KAAqB,EACrB,sBAAiD,EACjD,gBAAkC,EACnC,MAAyB,EACxB,QAAkB,EAClB,EAAqB,EAC7B,WAAwB,EAChB,YAA0B,EAC1B,UAAsB,EACtB,YAA0B,EAC1B,WAA2B,EAC3B,SAA2B,EAC3B,wBAAkD,EAClD,cAA8B,EAAA;AAEtC,QAAA,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAnBvC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;QACjD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACnC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACxB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QAErB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAzDxC,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,cAAc,EAAE,IAAI;SACrB,CAAC;QAIF,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAgBoD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,SAAS,EAA8B,CAAC;AAavI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,SAAS,EAA2B,CAAC;QAwBzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;KACxC;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;KACvG;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvE,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACrB,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACvC,aAAA;YAED,IAAI,CAAC,WAAW,CAAC,MAAM;AACpB,iBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC3B,iBAAA,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACf,aAAC,CAAC,CAAC;YAEL,IAAI,CAAC,WAAW,CAAC,WAAW;AACvB,iBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC3B,iBAAA,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACtB,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACrB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjC,iBAAA;AACH,aAAC,CAAC,CAAC;AACR,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAgB;AAC1B,gBAAA,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClC,gBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAChB,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAClB,oBAAA,IAAI,EAAE,GAAG;AACV,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,gBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAChB,oBAAA,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,IAAI,CAAC,EAAE;AACd,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YAEtE,OAAO,CAAC,UAAU,CAAC;AACrB,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CACrF;AACE,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;AACnC,0BAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;0BACvC,EAAE,CAAC;AACP,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM;AACpC,0BAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;0BAC1C,EAAE,CAAC;AACV,iBAAA;AACF,aAAA,CACF,CAAC;YAEF,IAAI,CAAC,cAAc,GAAG;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;AAC5B,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAI,IAAI,CAAC,MAAM,CAAC,OAAqC,CAAC,QAAQ,GAAG,IAAI;AAClG,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,GAAG,EACD,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;0BACjC,kBAAkB,CAAC,IAAI,CACrB,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAC/D,CAAC,OAAO;AACX,0BAAE,IAAI;AACV,oBAAA,MAAM,EACF,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM;0BAClC,kBAAkB,CAAC,IAAI,CACzB,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAChE,CAAC,OAAO;AACT,0BAAE,IAAI;AACf,iBAAA;aACF,CAAC;AACH,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACjE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEO,MAAM,kBAAkB,CAAC,IAAoB,EAAA;QACnD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CACnF;AACE,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG;AAC/B,sBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;sBACrC,EAAE,CAAC;AACT,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM;AAClC,sBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;sBACxC,EAAE,CAAC;AACV,aAAA;AACF,SAAA,CACJ,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAC/C,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAChE,EAAE,OAAO,CAAC;AAEX,QAAA,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,IAAI,CAClD,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,CACnE,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE;AAC9C,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAClD,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACxD,SAAA;KACF;AAED,IAAA,eAAe,CAAC,GAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;KAC7B;AAED,IAAA,QAAQ,CAAC,GAAM,EAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KACtB;AAED,IAAA,aAAa,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KACtB;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC9B,CAAC;KACH;IAEO,UAAU,GAAA;QAChB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElD,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;gCAC5B,OAAO;AACR,6BAAA;4BAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,4BAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBACtB;AACF,qBAAA;iBACF,CAAC;AACJ,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;AACrB,0BAAE;AACE,4BAAA;AACE,gCAAA,IAAI,EAAE,OAAO;AACb,gCAAA,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,MAAK;AACZ,oCAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;oCACtB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oCAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,oCAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;iCACxB;AACD,gCAAA,SAAS,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;AACtC,6BAAA;AACF,yBAAA;0BACD,EAAE,CAAC;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;gCAC5B,OAAO;AACR,6BAAA;4BAED,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;4BACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAuB,CAAC,CAAC;AAExD,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,gCAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gCACtB,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,6BAAA;AAAM,iCAAA;AACL,gCAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtB,6BAAA;yBACF;AACF,qBAAA;iBACF,CAAC;AACJ,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KACnB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAC/F;AACC,sBAAE;AACE,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,MAAK;AACZ,gCAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACrB,gCAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gCAChC,IAAI,CAAC,eAAe,EAAE,CAAC;6BACxB;AACD,4BAAA,SAAS,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;AACtC,yBAAA;AACF,qBAAA;sBACD,EAAE,CAAC;AACV,SAAA;KACF;IAEO,QAAQ,GAAA;QACd,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAElD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAE9G,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,QAAQ;gBACX,OAAO,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,KAAK,SAAS;gBACZ,OAAO,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5D,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,GAAW,EAAA;QACjC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC;QAEjD,MAAM,GAAG,GAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,GAAG,CAAC,SAAS,GAAC,GAAG,CAAC;AAElB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAExB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;cAClC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;cACvD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;AAElD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK,CAAC;QAE7B,MAAM,aAAa,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC7D,YAAA,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACjD,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,gBAAgB,CAAC,OAAwB,EAAE,aAAoB,EAAE,SAAiB,EAAE,GAAG,GAAG,IAAI,EAAA;QACpG,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;AAElG,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;AACjC,YAAA,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAA,EAAA,EAAK,OAAO,CAAC,MAAM,CAAC,aAAa,CAAA,CAAA,CAAG,CAAC,CAAC;YACjE,OAAO;AACR,SAAA;QAED,IAAI,OAAO,YAAY,kBAAkB,EAAE;AACzC,YAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,OAAO,YAAY,gBAAgB,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpF,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,OAAO,YAAY,gBAAgB,EAAE;YACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AACpC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;AACpE,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;iIA3YU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjD,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAkC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAlD,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAkC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAyC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAzC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,qGA8Bb,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEY,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGf,gBAAgB,EAGb,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EATlC,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,qBAAqB,2BAAU,qBAAqB,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAYpD,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,uBAAuB,EA9D5D,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0C,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;AACF,iBAAA,CAAA;+jBA8BuE,kBAAkB,EAAA,CAAA;sBAAvF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;gBAC3B,OAAO,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGvC,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAI7D,MAAM,EAAA,CAAA;sBADL,SAAS;uBAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI7D,SAAS,EAAA,CAAA;sBADR,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIhE,eAAe,EAAA,CAAA;sBADd,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAA;;;AC3E7D,MAAA,KAAK,GAAG;IACjB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,qBAAqB;EACvB;MAgCW,cAAc,CAAA;AACvB,IAAA,WAAA,CAAY,KAAiB,EAAE,MAAqB,EAAE,OAAyB,EAAA;QAC3E,gBAAgB,CAAC,UAAU,CACvB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,cAAc;AACjB,cAAE,MAAM,CAAC,cAAc,EAAE;cACvB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAClC,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;KAClB;iIATQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAzD,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA0D,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBApCvB,aAAa;YACb,aAAa;YACb,qBAAqB;AACrB,YAAA,qBAAqB,aAQjB,WAAW;YACX,YAAY;AACZ,YAAA,eAAe,qBAMf,WAAW;YACX,YAAY;AACZ,YAAA,oBAAoB,aArBxB,aAAa;YACb,aAAa;YACb,qBAAqB;AACrB,YAAA,qBAAqB,EAsBjB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAWf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EATZ,SAAA,EAAA;YACP,WAAW;YACX,oBAAoB;YACpB,WAAW;YACX,WAAW;YACX,UAAU;YACV,yBAAyB;AAC5B,SAAA,EAAA,OAAA,EAAA,CAvBG,WAAW;YACX,YAAY;YACZ,eAAe;YACf,YAAY,CAAC,QAAQ,CAAC;AAClB,gBAAA,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AACtC,gBAAA,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE;AACzC,gBAAA,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE;aAC5C,CAAC;YACF,WAAW;YACX,YAAY;AACZ,YAAA,oBAAoB,EAIpB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWf,cAAc,EAAA,UAAA,EAAA,CAAA;kBA9B1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;AACV,wBAAA,GAAG,KAAK;AACX,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,WAAW;wBACX,YAAY;wBACZ,eAAe;wBACf,YAAY,CAAC,QAAQ,CAAC;AAClB,4BAAA,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AACtC,4BAAA,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE;AACzC,4BAAA,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE;yBAC5C,CAAC;wBACF,WAAW;wBACX,YAAY;wBACZ,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG,KAAK;wBACR,oBAAoB;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,WAAW;wBACX,oBAAoB;wBACpB,WAAW;wBACX,WAAW;wBACX,UAAU;wBACV,yBAAyB;AAC5B,qBAAA;AACJ,iBAAA,CAAA;;;MCXY,cAAc,CAAA;IACzB,WAAY,CAAA,MAAqB,EAAE,OAAyB,EAAA;QAC1D,gBAAgB,CAAC,UAAU,CACzB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,cAAc;AACnB,cAAE,MAAM,CAAC,cAAc,EAAE;cACvB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAC9B,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;KAChB;iIATU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAoC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAd,cAAc,EAAA,OAAA,EAAA;;YAnBvB,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;YACZ,oBAAoB;AACpB,YAAA,gBAAgB,aAER,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAWnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAVd,SAAA,EAAA;YACT,WAAW;YACX,oBAAoB;YACpB,WAAW;YACX,WAAW;YACX,UAAU;YACV,aAAa;YACb,yBAAyB;AAC1B,SAAA,EAAA,OAAA,EAAA;;YAjBC,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;YACZ,oBAAoB;AACpB,YAAA,gBAAgB,EAER,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;;wBAEP,WAAW;wBACX,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,oBAAoB;wBACpB,gBAAgB;AACjB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,oBAAoB;wBACpB,WAAW;wBACX,WAAW;wBACX,UAAU;wBACV,aAAa;wBACb,yBAAyB;AAC1B,qBAAA;AACF,iBAAA,CAAA;;MAcY,UAAU,CAAA;IACrB,OAAO,UAAU,CACf,OAEsC,EAAA;QAEtC,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc,GAAG,cAAc;AAC3D,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;gBACjD,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;AACrD,gBAAA;AACE,oBAAA,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAwB;AAClE,iBAAA;gBACD,IACI,OAAO,CAAC,MAAM;sBACR,CAAC,aAAa,CAAC;AACjB,sBAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CACjE;AACF,aAAA;SACF,CAAC;KACH;iIAtBU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAV,UAAU,EAAA,CAAA,CAAA,EAAA;kIAAV,UAAU,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,QAAQ;mBAAC,EAAE,CAAA;;;AC7DZ;;AAEG;;;;"}
|