@firestitch/list 12.19.1 → 12.20.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.
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-list.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/classes/reorder-controller.ts","../../src/app/enums/button-type.enum.ts","../../src/app/models/row-action.model.ts","../../src/app/directives/draggable-list/draggable-list.directive.ts","../../src/app/components/body/row/cell/cell.component.ts","../../src/app/components/body/row/cell/cell.component.html","../../src/app/components/body/row/inline-action/inline-action.component.ts","../../src/app/components/body/row/inline-action/inline-action.component.html","../../src/app/pipes/action-label.ts","../../src/app/components/body/row/menu-action/menu-action.component.ts","../../src/app/components/body/row/menu-action/menu-action.component.html","../../src/app/components/body/row/actions/actions.component.ts","../../src/app/components/body/row/actions/actions.component.html","../../src/app/components/body/row/row.component.ts","../../src/app/components/body/row/row.component.html","../../src/app/directives/draggable-row/draggable-row.directive.ts","../../src/app/components/body/body.component.ts","../../src/app/components/body/body.component.html","../../src/app/components/customize-cols/customize-cols.component.ts","../../src/app/components/customize-cols/customize-cols.component.html","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.ts","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.html","../../src/app/components/footer/footer-row/footer-row.component.ts","../../src/app/components/footer/footer-row/footer-row.component.html","../../src/app/components/footer/footer.component.ts","../../src/app/components/footer/footer.component.html","../../src/app/components/head/head-cell/head-cell.component.ts","../../src/app/components/head/head-cell/head-cell.component.html","../../src/app/classes/selection-controller.ts","../../src/app/components/head/head.component.ts","../../src/app/components/head/head.component.html","../../src/app/models/styleConfig.model.ts","../../src/app/models/column.model.ts","../../src/app/enums/page-change-type.enum.ts","../../src/app/enums/state.enum.ts","../../src/app/classes/columns-controller.ts","../../src/app/enums/row-type.enum.ts","../../src/app/models/row/base-row.ts","../../src/app/models/row/group-row.ts","../../src/app/models/row/child-row.ts","../../src/app/models/row/simple-row.ts","../../src/app/models/row/group-footer-row.ts","../../src/app/models/row.ts","../../src/app/classes/data-controller.ts","../../src/app/classes/external-params-controller.ts","../../src/app/classes/actions-controller.ts","../../src/app/enums/pagination-strategy.enum.ts","../../src/app/classes/pagination-controller.ts","../../src/app/models/column-async-attribute.ts","../../src/app/models/column-attributes.ts","../../src/app/classes/sorting-controller.ts","../../src/app/classes/list-controller.ts","../../src/app/classes/persistance-controller.ts","../../src/app/directives/heading/heading.directive.ts","../../src/app/directives/subheading/subheading.directive.ts","../../src/app/directives/heading-container/heading-container.directive.ts","../../src/app/directives/header/header.directive.ts","../../src/app/directives/cell/cell.directive.ts","../../src/app/directives/footer/footer.directive.ts","../../src/app/directives/group-header/group-header.directive.ts","../../src/app/directives/group-footer/group-footer.directive.ts","../../src/app/services/group-expand-notifier.service.ts","../../src/app/directives/group-expand-trigger/group-expand-trigger.directive.ts","../../src/app/directives/column/column.directive.ts","../../src/app/directives/empty-state/empty-state.directive.ts","../../src/app/fs-list.providers.ts","../../src/app/components/saved-filters/saved-filters.component.ts","../../src/app/components/saved-filters/saved-filters.component.html","../../src/app/components/status/status.component.ts","../../src/app/components/status/status.component.html","../../src/app/components/loader/loader.component.ts","../../src/app/components/loader/loader.component.html","../../src/app/components/pagination/pagination.component.ts","../../src/app/components/pagination/pagination.component.html","../../src/app/directives/content-init/content-init.directive.ts","../../src/app/components/list/list.component.ts","../../src/app/components/list/list.component.html","../../src/app/components/manage-saved-filters/manage-saved-filters.component.ts","../../src/app/components/manage-saved-filters/manage-saved-filters.component.html","../../src/app/directives/content/content.directive.ts","../../src/app/fs-list.module.ts","../../src/public_api.ts","../../src/firestitch-list.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n FsListReorderConfig,\n FsListReorderDoneCallback,\n FsListReorderMovedCallback,\n FsListReorderMoveInGroupCallback\n} from '../interfaces';\n\nimport { DataController } from './data-controller';\nimport { ActionsController } from './actions-controller';\nimport { SelectionController } from './selection-controller';\n\nexport enum ReorderPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum ReorderStrategy {\n Always = 'always',\n Manual = 'manual',\n Custom = 'custom',\n}\n\n@Injectable()\nexport class ReorderController implements OnDestroy {\n\n public startCallback: () => void | Observable<void>;\n public movedCallback: FsListReorderMovedCallback;\n public doneCallback: FsListReorderDoneCallback;\n public moveDropCallback: FsListReorderMoveInGroupCallback;\n\n public status: boolean;\n public label: string;\n public menu: boolean;\n public multiple: boolean;\n\n private _dataController: DataController;\n private _actionsController: ActionsController;\n private _selectionController: SelectionController;\n\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _manualReorderActivated$ = new BehaviorSubject(false);\n private _reorderDisabled$ = new BehaviorSubject(false);\n private _position = new BehaviorSubject<ReorderPosition | null>(null);\n private _strategy = new BehaviorSubject<ReorderStrategy | null>(null);\n\n private _destroy$ = new Subject();\n\n constructor() {}\n\n public get enabled() {\n return this._enabled$.getValue();\n }\n\n public set enabled(value) {\n this._enabled$.next(value);\n\n this._manualReorderActivated$.next(this.enabled && this.strategy === ReorderStrategy.Manual);\n }\n\n public get strategy(): ReorderStrategy | null {\n return this._strategy.getValue();\n }\n\n public get position(): ReorderPosition | null {\n return this._position.getValue();\n }\n\n public get dataController() {\n return this._dataController;\n }\n\n public get selectionController(): SelectionController {\n return this._selectionController;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$.asObservable();\n }\n\n public get position$(): Observable<ReorderPosition> {\n return this._position.asObservable();\n }\n\n public get strategy$(): Observable<ReorderStrategy> {\n return this._strategy.asObservable();\n }\n\n public get manualReorderActivated(): boolean {\n return this._manualReorderActivated$.getValue();\n }\n\n public get reorderDisabled$(): Observable<boolean> {\n return this._reorderDisabled$.asObservable();\n }\n\n public get reorderDisabled(): boolean {\n return this._reorderDisabled$.getValue();\n }\n\n public initWithConfig(\n data: FsListReorderConfig,\n dataController: DataController,\n actionsController: ActionsController,\n selectionController: SelectionController,\n ) {\n if (!data) { return }\n\n this.menu = data.menu ?? false;\n this._setPosition(data.position ?? ReorderPosition.Left);\n\n if (!data.disabled) {\n this._setStrategy(ReorderStrategy.Always);\n }\n\n if (data.toggle) {\n this._setStrategy(ReorderStrategy.Manual);\n }\n // this.strategy = data.strategy ?? ReorderStrategy.Manual;\n this.label = data.label;\n this.multiple = data.multiple;\n this.status = data.status ?? true;\n\n this.startCallback = data.start;\n this.movedCallback = data.moved;\n this.doneCallback = data.done;\n this.moveDropCallback = data.moveDrop;\n\n this._dataController = dataController;\n this._actionsController = actionsController;\n this._selectionController = selectionController;\n\n if (this.strategy === ReorderStrategy.Always) {\n this.enableReorder();\n } else if (this.strategy === ReorderStrategy.Manual) {\n actionsController.addReorderAction(\n {\n label: this.label || 'Reorder',\n menu: this.menu,\n primary: false,\n click: () => {\n this.enableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n }\n }\n );\n\n actionsController.addReorderDoneAction({\n label: 'Done',\n primary: false,\n click: () => {\n this.disableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n }\n )\n }\n }\n\n public enableReorder() {\n if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {\n const returnedValue = this.startCallback();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = true;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = true;\n }\n\n public disableReorder() {\n if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {\n const returnedValue = this.reorderFinished();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = false;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = false;\n }\n\n /**\n * Exec end callback\n */\n public reorderFinished() {\n if (this.doneCallback) {\n return this.doneCallback(this._dataController.reorderData);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Enable reorder action and update filter actions state\n */\n public enableReorderAction() {\n this._reorderDisabled$.next(false);\n this._actionsController.updateDisabledState();\n }\n\n /**\n * Disable reorder action and update filter actions state\n */\n public disableReorderAction() {\n this._reorderDisabled$.next(true);\n this._actionsController.updateDisabledState();\n }\n\n private _setPosition(value: ReorderPosition): void {\n this._position.next(value);\n }\n\n private _setStrategy(value: ReorderStrategy): void {\n this._strategy.next(value);\n }\n\n}\n","export enum ActionType {\r\n Basic = 'basic',\r\n Raised = 'raised',\r\n Icon = 'icon',\r\n Fab = 'fab',\r\n MiniFab = 'mini-fab'\r\n}\r\n","import { ActionType } from '../enums/button-type.enum';\nimport {\n FsListRowActionFile,\n FsListRowActionLink,\n FsListRowActionLinkFn,\n} from '../interfaces';\n\n\nexport class RowAction {\n\n public icon: string;\n public menu: boolean;\n public remove: { title: string; template: string };\n public className: string;\n public type: ActionType;\n public show: Function;\n public restore: boolean;\n public rowActions: RowAction[];\n public label = '';\n public routerLink: FsListRowActionLink;\n public classArray: string[] = [];\n public isShown = true;\n public click: Function;\n\n public fileConfig: FsListRowActionFile;\n\n private _linkFn: FsListRowActionLinkFn;\n private readonly _isGroup: boolean = false;\n\n constructor(config: any = {}) {\n this._init(config);\n\n if (Array.isArray(this.rowActions)) {\n this._isGroup = true;\n }\n }\n\n public get isGroup() {\n return this._isGroup;\n }\n\n public _init(value: any) {\n this.icon = value.icon;\n this.menu = value.menu ?? true;\n this.remove = value.remove;\n this.className = value.className;\n this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : value.type ?? ActionType.Basic;\n this.show = value.show;\n this.restore = value.restore;\n this.rowActions = value.rowActions\n ?.map((action) => new RowAction(action));\n\n\n // Re-assign click function\n const clickFn = value.click;\n this.click = (row, event, index, rowActionsRef = null) => {\n return this._clickEvent(row, event, index, rowActionsRef, clickFn);\n };\n\n this._linkFn = value.link;\n\n if (value.file) {\n this.fileConfig = { ...value.file };\n\n if (this.fileConfig.select) {\n const selectFn = this.fileConfig.select;\n this.fileConfig.select = (selection, row, index) => {\n selectFn(selection, row, index);\n };\n }\n }\n\n this.label = value.label;\n\n if (this.className) {\n this.classArray = this.className.split(' ').reduce((acc, elem) => {\n acc.push(elem);\n\n return acc;\n }, []);\n }\n }\n\n public checkShowStatus(row, index) {\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(row, index);\n });\n\n const groupVisible = !this.show || this.show(row, index);\n\n this.isShown = groupVisible && this.rowActions.some((action) => action.isShown);\n } else if (this.show) {\n this.isShown = this.show(row, index);\n }\n }\n\n public updateLink(row) {\n if (!this.isShown) {\n return;\n }\n\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.updateLink(row);\n });\n } else if (this._linkFn) {\n this.routerLink = this._linkFn(row);\n\n if (this.routerLink && !this.routerLink.target) {\n this.routerLink.target = null;\n }\n }\n }\n\n private _clickEvent(row, event, index, rowActionsRef, clickFn) {\n // Stop event propagation for parent\n event.stopPropagation();\n\n // Close menu\n if (rowActionsRef) {\n rowActionsRef.closeMenu();\n }\n\n if (clickFn) {\n // Fire passed callback\n return clickFn(row, event, index);\n }\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';\nimport { FsListDragChildRowElement } from '../../interfaces/draggable-list.interface';\nimport { Row } from '../../models/row';\nimport { FsListDraggableRowDirective } from '../draggable-row/draggable-row.directive';\n\n\n@Directive({\n selector: '[fsListDraggableList]',\n})\nexport class FsListDraggableListDirective {\n // Draggable Element\n private _draggableElement: HTMLElement;\n private _draggableElementPreview: HTMLElement;\n private _multipleDraggableElementPreview: HTMLElement;\n private _draggableElementHeight: number;\n private _draggableElementIndex: number;\n private _draggableElementStartIndex: number;\n\n // Handlers\n private _dragToHandler = this.dragTo.bind(this);\n private _dragEndHandler = this.dragEnd.bind(this);\n private _windowTouchMoveHandler = () => { };\n\n private _dragInProgress = false;\n\n private _childRowElements: FsListDragChildRowElement[];\n private _dragStart$ = new Subject<void>();\n private _dragEnd$ = new Subject<void>();\n\n @Input('rows')\n private _rows: Row[];\n private _draggableChildrenDirectives: FsListDraggableRowDirective[] = [];\n private _selectedRowsDirectives: FsListDraggableRowDirective[] = [];\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _zone: NgZone,\n private _containerElement: ElementRef,\n private _reorderController: ReorderController,\n private _renderer: Renderer2,\n ) { }\n\n public get dragStart$(): Observable<void> {\n return this._dragStart$.pipe(takeUntil(this._destroy$));\n }\n\n public get dragEnd$(): Observable<void> {\n return this._dragEnd$.pipe(takeUntil(this._destroy$));\n }\n\n public get draggableItem(): Row {\n return this._rows[this._draggableElementIndex];\n }\n\n private get _isMultipleDrag(): boolean {\n return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;\n }\n\n public addDraggableDirective(dir: FsListDraggableRowDirective): void {\n this._draggableChildrenDirectives.push(dir);\n }\n\n public removeDraggableDirective(dir: FsListDraggableRowDirective): void {\n const idx = this._draggableChildrenDirectives.indexOf(dir);\n\n if (idx !== -1) {\n this._draggableChildrenDirectives.splice(idx, 1);\n }\n }\n\n /**\n * Prepare draggable elements and add events\n *\n * @param draggableElement\n */\n public dragStart(draggableElement: HTMLElement) {\n if (this._dragInProgress) {\n return;\n }\n\n if (\n this._reorderController.startCallback\n && this._reorderController.strategy === ReorderStrategy.Always\n ) {\n this._reorderController.startCallback();\n }\n\n this._dragInProgress = true;\n\n window.document.body.classList.add('reorder-in-progress');\n\n this._draggableElement = draggableElement;\n\n this._detectSelectedRows();\n this.prepareElements();\n this.initDraggableElement();\n\n this._draggableElementStartIndex = this._draggableElementIndex;\n this._draggableElement.classList.add('draggable-elem');\n\n this._zone.runOutsideAngular(() => {\n window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });\n window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });\n window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });\n });\n\n window.document.addEventListener('mouseup', this._dragEndHandler);\n window.document.addEventListener('touchend', this._dragEndHandler);\n window.document.addEventListener('touchcancel', this._dragEndHandler);\n\n this._dragStart$.next();\n }\n\n\n /**\n * Move draggable elements and swap items\n *\n * @param event\n */\n public dragTo(event) {\n this.touchFix(event);\n const elemIndex = this.lookupElementUnder(event);\n const targetRow = this._rows[elemIndex];\n\n if (this._multipleDraggableElementPreview) {\n this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;\n this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;\n }\n\n // Can not drag before first group and after last group\n const swapWithBoundaryGroupElement =\n (elemIndex === 0 || elemIndex === this._rows.length - 1)\n && targetRow.isGroup\n // TODO fix isChild & all\n && (this.draggableItem as any).isChild;\n\n\n if (!swapWithBoundaryGroupElement) {\n if (elemIndex !== null) {\n if (targetRow.readyToSwap) {\n this.swapWithIndex(elemIndex);\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.remove('fs-list-no-drop');\n }\n } else {\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.add('fs-list-no-drop');\n }\n }\n }\n\n // FIXME\n if (this._draggableElementPreview) {\n const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);\n this._draggableElementPreview.style.top = `${topOffset}px`;\n }\n }\n }\n\n /**\n * Remove events and classes after drag finish\n */\n public dragEnd() {\n this._dragInProgress = false;\n this._reorderController.dataController.finishReorder();\n\n if (this._reorderController.movedCallback\n && this._draggableElementStartIndex !== this._draggableElementIndex) {\n\n this._reorderController.movedCallback(\n this._reorderController.dataController.reorderData,\n );\n }\n\n if (this._reorderController.strategy === ReorderStrategy.Always) {\n this._zone.run(() => {\n if (this._reorderController.doneCallback) {\n const result = this._reorderController.doneCallback(\n this._reorderController.dataController.reorderData,\n );\n\n this._waitUntilIsNotDone(result);\n }\n });\n }\n\n // this._reorderController.dataController.updateOrderByRows(this._rows);\n ///\n this._containerElement.nativeElement.classList.remove('drag-hidden');\n this._draggableElement.classList.remove('draggable-elem');\n window.document.body.classList.remove('reorder-in-progress');\n this._draggableElement = null;\n\n if (this._draggableElementPreview) {\n this._draggableElementPreview.remove();\n\n this._draggableElementPreview = null;\n } else {\n this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);\n this._multipleDraggableElementPreview = null;\n }\n\n this._draggableElementHeight = null;\n this._draggableElementIndex = null;\n this._draggableElementStartIndex = null;\n this._selectedRowsDirectives = [];\n\n window.removeEventListener('touchmove', this._windowTouchMoveHandler);\n window.document.removeEventListener('mousemove', this._dragToHandler);\n window.document.removeEventListener('touchmove', this._dragToHandler);\n window.document.removeEventListener('mouseup', this._dragEndHandler);\n window.document.removeEventListener('touchend', this._dragEndHandler);\n window.document.removeEventListener('touchcancel', this._dragEndHandler);\n\n this._dragEnd$.next();\n }\n\n /**\n * looking row elements and save their dims\n */\n private prepareElements() {\n this.lookupChildElements();\n this.calcElementsDimensions();\n }\n\n /**\n * Store child rows\n */\n private lookupChildElements() {\n this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))\n .reduce((acc: any[], rowElement, index) => {\n const element: any = { target: rowElement };\n\n if (rowElement === this._draggableElement) {\n this._draggableElementIndex = index;\n element.active = true;\n }\n\n acc.push(element);\n\n return acc;\n }, []) as FsListDragChildRowElement[];\n }\n\n /**\n * Calc child rows sizes/offsets\n */\n private calcElementsDimensions() {\n this._childRowElements.forEach((el: any, index) => {\n const dims = el.target.getBoundingClientRect();\n el.top = dims.top;\n el.height = dims.height;\n el.center = dims.top + (dims.height / 2);\n el.index = index;\n });\n }\n\n /**\n * Init draggable element\n */\n private initDraggableElement() {\n const el = this._draggableElement.cloneNode(true) as HTMLElement;\n const data = this._draggableElement.getBoundingClientRect();\n\n if (!(this._isMultipleDrag)) {\n el.style.width = `${data.width}px`;\n el.style.left = `${data.left}px`;\n el.style.top = `${data.top}px`;\n el.classList.add('draggable');\n\n this._containerElement.nativeElement.insertAdjacentElement('afterbegin', el);\n\n this._draggableElementPreview = el;\n this._draggableElementHeight = data.height;\n\n this.updateDraggableDims();\n } else {\n // Create preview DIV\n this._containerElement.nativeElement.classList.add('drag-hidden');\n\n const selectedCount = this._selectedRowsDirectives?.length;\n const previewBlock = this._renderer.createElement('div');\n previewBlock.style.left = `${data.left}px`;\n previewBlock.style.top = `${data.top}px`;\n\n const text = this._renderer.createText(`${selectedCount} selected items`);\n\n this._renderer.appendChild(previewBlock, text);\n this._renderer.addClass(previewBlock, 'fs-list-preview-block');\n this._renderer.appendChild(document.body, previewBlock);\n this._multipleDraggableElementPreview = previewBlock;\n }\n\n }\n\n /**\n * Looking by stored row elements for overlapped row\n *\n * @param event\n */\n private lookupElementUnder(event) {\n const top = event.y || event.clientY;\n const bottom = event.y || event.clientY;\n let elemIndex = null;\n\n for (let i = 0; i < this._childRowElements.length; i++) {\n const el = this._childRowElements[i];\n\n if (!el.active) {\n if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex\n || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {\n elemIndex = i;\n }\n }\n }\n\n return elemIndex;\n }\n\n /**\n * Swap rows\n *\n * @param index\n */\n private swapWithIndex(index) {\n const activeIndex = this._draggableElementIndex;\n const selectedRows = this._selectedRowsDirectives\n .map((d) => d.row)\n .filter((d) => d.readyToSwap);\n\n // Swap rows in global rows stack\n this._reorderController\n .dataController\n .swapRows(\n this._rows[activeIndex],\n this._rows[index],\n selectedRows,\n this._isMultipleDrag,\n );\n\n // Swap visible rows\n if (!this._isMultipleDrag) {\n const activeRow = this._rows[activeIndex];\n this._rows[activeIndex] = this._rows[index];\n this._rows[index] = activeRow;\n\n const activeElement = this._childRowElements[activeIndex].target;\n this._childRowElements[activeIndex].active = false;\n\n this._childRowElements[activeIndex].target = this._childRowElements[index].target;\n this._childRowElements[index].target = activeElement;\n this._childRowElements[index].active = true;\n }\n\n this._draggableElementIndex = index;\n this._cdRef.detectChanges();\n }\n\n /**\n * Update cell width for draggable elem\n */\n private updateDraggableDims() {\n const draggableCells: any = Array.from(this._draggableElementPreview.querySelectorAll('td'));\n\n Array.from(\n this._draggableElementPreview.querySelectorAll('td'),\n ).forEach((elem: any, index) => {\n const dims = elem.getBoundingClientRect();\n draggableCells[index].style.width = `${dims.width}px`;\n });\n }\n\n private _waitUntilIsNotDone(doneResult: unknown): void {\n if (doneResult instanceof Observable) {\n this._reorderController.disableReorderAction();\n\n doneResult\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._reorderController.enableReorderAction();\n });\n }\n }\n\n private _detectSelectedRows(): void {\n this._draggableChildrenDirectives\n .forEach((dir: FsListDraggableRowDirective) => {\n const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);\n\n if (isRowSelected && !dir.row.isGroup) {\n this._selectedRowsDirectives.push(dir);\n }\n });\n }\n\n /**\n * Fix background when mobile\n *\n * @param e\n */\n private touchFix(e) {\n if (!('clientX' in e) && !('clientY' in e)) {\n const touches = e.touches || e.originalEvent.touches;\n if (touches && touches.length) {\n e.clientX = touches[0].clientX;\n e.clientY = touches[0].clientY;\n }\n\n e.preventDefault();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DoCheck,\n HostBinding,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Column } from '../../../../models/column.model';\n\n\n@Component({\n selector: '[fs-cell]',\n templateUrl: './cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsCellComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\n\n @HostBinding('class.fs-list-col') public isColl = true;\n\n @HostBinding('attr.role') public role = 'gridcell';\n\n @Input() public column: Column;\n @Input() public row: any; // tmp\n @Input() public rowIndex: number;\n\n public cellContext: any = {};\n public cellTemplate: TemplateRef<any>;\n\n private _destroy$ = new Subject<void>();\n\n public ngOnInit() {\n this._listenGroupOpen();\n }\n\n public ngDoCheck() {\n // TODO fixme remove or improve\n if (this.row) {\n this.cellContext.groupIndex = this.row.index;\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.rowIndex?.currentValue !== changes.rowIndex?.previousValue) {\n this.cellContext.index = this.rowIndex;\n this.cellContext.groupIndex = this.row.index;\n }\n\n if (changes.column?.currentValue !== changes.column?.previousValue) {\n this._initCellContext();\n this._initCellTemplate();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initCellContext() {\n this.cellContext.index = this.rowIndex;\n\n if (this.row) {\n if (this.row.isGroup) {\n this.cellContext.groupIndex = this.row.index;\n } else if (this.row.isChild || this.row.isGroupFooter) {\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupRow = this.row.parent.data;\n this.cellContext.group = this.row.parent.data;\n }\n\n if (this.row.isGroup) {\n this.cellContext.group = this.row.data;\n this.cellContext.groupChildren = this.row.children\n .map((child) => child.data);\n } else if (this.row.isGroupFooter) {\n this.cellContext.group = this.row.parent.data;\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupChildren = this.row.parent.children\n .map((child) => child.data);\n }\n }\n\n this.cellContext.column = this.column;\n if (this.row) {\n this.cellContext.$implicit = this.row.data;\n this.cellContext.row = this.row.data;\n this.cellContext.value = this.row.data[this.column.name];\n this.cellContext.expanded = this.row.expanded;\n }\n }\n\n private _initCellTemplate() {\n if (this.row?.isGroup) {\n this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;\n } else if (this.row?.isGroupFooter) {\n this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;\n } else {\n this.cellTemplate = this.column.cellTemplate;\n }\n }\n\n private _listenGroupOpen() {\n if (this.row && this.row.isGroup) {\n this.row.expanded$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n this.cellContext.expanded = status;\n });\n }\n }\n}\n","<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-inline-action',\n templateUrl: './inline-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowInlineActionComponent {\n\n @Input()\n public action: RowAction;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event) {\n this.clicked.emit(event);\n }\n\n public fileSelected(event): void {\n this.fileSelect.emit(event);\n }\n}\n","<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Row } from '../models/row';\n\n\n\n@Pipe({ name: 'actionLabel' })\nexport class ActionLabelPipe implements PipeTransform {\n public transform(label, row: Row) {\n if (typeof label === 'function') {\n return label(row.data);\n }\n\n return label;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, EventEmitter,\n Input, Output,\n} from '@angular/core';\n\nimport { FsMenuComponent } from '@firestitch/menu';\n\nimport { FsListRowActionFile } from '../../../../interfaces/listconfig.interface';\nimport { Row } from '../../../../models/row';\n\n\n@Component({\n selector: 'fs-list-row-menu-action',\n templateUrl: './menu-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowMenuActionComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public icon: string;\n\n @Input()\n public label: string;\n\n @Input()\n public file: FsListRowActionFile;\n\n @Output()\n public fileSelect = new EventEmitter();\n\n @Output()\n public fileError = new EventEmitter();\n\n constructor(\n private _menu: FsMenuComponent,\n ) { }\n\n public selectFile(event): void {\n this.fileSelect.emit(event);\n this.closeMenu();\n }\n\n public errorFile(event): void {\n this.fileError.emit(event);\n this.closeMenu();\n }\n\n public closeMenu(): void {\n this._menu.closeMenu();\n }\n}\n","<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n} from '@angular/core';\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\n\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowActionsComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public index: number;\n\n @Input()\n public restoreMode = false;\n\n @Input()\n public rowActions: RowAction[] = [];\n\n @Input()\n public rowRemoved: EventEmitter<any>;\n\n @Input()\n public menuRowActions: RowAction[] = [];\n\n @Input()\n public inlineRowActions: RowAction[] = [];\n\n @Input()\n public restoreAction: RowAction;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _prompt: FsPrompt,\n ) { }\n\n public actionClick(action: RowAction, row: any, event: any, menuRef?) {\n if (action.remove) {\n if (typeof action.remove === 'boolean') {\n this._removeAction(action, row.data, event, this.index);\n } else {\n this._prompt.confirm({\n title: action.remove.title,\n template: action.remove.template,\n autofocus: true,\n })\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._removeAction(action, row.data, event, this.index);\n });\n }\n } else {\n action.click(row.data, event, this.index, menuRef);\n }\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Emit that some row must be removed\n *\n * @param action\n * @param row\n * @param event\n * @param index\n */\n private _removeAction(action, row, event, index) {\n const removeObservable = action.click(row, event, index);\n\n if (removeObservable && removeObservable instanceof Observable) {\n removeObservable\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.rowRemoved.emit(row);\n });\n }\n }\n}\n","<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action \n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu \n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template \n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChildren,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../../classes/reorder-controller';\nimport { SelectionController } from '../../../classes/selection-controller';\nimport { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';\nimport { FsListRowClassOptions } from '../../../interfaces';\nimport { Column } from '../../../models/column.model';\nimport { Row } from '../../../models/row';\nimport { RowAction } from '../../../models/row-action.model';\n\n\n@Component({\n selector: '[fs-list-row]',\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowComponent implements OnInit, DoCheck, OnDestroy {\n\n @HostBinding('attr.role')\n public role = 'row';\n\n @Input() public row: Row;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public hasRowActions = false;\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public restoreMode = false;\n @Input() public rowIndex: number;\n @Input() public columns: Column[];\n @Input() public selection: SelectionController;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n\n @Input()\n @HostBinding('class.drag-row')\n public reorderEnabled: boolean;\n\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n\n @ViewChildren('td')\n public cellRefs;\n\n public readonly ReorderPosition = ReorderPosition;\n public readonly ReorderStrategy = ReorderStrategy;\n public rowActions: RowAction[] = [];\n public menuRowActions: RowAction[] = [];\n public inlineRowActions: RowAction[] = [];\n public restoreAction: RowAction;\n public selected = false;\n public indeterminateSelected: boolean | 'indeterminate' = false;\n\n private _rowDiffer: KeyValueDiffer<any, any>;\n private _eventListeners = [];\n private _destroy$ = new Subject();\n\n constructor(\n public el: ElementRef,\n private _cdRef: ChangeDetectorRef,\n private _differs: KeyValueDiffers,\n private _renderer: Renderer2,\n private _draggableList: FsListDraggableListDirective,\n ) {\n this._rowDiffer = _differs.find({}).create();\n }\n\n public get isGroupRow(): boolean {\n return this.row.isGroup;\n }\n\n public get isGroupChildRow(): boolean {\n return this.row.isGroupChild;\n }\n\n public get isGroupFooterRow(): boolean {\n return this.row.isGroupFooter;\n }\n\n public get isDragDisabled(): boolean {\n return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;\n }\n\n @HostBinding('class.multiple-selection')\n public get isMultipleSelection() {\n const multiple = this.reorderMultiple;\n\n return multiple && this.selected;\n }\n\n @HostBinding('class')\n public get rowCssClass() {\n let cls = 'fs-list-row';\n\n if (this.rowIndex % 2 !== 0) {\n cls += ' fs-list-row-odd';\n }\n if (this.rowIndex % 2 === 0) {\n cls += ' fs-list-row-even';\n }\n\n if (this.row?.isGroup) {\n cls += ' fs-list-row-group';\n } else if ((this.row as any)?.isChild) { // TODO fix isChild & all\n cls += ' fs-list-row-group-child';\n } else if (this.row?.isGroupFooter) {\n cls += ' fs-list-row-group-footer';\n } else {\n cls += ' fs-list-row-body';\n }\n\n if (this.rowClass) {\n const options: FsListRowClassOptions = {\n index: this.rowIndex,\n type: this.row.type,\n };\n\n if (this.row.isGroup) {\n options.groupIndex = this.row.index;\n } else if ((this.row as any).isChild || this.row.isGroupFooter) { // TODO fix isChild & all\n options.groupIndex = this.row.parent.index;\n }\n\n const resultClass = this.rowClass(this.row.data, options);\n\n if (typeof resultClass === 'string') {\n cls += ` ${resultClass}`;\n } else if (typeof resultClass === 'object') {\n const keys = Object.keys(resultClass);\n for (const k of keys) {\n if (resultClass[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n\n return cls;\n }\n\n public get dragCellVisible(): boolean {\n return !this.row.isGroup;\n }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount == 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount == 0;\n }\n\n public ngOnInit() {\n this.initRowEvents();\n this.initSelection();\n\n if (this.row && this.row.isGroup) {\n if (this.row && this.row.isGroup && this.groupActionsRaw) {\n this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));\n\n this.filterActionsByCategories();\n }\n } else if (this.rowActionsRaw) {\n this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));\n\n this.filterActionsByCategories();\n }\n }\n\n public ngDoCheck() {\n if (this._rowDiffer.diff(this.row)) {\n if (this.rowActions) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(this.row.data, this.rowIndex);\n action.updateLink(this.row.data);\n });\n this.filterActionsByCategories();\n }\n\n this._cdRef.markForCheck();\n }\n }\n\n public ngOnDestroy() {\n this._eventListeners.forEach((listener) => {\n listener();\n });\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select row by checkbox\n *\n * @param event\n */\n public selectRow(event: MatCheckboxChange) {\n this.selection.rowSelectionChange(this.row, event.checked);\n this._cdRef.markForCheck();\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n public dragStart(event) {\n if (this.reorderEnabled && !this.isDragDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n this._draggableList.dragStart(this.el.nativeElement);\n }\n }\n\n /**\n * Set event listeners for row\n */\n private initRowEvents() {\n for (const event in this.rowEvents) {\n if (this.rowEvents.hasOwnProperty(event)) {\n const listener = this._renderer.listen(this.el.nativeElement, event, (evt) => {\n // evt.preventDefault();\n // evt.stopPropagation();\n\n if (!this.reorderEnabled) {\n this.rowEvents[event]({\n event: evt,\n row: this.row.data,\n rowIndex: this.rowIndex,\n });\n }\n });\n\n this._eventListeners.push(listener);\n }\n }\n }\n\n /**\n * Subscribe to selection change events\n */\n private initSelection() {\n if (this.selection) {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n this.selection.selectionChange$\n .pipe(\n // // Would like to respond only when checkbox on top is changed\n // // or was clicked \"Select All\" in selection dialog\n // filter(({type}) => {\n // return type === SelectionChangeType.AllVisibleSelectionChange\n // || type === SelectionChangeType.SelectedAll;\n // }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n if (this.row?.isGroup) {\n const groupSelection = this.selection.isGroupSelected(this.row);\n\n if (groupSelection === 'indeterminate') {\n this.selected = true;\n this.indeterminateSelected = true;\n } else {\n this.selected = groupSelection;\n this.indeterminateSelected = false;\n }\n }\n\n this._cdRef.markForCheck();\n });\n }\n }\n\n private filterActionsByCategories() {\n this.menuRowActions = [];\n this.inlineRowActions = [];\n this.restoreAction = null;\n\n this.rowActions.forEach((action) => {\n\n if (!action.isShown) {\n return;\n }\n\n if (action.menu && !action.restore) {\n this.menuRowActions.push(action);\n } else if (!action.menu && !action.restore) {\n this.inlineRowActions.push(action);\n } else if (action.restore) {\n this.restoreAction = action;\n }\n });\n }\n}\n","<!-- Drag -->\n<ng-container *ngIf=\"leftDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox \n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"rightDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions\n [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td \n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { Row } from '../../models/row';\nimport { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';\n\n\n@Directive({\n selector: '[fsListDraggableRow]',\n})\nexport class FsListDraggableRowDirective implements OnInit, OnDestroy {\n\n @Input()\n public row: Row;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _reorderController: ReorderController,\n private _draggableList: FsListDraggableListDirective,\n ) { }\n\n public get elRef(): ElementRef {\n return this._el;\n }\n\n public ngOnInit(): void {\n if (this._reorderController.moveDropCallback) {\n this._listenDragEvents();\n }\n this._draggableList.addDraggableDirective(this);\n }\n\n public ngOnDestroy(): void {\n this._draggableList.removeDraggableDirective(this);\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public dragHide(): void {\n this._el.nativeElement.classList.add('drag-hidden');\n }\n\n private _listenDragEvents() {\n this._draggableList\n .dragStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._markReadyToSwapRows();\n });\n\n this._draggableList\n .dragEnd$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._unmarkRows();\n });\n }\n\n private _markReadyToSwapRows() {\n const currentEl = this.row;\n const targetEl = this._draggableList.draggableItem;\n\n this.row.readyToSwap = this._reorderController.moveDropCallback(\n {\n row1: currentEl?.data,\n row2: targetEl?.data,\n group1: currentEl?.parent?.data,\n group2: targetEl?.parent?.data,\n },\n );\n\n if (!this.row.readyToSwap) {\n this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n\n private _unmarkRows() {\n if (!this.row.readyToSwap) {\n this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\nimport { Row } from '../../models/row';\n\nimport { FsRowComponent } from './row/row.component';\n\n\n@Component({\n selector: '[fs-list-body]',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsBodyComponent {\n\n @Input() public rows: Row[];\n @Input() public columns: Column[] = [];\n @Input() public hasFooter = false;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public hasRowActions = false;\n @Input() public selection: SelectionController;\n @Input() public restoreMode = false;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n @ContentChild(FsRowComponent, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n}\n","<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy } from '@angular/core';\r\n\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n templateUrl: './customize-cols.component.html',\r\n styleUrls: ['./customize-cols.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomizeColsDialogComponent implements OnDestroy {\r\n\r\n public columns = [];\r\n public saveDisabled = false;\r\n private _changeFn;\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) data,\r\n private _dialog: MatDialogRef<any>,\r\n ) {\r\n this.columns = data.columns;\r\n this._changeFn = data.changeFn;\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public visibilityChange(event, column) {\r\n column.show = event.checked;\r\n }\r\n\r\n public save() {\r\n const data = this.columns\r\n .filter((column) => !!column.name)\r\n .map((column) => {\r\n return {\r\n name: column.name,\r\n show: column.show,\r\n };\r\n });\r\n\r\n this.saveDisabled = true;\r\n const changed = this._changeFn(data);\r\n\r\n if (changed instanceof Observable) {\r\n changed\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe({\r\n next: () => {\r\n this._dialog.close(this.columns);\r\n },\r\n error: () => {\r\n this.saveDisabled = false;\r\n },\r\n });\r\n } else {\r\n this._dialog.close(this.columns);\r\n }\r\n }\r\n\r\n public cancel() {\r\n this._dialog.close();\r\n }\r\n}\r\n","<h1 matDialogTitle>Customize Columns</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\r\n <ng-container *ngIf=\"!column.title; else titleLable\">\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n </ng-container>\r\n <ng-template #titleLable>\r\n {{ column.title }}\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"column.tooltip\">\r\n <mat-icon [matTooltip]=\"column.tooltip\">\r\n help\r\n </mat-icon>\r\n </ng-container>\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-list-footer-cell]',\r\n templateUrl: './footer-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsFooterCellComponent extends FsCellComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n KeyValueDiffers,\n Renderer2,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';\nimport { FsRowComponent } from '../../body/row/row.component';\n\n\n@Component({\n selector: '[fs-list-footer-row]',\n templateUrl: './footer-row.component.html',\n styleUrls: ['./footer-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterRowComponent extends FsRowComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n constructor(\n el: ElementRef,\n cdRef: ChangeDetectorRef,\n differs: KeyValueDiffers,\n renderer: Renderer2,\n ) {\n super(el, cdRef, differs, renderer, null);\n }\n\n}\n","<td *ngIf=\"leftDragDropEnabled\" class=\"fs-list-col drag-col\"></td>\n\n<td *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\"></td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td \n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n\n<!-- Drag -->\n<td *ngIf=\"rightDragDropEnabled\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\n\n@Component({\n selector: '[fs-list-footer]',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public columns: Column[] = [];\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n}\n","<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DoCheck,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n} from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-head-cell]',\r\n templateUrl: './head-cell.component.html',\r\n styleUrls: ['./head-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsHeadCellComponent extends FsCellComponent implements DoCheck {\r\n\r\n public cellContext: any = {};\r\n\r\n private _columnDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n private _differs: KeyValueDiffers,\r\n ) {\r\n super();\r\n this._columnDiffer = this._differs.find({}).create();\r\n }\r\n\r\n public ngDoCheck() {\r\n if (this._columnDiffer.diff(this.column)) {\r\n this._cdRef.markForCheck();\r\n }\r\n }\r\n\r\n public initCellContext() {\r\n this.cellContext.value = this.column.title;\r\n }\r\n}\r\n","<div class=\"wrap\">\n <span class=\"title\">\n <ng-template [ngIf]=\"!column.headerTemplate\">{{column.title}}</ng-template>\n <ng-template\n [ngIf]=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n </span>\n <div class=\"direction\" *ngIf=\"column.ordered\" [ngSwitch]=\"column.sortingDirection$ | async\">\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_downward\" *ngSwitchCase=\"'asc'\">arrow_downward</mat-icon>\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_upward\" *ngSwitchCase=\"'desc'\">arrow_upward</mat-icon>\n </div>\n</div>\n","import { SelectionDialog, SelectionRef } from '@firestitch/selection';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { get as _get } from 'lodash-es';\n\nimport { FsListSelectionConfig } from '../interfaces';\nimport { Row } from '../models/row';\n\nexport enum SelectionChangeType {\n AllVisibleSelectionChange = 'AllVisibleSelectionChange',\n RowSelectionChange = 'RowSelectionChange',\n SelectedAll = 'SelectedAll',\n}\n\n\nexport class SelectionController {\n\n // Options from passed config\n public actions = [];\n public selectAll = true;\n public selectionChangedFn;\n public actionSelectedFn;\n public allSelectedFn;\n\n public cancelledFn;\n\n // Store for selected visible rows\n public selectedRows = new Map();\n public selectedGroups = new Map();\n\n // Reference to selection dialog\n private _selectionDialogRef: SelectionRef = null;\n\n private _getRows: () => any[];\n private _selectionChange = new Subject<{ type: SelectionChangeType; payload: any }>();\n\n // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)\n private _selectedAllVisible = false;\n\n // Selected all rows when was clicked \"Select All\" in selection dialog\n // or count of visible records is equal to total and all visible rows was selected\n private _selectedAll = false;\n\n private _selectedRecords = 0;\n private _visibleRecordsCount = 0;\n private _totalRecordsCount = 0;\n\n private _destroy$ = new Subject();\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: FsListSelectionConfig = {},\n private _trackBy: string,\n private _selectionDialog: SelectionDialog,\n ) {\n this.actions = config.actions ? [...config.actions] : [];\n this.actionSelectedFn = config.actionSelected;\n this.allSelectedFn = config.allSelected;\n this.cancelledFn = config.cancelled;\n this.selectionChangedFn = config.selectionChanged;\n this.selectAll = config.selectAll;\n this._disabled$.next(!!config.disabled);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public get selectedAll() {\n return this._selectedAll;\n }\n\n public get selectionChange$() {\n return this._selectionChange.pipe(takeUntil(this._destroy$));\n }\n\n public setRowsCallback(data: () => any[]) {\n this._getRows = data;\n }\n\n /**\n * Trigger when row was selected\n *\n * @param row\n * @param checked\n */\n public rowSelectionChange(row: Row, checked: boolean) {\n if (row) {\n if (checked) {\n this._selectRow(row);\n this.openDialog();\n } else {\n if (this._selectedAll) {\n this._selectedAll = false;\n }\n\n this._deselectRow(row);\n }\n }\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n\n /**\n * Do check or uncheck of visible rows\n *\n * @param checked\n */\n public selectAllVisibleRows(checked) {\n this.openDialog();\n\n this._selectedAllVisible = checked;\n this._selectedRecords = 0;\n\n const rows = this._getRows();\n\n if (checked) {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, row.children.length);\n } else {\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n });\n } else {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, 0);\n } else {\n this.selectedRows.delete(identifier);\n }\n });\n\n this._selectedAll = false;\n this._selectedRecords = 0;\n }\n\n // Fire an event that all visible selection was changed\n this._visibleRowsSelectionChanged();\n this._updateSelectionRefSelected();\n }\n\n public isRowSelected(rowData) {\n return this.selectedRows.has(this._rowIdentifier(rowData))\n || this.selectedGroups.has(this._rowIdentifier(rowData))\n || this.selectedAll;\n }\n\n public isGroupSelected(row): boolean | 'indeterminate' {\n const identifier = this._rowIdentifier(row.data);\n\n if (\n this.selectedGroups.has(identifier)\n && row.children?.length > this.selectedGroups.get(identifier)\n ) {\n return 'indeterminate';\n }\n\n return this.selectedGroups.has(identifier) || this.selectedAll;\n\n }\n\n /**\n * Open selection dialog and create reference\n */\n public openDialog() {\n if (!this._selectionDialogRef) {\n this._selectionDialogRef = this._selectionDialog.open({\n selectAll: this.selectAll,\n allCount: this._totalRecordsCount,\n actions: [...this.actions],\n // selectAll: this.sele\n });\n\n this._subscribeToSelection();\n }\n }\n\n /**\n * Update count of visible elements\n *\n * @param count\n */\n public updateVisibleRecordsCount(count: number) {\n this._visibleRecordsCount = count;\n }\n\n /**\n * Update count of total available elemenets\n *\n * @param count\n */\n public updateTotalRecordsCount(count: number) {\n this._totalRecordsCount = count;\n\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateAllCount(this._totalRecordsCount);\n }\n }\n\n public pageChanged(infinityScrollEnabled) {\n if (this._selectedAll) {\n if (!infinityScrollEnabled) {\n this._resetSelection();\n }\n } else {\n this._selectedRecords = 0;\n this._getRows()\n .map((row) => row.data)\n .forEach((rowData) => {\n const identified = this._rowIdentifier(rowData);\n\n if (this.selectedRows.has(identified)) {\n this._selectedRecords++;\n }\n });\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n }\n\n public enableSelection() {\n this._disabled$.next(false);\n }\n\n public disableSelection() {\n this._disabled$.next(true);\n }\n\n /**\n * Method will be called from List for remove row if it was selected\n *\n * BUT methods for update visible and etc. will be called a bit later\n *\n * @param row\n */\n public removeRow(row) {\n this.selectedRows.delete(this._rowIdentifier(row));\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n }\n\n /**\n * Intersection of selected and passed rows to remove rows that we dont need more\n *\n * @param rows\n */\n public selectedRowsIntersection(rows) {\n const rowsIndentifiers = rows.map((row) => this._rowIdentifier(row));\n\n this.selectedRows.forEach((selectedRow, identifier) => {\n if (rowsIndentifiers.indexOf(identifier) === -1) {\n this.removeRow(selectedRow);\n }\n });\n }\n\n public updateConfig({\n actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll,\n }: FsListSelectionConfig) {\n this.actions = actions ? [...actions] : this.actions;\n this.actionSelectedFn = actionSelected ?? this.actionSelectedFn;\n this.allSelectedFn = allSelected ?? this.allSelectedFn;\n this.cancelledFn = cancelled ?? this.cancelledFn;\n this.selectionChangedFn = selectionChanged ?? this.selectionChangedFn;\n this.selectAll = selectAll ?? this.selectAll;\n }\n\n // Reset actions to default set\n public resetActions() {\n this._selectionDialogRef?.resetActions();\n }\n\n public closeSelectionDialog() {\n this._selectionDialogRef?.close();\n }\n\n public destroy() {\n this._resetSelection();\n\n this.actions = null;\n this.actionSelectedFn = null;\n this.allSelectedFn = null;\n this.cancelledFn = null;\n\n this.closeSelectionDialog();\n this._selectionDialogRef = null;\n\n this._destroy$.next();\n this._destroy$.complete();\n\n this._selectionChange.complete();\n }\n\n /**\n * Subscribe to selectionRef events\n */\n private _subscribeToSelection() {\n this._selectionDialogRef.actionSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onActionActions(data);\n });\n\n this._selectionDialogRef.cancelled$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => this._onCancelActions());\n\n this._selectionDialogRef.allSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onSelectAllActions(data);\n });\n }\n\n /**\n * If some action was clicked on selection ref dialog\n *\n * @param data\n */\n private _onActionActions(data) {\n if (!this.actionSelectedFn) {\n return;\n }\n\n // Execute callback\n const result = this.actionSelectedFn({\n selected: Array.from(this.selectedRows.values()).map((row) => {\n return { ...row };\n }),\n ...data,\n });\n\n // If result is observable\n if (result instanceof Observable) {\n\n // Subscribe and whait why it resolved\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: () => {\n\n // Close dialog\n this.closeSelectionDialog();\n\n // Uncheck all visible rows\n this.selectAllVisibleRows(false);\n },\n error: () => { },\n });\n }\n }\n\n /**\n * If cancel was clicked on selection ref dialog\n */\n private _onCancelActions() {\n this.selectAllVisibleRows(false);\n\n if (this.cancelledFn) {\n this.cancelledFn();\n }\n\n this._selectionDialogRef = null;\n }\n\n /**\n * If \"Select All\" action was clicked on selection ref dialog\n *\n * @param flag\n */\n private _onSelectAllActions(flag) {\n this._selectedAll = flag;\n\n this.selectAllVisibleRows(flag);\n\n this._selectionDialogRef.updateSelected(this._totalRecordsCount);\n\n this._selectionChangeEvent(SelectionChangeType.SelectedAll, this._selectedAll);\n this._updateSelectionRefSelectedAll();\n\n if (!this.allSelectedFn) {\n return;\n }\n\n this.allSelectedFn(flag);\n }\n\n private _selectionChangedActions() {\n // Remove actions if no rows selected\n // otherwise it will \"blink\" when user select any action\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.updateActions([]);\n\n return;\n }\n\n if (this.selectionChangedFn) {\n const result = this.selectionChangedFn(\n Array.from(this.selectedRows.values()),\n this.selectedAll,\n this._selectionDialogRef,\n );\n\n if (result) {\n if (result instanceof Observable) {\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (actions) => {\n this._selectionDialogRef.updateActions(actions);\n },\n });\n } else if (Array.isArray(result)) {\n this._selectionDialogRef.updateActions(result);\n }\n }\n }\n }\n\n /**\n * Update in Dialog Ref how much rows was selected\n */\n private _updateSelectionRefSelected() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelected(this.selectedRows.size);\n\n // S-T1268\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.close();\n }\n\n this._selectionChangedActions();\n }\n }\n\n /**\n * Update in Dialog Ref selected all status\n *\n * Ex.: Was clicked \"Select All\" in Dialog and after that some checkbox was unchecked\n * Dialog Ref must know about it\n *\n */\n private _updateSelectionRefSelectedAll() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelectedAllStatus(this._selectedAll);\n }\n }\n\n /**\n * Check if all visible rows was checked and send event to main header checkbox\n */\n private _updateSelectedVisibleStatus() {\n this._selectedAllVisible = this._selectedRecords !== 0 && this._selectedRecords === this._visibleRecordsCount;\n\n this._selectionChangeEvent(\n SelectionChangeType.RowSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * If select all checkbox in header was changed\n */\n private _visibleRowsSelectionChanged() {\n this._selectionChangeEvent(\n SelectionChangeType.AllVisibleSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * Method constructor for events\n *\n * @param type\n * @param payload\n */\n private _selectionChangeEvent(type: SelectionChangeType, payload) {\n this._selectionChange.next({\n type,\n payload,\n });\n }\n\n /**\n * Get row identified by trackBy path\n *\n * @param row\n */\n private _rowIdentifier(row) {\n const identifier = _get(row, this._trackBy, undefined);\n\n if (identifier === undefined) {\n console.warn('Selection can not recognize track by field for row. ' +\n 'Please check if you had configured trackBy function.');\n }\n\n return identifier;\n }\n\n private _selectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n row.children.forEach((childRow) => {\n this._selectRow(childRow);\n });\n } else {\n if (row.isChild) {\n this._selectChildRow(row);\n }\n\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n }\n\n private _deselectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this.selectedGroups.delete(identifier);\n\n row.children.forEach((childRow) => {\n this._deselectRow(childRow);\n });\n } else {\n if (row.isChild && this.selectedRows.has(identifier)) {\n this._deselectChildRow(row);\n }\n\n this.selectedRows.delete(identifier);\n this._selectedRecords--;\n }\n }\n\n private _selectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber + 1);\n }\n\n private _deselectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n if (selectedChildrenNumber > 1) {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber - 1);\n } else {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, 0);\n }\n }\n\n private _setNumberOfSelectedChildrenInGroup(identifier: string, n: number) {\n if (n === 0) {\n this.selectedGroups.delete(identifier);\n\n return;\n }\n\n this.selectedGroups.set(identifier, n);\n }\n\n /**\n * Reset selection\n */\n private _resetSelection() {\n this._selectedAll = false;\n this._selectedAllVisible = false;\n this._visibleRecordsCount = 0;\n this._selectedRecords = 0;\n this.selectedRows.clear();\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n this._visibleRowsSelectionChanged();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../classes/reorder-controller';\nimport { SelectionChangeType, SelectionController } from '../../classes/selection-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { Column } from '../../models/column.model';\n\n\n@Component({\n selector: '[fs-list-head]',\n templateUrl: './head.component.html',\n styleUrls: ['./head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHeadComponent implements OnInit, OnDestroy {\n\n @Input() public sorting: SortingController;\n @Input() public columns: Column[];\n @Input() public hasRowActions: boolean;\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n public selectedAll = false;\n public readonly ReorderStrategyEnum = ReorderStrategy;\n\n private _destroy$ = new Subject();\n\n constructor(private _cdRef: ChangeDetectorRef) { }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initSorting();\n this._initSelection();\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select All Visible Rows\n *\n * @param event\n */\n public selectAll(event: MatCheckboxChange) {\n this.selection.selectAllVisibleRows(event.checked);\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Subscribe to sorting change\n */\n private _initSorting() {\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.detectChanges();\n });\n }\n\n /**\n * Subscribe to selection change\n */\n private _initSelection() {\n if (this.selection) {\n this.selection.selectionChange$\n .pipe(\n filter(\n ({ type }) => (\n type === SelectionChangeType.AllVisibleSelectionChange\n || type === SelectionChangeType.SelectedAll\n || type === SelectionChangeType.RowSelectionChange\n ),\n ),\n takeUntil(this._destroy$),\n )\n .subscribe(({ type, payload: status }) => {\n this.selectedAll = status;\n\n this._cdRef.markForCheck();\n });\n }\n }\n}\n","<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n","import { isString } from 'lodash-es';\n\nexport class StyleConfig {\n public colspan;\n public align: string; // Can't be used in tempaltes!\n public className: string | string[] = []; // Can't be used in tempaltes!\n\n public classesArray = []; // Can be used in tempaltes\n public classesString = '';\n\n constructor(config = {}) {\n this._init(config);\n }\n\n /**\n * Create static array of styles for using in templates\n */\n public updateClasesArray() {\n this.classesArray = [].concat(this.className, this.align);\n this.classesString = [].concat(this.className, this.align).join(' ');\n }\n\n /**\n * Prioritized merge for align options\n * @param prior1\n * @param prior2\n */\n public mergeAlignByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = this.align;\n\n if (targetValue === void 0) {\n if (prior1 && prior1.align !== void 0) {\n targetValue = prior1.align;\n } else if (prior2 && prior2.align !== void 0) {\n targetValue = prior2.align;\n } else {\n targetValue = 'left';\n }\n }\n\n this.align = targetValue;\n }\n\n /**\n * Prioritized merge for class options\n * @param prior1\n * @param prior2\n */\n public mergeClassByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = [];\n\n if (Array.isArray(this.className)) {\n targetValue = targetValue.concat(this.className);\n } else if (isString(this.className)) {\n targetValue.push(this.className);\n }\n\n if (prior1 && prior1.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior1.className);\n } else if (prior2 && prior2.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior2.className);\n }\n\n this.className = targetValue;\n }\n\n private _init(config) {\n this.colspan = config.colspan;\n this.align = config.align;\n this.className = config.className;\n }\n\n /**\n * Merge params into array\n * @param to\n * @param from\n */\n private mergeAnythingIntoArray(to: string[], from: string | string[]) {\n if (isString(from)) {\n to.push(from as string);\n } else if (Array.isArray(from)) {\n to.push(...from)\n }\n }\n}\n","import { QueryList, TemplateRef } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { isBoolean, isObject } from 'lodash-es';\n\nimport { FsListGroupExpandTriggerDirective } from '../directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListColumnConfig } from '../interfaces/column-config.interface';\n\nimport { ColumnAttributes } from './column-attributes';\nimport { StyleConfig } from './styleConfig.model';\n\nexport enum SortingDirection {\n asc = 'asc',\n desc = 'desc'\n}\n\nconst ALLOWED_DEFAULTS = [\n 'title',\n 'sortable',\n 'align',\n 'class',\n];\n\nexport class Column {\n\n public headerTemplate: TemplateRef<any>;\n public groupHeaderTemplate: TemplateRef<any>;\n public groupFooterTemplate: TemplateRef<any>;\n public cellTemplate: TemplateRef<any>;\n public footerTemplate: TemplateRef<any>;\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n public headerConfigs: StyleConfig = new StyleConfig();\n\n public groupHeaderConfigs: StyleConfig = new StyleConfig();\n public groupFooterConfigs: StyleConfig = new StyleConfig();\n\n public cellConfigs: StyleConfig = new StyleConfig();\n\n public footerConfigs: StyleConfig = new StyleConfig();\n\n public colStyles: StyleConfig;\n\n public headerColspanned = false;\n public groupHeaderColspanned = false;\n public groupFooterColspanned = false;\n public cellColspanned = false;\n public footerColspanned = false;\n\n private _attributes: ColumnAttributes;\n\n private _ordered = false;\n\n constructor(colConfig: FsListColumnConfig, colDefaults: any = false) {\n this._parseConfig(colConfig);\n\n this.colStyles = new StyleConfig({\n className: this._attributes.className,\n align: this._attributes.align,\n });\n\n this.mergeWithColumnDefaults(colDefaults);\n }\n\n public set title(value: string) {\n this._attributes.title = value;\n }\n\n public get title(): string {\n return this._attributes.title;\n }\n\n public get name(): string {\n return this._attributes.name;\n }\n\n public get customize(): boolean {\n return this._attributes.customize;\n }\n\n public get width(): string {\n return this._attributes.width;\n }\n\n public set sortable(value: boolean) {\n this._attributes.sortable = value;\n }\n\n public get sortable(): boolean {\n return this._attributes.sortable;\n }\n\n public get sortableDefault(): boolean {\n return this._attributes.sortableDefault;\n }\n\n public set sortingDirection(value: 'asc' | 'desc') {\n this._attributes.direction = value;\n }\n\n public get sortingDirection(): 'asc' | 'desc' {\n return this._attributes.direction;\n }\n\n public get sortingDirection$(): Observable<'asc' | 'desc'> {\n return this._attributes.direction$;\n }\n\n public get visible(): boolean {\n return this._attributes.visible;\n }\n\n public get visible$(): Observable<boolean> {\n return this._attributes.visible$;\n }\n\n public get direction() {\n return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';\n }\n\n public get fullNameDirection() {\n return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';\n }\n\n public get ordered() {\n return this._ordered;\n }\n\n public set ordered(value) {\n this._ordered = value;\n\n if (value && !this.sortingDirection) {\n this.sortingDirection = SortingDirection.asc;\n }\n }\n\n /**\n * Merge with defaults with existing config\n *\n * @param defaults\n */\n public mergeWithColumnDefaults(defaults) {\n if (!isObject(defaults)) {\n defaults = {};\n }\n\n ALLOWED_DEFAULTS.forEach((key) => {\n switch (key) {\n case 'title': {\n this.title = this.title || defaults.title;\n } break;\n\n case 'sortable': {\n if (isBoolean(defaults.sortable)) {\n if (this.sortable === void 0) {\n this.sortable = defaults.sortable;\n }\n }\n } break;\n\n case 'class': {\n this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);\n } break;\n\n case 'align': {\n this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);\n } break;\n }\n });\n\n this.headerConfigs.updateClasesArray();\n this.groupHeaderConfigs.updateClasesArray();\n this.groupFooterConfigs.updateClasesArray();\n this.cellConfigs.updateClasesArray();\n this.footerConfigs.updateClasesArray();\n }\n\n /**\n * Change sorting direction\n */\n public changeDirection() {\n this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;\n }\n\n public updateVisibility(value: boolean) {\n this._attributes.visible = value;\n }\n\n private _parseConfig(config: FsListColumnConfig) {\n this._attributes = config.attributes;\n\n this.headerTemplate = config.headerTemplate;\n this.groupHeaderTemplate = config.groupHeaderTemplate;\n this.groupFooterTemplate = config.groupFooterTemplate;\n this.cellTemplate = config.cellTemplate;\n this.footerTemplate = config.footerTemplate;\n this.headerConfigs = new StyleConfig(config.headerConfigs);\n this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);\n this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);\n this.cellConfigs = new StyleConfig(config.cellConfigs);\n this.footerConfigs = new StyleConfig(config.footerConfigs);\n this.expandTrigger = config.expandTrigger;\n }\n}\n","export enum PageChangeType {\r\n Default = 0,\r\n LimitChanged = 1\r\n}\r\n","export enum FsListState {\r\n Idle,\r\n Load,\r\n Reload,\r\n Filter,\r\n Sort,\r\n PageChange,\r\n LoadMore,\r\n}\r\n","import { isNumber } from 'lodash-es';\nimport { BehaviorSubject, merge, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil, tap } from 'rxjs/operators';\n\nimport { Column } from '../models/column.model';\nimport {\n FsListColumnChangeFn,\n FsListColumnConfig,\n FsListColumnDisabledFn,\n FsListColumnLoadFn,\n FsListColumnTitleFn,\n FsListColumnTooltipFn,\n} from '../interfaces/listconfig.interface';\n\n\nexport class ColumnsController {\n\n private _visibleColumns$ = new BehaviorSubject<Column[]>([]);\n private _visibleColumnsShared$ = this._visibleColumns$.pipe();\n private _theadClass = '';\n private _loadFn: FsListColumnLoadFn;\n private _changeFn: FsListColumnChangeFn;\n private _customizeFieldTitleFn: FsListColumnTitleFn;\n private _customizeFieldDisabledFn: FsListColumnDisabledFn;\n private _columnTooltipFn: FsListColumnTooltipFn;\n\n private _isConfigured = false;\n private _loadFnConfigured = false;\n private _changeFnConfigured = false;\n private _columnsFetched = false;\n private _hasHeader = false;\n private _hasFooter = false;\n private _columns: Column[] = [];\n private _defaultConfigs;\n\n private _columnsUpdated$ = new Subject<void>();\n private _destroy$ = new Subject<void>();\n\n constructor() {}\n\n public get columns() {\n return this._columns.slice();\n }\n\n public get visibleColumns(): Column[] {\n return this._visibleColumns$.getValue();\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this._visibleColumnsShared$;\n }\n\n public get columnsForDialog() {\n const hasCustomTitle = !!this._customizeFieldTitleFn;\n const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;\n const hasCustomTooltip = !!this._columnTooltipFn;\n\n return this._columns\n .filter((column) => column.customize && !!column.name)\n .map((column) => {\n const title = hasCustomTitle\n ? this._customizeFieldTitleFn(column.name, column.title)\n : column.name;\n\n const disabled = hasCustomDisabledStatus\n ? this._customizeFieldDisabledFn(column.name)\n : false;\n\n const tooltip = hasCustomTooltip\n ? this._columnTooltipFn(column.name, column.visible, disabled)\n : void 0;\n\n return {\n template: column.headerTemplate,\n name: column.name,\n show: column.visible,\n title: title,\n disabled: disabled,\n tooltip: tooltip,\n }\n });\n }\n\n public get columnsFetched() {\n return this._columnsFetched;\n }\n\n public get hasHeader() {\n return this._hasHeader;\n }\n\n public get hasFooter() {\n return this._hasFooter;\n }\n\n public get theadClass() {\n return this._theadClass;\n }\n\n public get configured() {\n return this._isConfigured;\n }\n\n public get loadFnConfigured() {\n return this._loadFnConfigured;\n }\n\n public get changeFnConfigured() {\n return this._changeFnConfigured;\n }\n\n public get changeFn() {\n return this._changeFn;\n }\n\n public get visibleColumnsNames() {\n return this.visibleColumns\n .map((column) => column.name)\n .filter((name) => !!name);\n }\n\n public setDefaults(defaults) {\n this._defaultConfigs = defaults;\n }\n\n /**\n * Set data from list config\n * @param config\n */\n public initConfig(config: FsListColumnConfig) {\n if (config) {\n if (config.load) {\n this._loadFn = config.load;\n this._loadFnConfigured = true;\n }\n\n if (config.change) {\n this._changeFn = config.change;\n this._changeFnConfigured = true;\n }\n\n if (config.title) {\n this._customizeFieldTitleFn = config.title;\n }\n\n if (config.disabled) {\n this._customizeFieldDisabledFn = config.disabled;\n }\n\n if (config.tooltip) {\n this._columnTooltipFn = config.tooltip;\n }\n\n this._isConfigured = true;\n }\n }\n\n /**\n * Base initialization for columns\n * @param templates\n */\n public initializeColumns(templates) {\n this._columns = [];\n\n templates.forEach((column) => {\n const col = new Column(column, this._defaultConfigs);\n\n\n if (col.headerTemplate || col.title) {\n this._hasHeader = true;\n }\n if (col.footerTemplate) {\n this._hasFooter = true;\n }\n\n this._columns.push(col);\n });\n\n this._theadClass = this.hasHeader ? 'has-header' : '';\n\n this._updateColspans('headerConfigs', 'headerColspanned');\n this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');\n this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');\n this._updateColspans('cellConfigs', 'cellColspanned');\n this._updateColspans('footerConfigs', 'footerColspanned');\n\n this.updateVisibleColumns();\n this._listenColumnVisibilityUpdates();\n }\n\n /**\n * Load visiblity config for columns from remote\n */\n public loadRemoteColumnConfigs() {\n return this._loadFn()\n .pipe(\n takeUntil(this._destroy$),\n tap((columnConfigs) => {\n this._columnsFetched = true;\n this.updateVisibilityForCols(columnConfigs);\n })\n )\n }\n\n /**\n * Set visible columns based on current columns show status\n */\n public updateVisibleColumns() {\n this._visibleColumns$.next(\n this._columns.filter((column) => column.visible) || []\n );\n }\n\n /**\n * Update visibility based on passed config\n * @param columnsConfig\n */\n public updateVisibilityForCols(columnsConfig) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateVisibility(columnConfig.show);\n }\n });\n\n this.updateVisibleColumns();\n }\n\n public destroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._columnsUpdated$.complete();\n\n this._columns = void 0;\n this._visibleColumns$ = void 0;\n this._defaultConfigs = void 0;\n\n this._loadFn = void 0;\n this._changeFn = void 0;\n }\n\n private _listenColumnVisibilityUpdates() {\n this._columnsUpdated$.next();\n\n const columnsVisibility = this._columns.map((column) => {\n return column.visible$.pipe(skip(1))\n });\n\n merge(...columnsVisibility)\n .pipe(\n takeUntil(this._columnsUpdated$),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateVisibleColumns();\n })\n }\n\n private _updateColspans(config, updateFlag) {\n this._columns.forEach((col, index) => {\n\n if (col[config].colspan !== void 0) {\n const spanTo = index + +col[config].colspan;\n\n if (!isNumber(spanTo)) {\n return;\n }\n this._columns[index][updateFlag] = false;\n\n for (let i = index + 1; i < spanTo; i++) {\n if (this._columns[i]) {\n this._columns[i][updateFlag] = true;\n }\n }\n }\n })\n }\n\n}\n","export enum RowType {\n Simple = 'simple',\n Group = 'group',\n GroupFooter = 'groupFooter',\n GroupChild = 'groupChild',\n}\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\nexport abstract class BaseRow {\r\n\r\n public index: number;\r\n public readyToSwap = true;\r\n\r\n protected readonly _rowType: RowType;\r\n\r\n private readonly _data: any = {};\r\n\r\n constructor(\r\n data: any = {},\r\n rowType = RowType.Simple,\r\n ) {\r\n this._data = data;\r\n this._rowType = rowType;\r\n }\r\n\r\n public get data() {\r\n return this._data;\r\n }\r\n\r\n public get type() {\r\n return this._rowType;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: null,\r\n }\r\n }\r\n\r\n public abstract destroy();\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\nimport { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { ChildRow } from './child-row';\nimport { GroupFooterRow } from './group-footer-row';\n\nexport class GroupRow extends BaseRow {\n\n public children: (ChildRow | GroupFooterRow)[] = [];\n\n private readonly _expanded = new BehaviorSubject<boolean>(false);\n\n constructor(\n data: any = {},\n initialExpand = false,\n ) {\n super(data, RowType.Group);\n\n if (initialExpand) {\n this._expanded.next(initialExpand);\n }\n }\n\n public get childrenData() {\n return this.children\n .map((child) => child.data);\n }\n\n public get isGroup(): boolean {\n return true;\n }\n\n public get expanded() {\n return this._expanded.getValue();\n }\n\n public get expanded$() {\n return this._expanded.asObservable();\n }\n\n public updateChildrenIndexes() {\n this.children.forEach((row, index) => {\n row.index = index;\n });\n }\n\n public updateChildrenVisibility() {\n this.children.forEach((row) => {\n row.visible = this.expanded;\n })\n }\n\n public toggleRowExpandStatus() {\n this._expanded.next(!this.expanded);\n\n this.updateChildrenVisibility();\n }\n\n public destroy() {\n this.children.forEach((child) => child.destroy());\n this._expanded.complete();\n }\n}\n","import { BaseRow } from './base-row';\r\nimport { RowType } from '../../enums/row-type.enum';\r\nimport { GroupRow } from './group-row';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\n\r\nexport class ChildRow extends BaseRow {\r\n\r\n public visible = true;\r\n private readonly _parent: GroupRow;\r\n\r\n constructor(\r\n data: any = {},\r\n parent: GroupRow = null,\r\n ) {\r\n super(data, RowType.GroupChild);\r\n\r\n this._parent = parent;\r\n\r\n if (this.parent) {\r\n this.visible = this._parent.expanded;\r\n this.index = this.parent.children.length;\r\n }\r\n }\r\n\r\n public get parent(): GroupRow {\r\n return this._parent;\r\n }\r\n\r\n public get isChild(): boolean {\r\n return true;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: this.parent.getReorderData(),\r\n }\r\n }\r\n\r\n public destroy() {}\r\n}\r\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { BaseRow } from './base-row';\r\n\r\nexport class SimpleRow extends BaseRow {\r\n\r\n constructor(\r\n data: any = {},\r\n ) {\r\n super(data, RowType.Simple);\r\n }\r\n\r\n\r\n public destroy(): void {\r\n }\r\n}\r\n","import { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { GroupRow } from './group-row';\n\n\nexport class GroupFooterRow extends BaseRow {\n\n public visible = true;\n private readonly _parent: GroupRow;\n\n constructor(\n data: any = {},\n parent: GroupRow = null,\n ) {\n super(data, RowType.GroupFooter);\n\n this._parent = parent;\n\n if (this.parent) {\n this.visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n public get parent(): GroupRow {\n return this._parent;\n }\n\n public get isGroupFooter(): boolean {\n return true;\n }\n\n public destroy() {}\n}\n","import { RowType } from '../enums/row-type.enum';\nimport { ChildRow } from './row/child-row';\nimport { GroupRow } from './row/group-row';\nimport { SimpleRow } from './row/simple-row';\nimport { FsListReorderData } from '../interfaces';\nimport { GroupFooterRow } from './row/group-footer-row';\n\nexport class Row {\n\n private _row: (SimpleRow | ChildRow | GroupRow);\n\n constructor(\n data: any = {},\n rowType: RowType = RowType.Simple,\n { parent, initialExpand }: { parent?: GroupRow, initialExpand?: boolean } = {},\n ) {\n switch (rowType) {\n case RowType.Simple: {\n this._row = new SimpleRow(data);\n } break;\n\n case RowType.Group: {\n this._row = new GroupRow(data, initialExpand);\n } break;\n\n case RowType.GroupChild: {\n this._row = new ChildRow(data, parent);\n } break;\n }\n }\n\n public get index(): number {\n return this._row.index;\n }\n\n public set index(value: number) {\n this._row.index = value;\n }\n\n public get readyToSwap(): boolean {\n return this._row.readyToSwap;\n }\n\n public get visible(): boolean {\n return (this._row as ChildRow).visible;\n }\n\n public set readyToSwap(value: boolean) {\n this._row.readyToSwap = value;\n }\n\n public get data(): any {\n return this._row.data;\n }\n\n public get type(): RowType {\n return this._row.type;\n }\n\n public get isGroup(): boolean {\n return this._row instanceof GroupRow;\n }\n\n public get isGroupChild(): boolean {\n return this._row instanceof ChildRow;\n }\n\n public get isGroupFooter(): boolean {\n return this._row instanceof GroupFooterRow;\n }\n\n public get parent(): GroupRow {\n return (this._row as ChildRow).parent;\n }\n\n public get children(): (ChildRow | GroupFooterRow)[] {\n return (this._row as GroupRow).children;\n }\n\n public get expanded() {\n return (this._row as GroupRow).expanded;\n }\n\n public get expanded$() {\n return (this._row as GroupRow).expanded$;\n }\n\n public updateChildrenIndexes() {\n (this._row as GroupRow).updateChildrenIndexes();\n }\n\n public toggleRowExpandStatus() {\n (this._row as GroupRow).toggleRowExpandStatus();\n }\n\n public getReorderData(): FsListReorderData {\n return this._row.getReorderData();\n }\n\n public destroy() {\n this._row.destroy();\n }\n}\n","import { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { isFunction, isObject } from 'lodash-es';\n\nimport { FsListState } from '../enums/state.enum';\nimport { RowType } from '../enums/row-type.enum';\nimport {\n FsListAbstractRow,\n FsListGroupConfig,\n FsListTrackByTargetRowFn\n} from '../interfaces/listconfig.interface';\nimport { GroupRow } from '../models/row/group-row';\nimport { ChildRow } from '../models/row/child-row';\nimport { Row } from '../models/row';\nimport { GroupFooterRow } from '../models/row/group-footer-row';\n\n\nexport class DataController {\n\n private readonly _visibleRows$ = new BehaviorSubject<Row[]>([]);\n private readonly _rowsRemoved$ = new Subject<Row[]>();\n private readonly _remoteRowsChange$ = new Subject<void>();\n\n private _store = new Map();\n private _rowsStack: Row[] = [];\n private _operation: FsListState;\n\n private _groupByFn: (row) => any[];\n private _footerRowFn: (\n row: { [key: string]: any },\n group: {\n [key: string]: any,\n children: {\n [key: string]: any\n }[],\n }\n ) => boolean;\n private _compareByFn: (group) => any;\n private _initialExpand = true;\n private _groupEnabled = false;\n\n private _infinityScrollEnabled: boolean;\n private _loadMoreEnabled: boolean;\n\n private _hasData = false;\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor() {}\n\n get visibleRows$() {\n return this._visibleRows$;\n }\n\n get visibleRows() {\n return this._visibleRows$.getValue();\n }\n\n get visibleRowsData() {\n return this.visibleRows.map((row) => row.data);\n }\n\n get rowsStack() {\n return this._rowsStack.slice();\n }\n\n get groupEnabled() {\n return this._groupEnabled;\n }\n\n set groupEnabled(value: boolean) {\n this._groupEnabled = value;\n }\n\n get remoteRowsChange$() {\n return this._remoteRowsChange$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get rowsRemoved$() {\n return this._rowsRemoved$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get hasData() {\n return this._hasData;\n }\n\n get operation() {\n return this._operation;\n }\n\n set visibleRows(value: any[]) {\n this._visibleRows$.next(value);\n this._hasData = this.visibleRows.length > 0;\n }\n\n get visibleRowsCount() {\n return this.visibleRows.length;\n }\n\n get hasGroups() {\n return this._compareByFn && this._groupByFn;\n }\n\n get reorderData() {\n return this._rowsStack\n .map((row) => row.getReorderData());\n }\n\n public setGroupConfig(group: FsListGroupConfig) {\n if (group) {\n this._groupByFn = group.groupBy;\n this._compareByFn = group.compareBy;\n this._footerRowFn = group.footer || (() => false);\n this._initialExpand = group.initialExpand ?? true;\n\n // group mode enabled by default\n this._groupEnabled = (group.enabled !== void 0)\n ? group.enabled\n : true;\n }\n }\n\n public setAdditionalConfigs(configs: { scrollable: boolean, loadMoreEnabled: boolean }) {\n this._infinityScrollEnabled = configs.scrollable;\n this._loadMoreEnabled = configs.loadMoreEnabled;\n }\n\n /**\n * Rows what was received from fetch function\n * @param rows\n */\n public setRowsFromResponse(rows: any[]) {\n if (this._infinityScrollEnabled) {\n switch (this._operation) {\n case FsListState.Filter:\n case FsListState.Reload:\n case FsListState.Sort: {\n this._updateRowsStack(rows);\n } break;\n\n default: {\n this._extendRowsStack(rows);\n }\n }\n\n this._remoteRowsChange$.next();\n } else {\n if (\n this._operation === FsListState.LoadMore ||\n (this._operation === FsListState.PageChange && this._loadMoreEnabled)\n ) {\n this._extendRowsStack(rows);\n } else {\n this._updateRowsStack(rows);\n }\n }\n\n this._operation = FsListState.Idle;\n\n this._updateVisibleRows();\n }\n\n /**\n * Set current operation for list data flow\n * @param value\n */\n public setOperation(value: FsListState) {\n this._operation = value;\n }\n\n /**\n * Remove rows from visible\n */\n public clearRows() {\n this.visibleRows = [];\n }\n\n /**\n * Replace data for specified row\n * @param targetRow\n * @param trackBy\n */\n public replaceData(\n targetRow: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n const rowIndex = this._rowsStack.findIndex((listRow) => {\n return trackBy(listRow.data, targetRow);\n });\n\n if (rowIndex > -1) {\n this._rowsStack[rowIndex] = new Row(\n targetRow,\n RowType.Simple,\n { initialExpand: this._initialExpand }\n );\n\n this._updateVisibleRows();\n\n return true;\n } else {\n return false;\n }\n\n }\n\n /**\n * Update data for specified row\n * @param rows\n * @param trackBy\n */\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n if (Array.isArray(rows)) {\n let updateSuccess = false;\n\n rows.forEach((item) => {\n if (this.updateRow(item, trackBy)) {\n updateSuccess = true;\n }\n });\n\n this._updateVisibleRows();\n\n return updateSuccess;\n } else {\n const updated = this.updateRow(rows, trackBy);\n\n this._updateVisibleRows();\n\n return updated;\n }\n }\n\n /**\n * Remove data for specified row\n * @param data\n */\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n const removedRows = [];\n\n const defaultTrackBy = (row, target) => {\n return row === target;\n };\n\n if (Array.isArray(data)) {\n //\n data.forEach((item) => {\n removedRows.push(...this.removeRow(item, defaultTrackBy));\n });\n } else if (isFunction(data)) {\n removedRows.push(...this.removeRow(null, (data as FsListTrackByTargetRowFn)));\n } else if (isObject(data)) {\n removedRows.push(...this.removeRow(data, defaultTrackBy));\n }\n\n if (removedRows.length > 0) {\n this._updateVisibleRows();\n\n this._rowsRemoved$.next(removedRows)\n }\n\n return !!removedRows.length;\n }\n\n public swapRows(row1, row2, selectedRows?: Row[], isMultipleDrag = false) {\n let tmpEl;\n const rowsStack = this._rowsStack;\n const row1GlobalIndex = rowsStack.indexOf(row1);\n const row2GlobalIndex = rowsStack.indexOf(row2);\n\n tmpEl = rowsStack[row1GlobalIndex];\n rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];\n rowsStack[row2GlobalIndex] = tmpEl;\n\n if (isMultipleDrag && Array.isArray(selectedRows)) {\n if (!selectedRows.includes(row1)) {\n selectedRows = [row1, ...selectedRows];\n }\n\n selectedRows\n .filter((selectedRow) => {\n return selectedRow !== row1;\n })\n .forEach((selectedRow) => {\n const idx = rowsStack.indexOf(selectedRow);\n rowsStack.splice(idx, 1);\n });\n\n const indexToInsertAfter = rowsStack.indexOf(tmpEl);\n\n rowsStack.splice(indexToInsertAfter, 1);\n\n selectedRows.forEach((selectedRow, offset) => {\n rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);\n });\n }\n\n this._rowsStack = [ ...rowsStack ];\n }\n\n public destroy() {\n this._destroyRowsStack();\n this._store.clear();\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public toggleRowGroup(rowData) {\n const row = this.visibleRows.find((visibleRow) => visibleRow.data === rowData );\n row.toggleRowExpandStatus();\n\n this._updateVisibleRows();\n }\n\n public finishReorder(): void {\n // TODO fixme remove or improve\n if (this.groupEnabled) {\n let group;\n this._rowsStack\n .forEach((row, index) => {\n if (row.isGroup && row !== group) {\n group = row;\n } else {\n row.index = index - this._rowsStack.indexOf(group) - 1;\n }\n });\n }\n\n this._updateVisibleRows();\n }\n\n private _updateRowsStack(rows) {\n this._destroyRowsStack();\n\n if (this.groupEnabled) {\n this._store.clear();\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...rows];\n }\n }\n\n private _extendRowsStack(rows) {\n if (this.groupEnabled) {\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...this._rowsStack, ...rows];\n }\n }\n\n private _destroyRowsStack() {\n this._rowsStack.forEach((row) => row.destroy());\n }\n\n private _updateVisibleRows() {\n this.visibleRows = this._rowsStack\n .filter((row, index) => {\n return (!(row as any).isChild && !row.isGroupFooter) || row.visible;\n });\n }\n\n private updateRow(\n targetRow: FsListAbstractRow,\n trackBy?: (listRow: FsListAbstractRow, targetRow?: FsListAbstractRow) => boolean) {\n\n if (trackBy === void 0) {\n trackBy = (row, target) => {\n return row === target;\n }\n }\n\n const targetIndex = this._rowsStack.findIndex((listRow) => trackBy(listRow.data, targetRow));\n\n if (targetIndex !== -1) {\n const updateTarget = this._rowsStack[targetIndex];\n const updatedData = Object.assign({}, updateTarget.data, targetRow);\n\n this._rowsStack[targetIndex] = new Row(\n updatedData,\n updateTarget.type,\n {\n parent: updateTarget.parent,\n initialExpand: updateTarget.expanded,\n }\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Remove row from\n * @param targetRow\n * @param trackBy\n */\n private removeRow(\n targetRow: FsListAbstractRow | null,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n\n const rows = this._rowsStack;\n const removedRows = [];\n\n rows.forEach((listRow, index) => {\n if (trackBy(listRow.data, targetRow)) {\n const removedRow = rows.splice(index, 1);\n\n removedRows.push(removedRow);\n }\n });\n\n return removedRows;\n }\n\n /**\n * Split existing rows by groups and store them for future use\n */\n private groupRowsBy(rows) {\n if (!this._groupByFn || !this._compareByFn) { return rows }\n\n let groupRows: GroupRow[] = [];\n const footerRows = new Map();\n\n rows.forEach((row) => {\n const mainGroup = this._groupByFn(row);\n const mainGroupKey = this._compareByFn(mainGroup);\n\n if (!this._store.has(mainGroupKey)) {\n const group = new GroupRow(\n mainGroup,\n this._initialExpand,\n );\n\n group.index = groupRows.length;\n groupRows.push(group);\n\n const childRow = new ChildRow(row, group);\n\n this._store.set(mainGroupKey, group);\n group.children.push(childRow);\n } else {\n const group = this._store.get(mainGroupKey);\n const childRow = new ChildRow(row, group);\n\n group.children.push(childRow);\n }\n });\n\n groupRows.forEach((groupRow) => {\n const footerIndex = groupRow.children\n .findIndex((row) => {\n return this._footerRowFn(row.data, {\n ...groupRow.data,\n children: groupRow.childrenData,\n });\n });\n\n if (footerIndex !== -1) {\n const footerRow = groupRow.children.splice(footerIndex, footerIndex + 1)[0];\n groupRow.children.push(new GroupFooterRow(footerRow.data, groupRow));\n }\n });\n\n return Array.from(this._store.values())\n .reduce((acc, item) => {\n if (item.isGroup) {\n acc.push(item, ...item.children);\n } else {\n acc.push(item);\n }\n\n return acc;\n }, []);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PaginationController } from '../classes/pagination-controller';\nimport { SortingController } from '../classes/sorting-controller';\nimport { FsListSortConfig } from '../interfaces';\nimport {\n ExternalParams,\n ExternalQueryPagination,\n ExternalQuerySorting,\n} from '../interfaces/external-params.interface';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ExternalParamsController {\n\n private _externalParams: ExternalParams = {\n page: null,\n limit: null,\n sortName: null,\n sortDirection: null,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _paginator: PaginationController,\n private _sorting: SortingController,\n private _queryParamsEnabled: boolean,\n ) {\n this.initialize();\n }\n\n public get externalSorting(): FsListSortConfig {\n if (!this._enabled || !this._sortName || !this._sortDirection) {\n return null;\n }\n\n return {\n value: this._sortName,\n direction: this._sortDirection,\n };\n }\n\n private get _enabled(): boolean {\n return this._queryParamsEnabled || this._persistance.enabled;\n }\n\n private get _page(): number {\n return this._externalParams.page;\n }\n\n private get _limit(): number {\n return this._externalParams.limit;\n }\n\n private get _sortName(): string {\n return this._externalParams.sortName;\n }\n\n private get _sortDirection(): 'asc' | 'desc' {\n return this._externalParams.sortDirection;\n }\n\n public initialize() {\n\n // Restore from localStorage parameters if persistance enabled\n if (this._persistance.enabled) {\n this._restorePaginationParams(this._persistance.getDataFromScope('paging'));\n this._restoreSortingParams(this._persistance.getDataFromScope('sorting'));\n }\n\n // Restore from queryParams and override if persistance already had values for those params\n if (this._queryParamsEnabled) {\n this._restorePaginationParams(this._route.snapshot.queryParams as ExternalQueryPagination);\n this._restoreSortingParams(this._route.snapshot.queryParams as ExternalQuerySorting);\n }\n\n // Set initial pagination params\n // The same initial, but for sorting placed in list-controller \"tranformTemplatesToColumns\" method\n if (this._paginator.enabled && !this._paginator.infinityScrollEnabled) {\n if (this._limit) {\n this._paginator.setLimit(this._limit);\n }\n\n if (this._page) {\n this._paginator.goToPage(this._page);\n\n }\n }\n\n // Update pagination in stores\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n\n this._listenPaginatorChanges();\n this._listenSortingChanges();\n }\n\n public clearSortingParams() {\n this._updateSortingParams(null, null);\n }\n\n public destroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _restorePaginationParams(values: ExternalQueryPagination) {\n if (values?.page) {\n this._externalParams.page = +values.page;\n }\n\n if (values?.limit) {\n this._externalParams.limit = +values.limit;\n }\n }\n\n private _restoreSortingParams(values: ExternalQuerySorting) {\n if (values?.sortName) {\n this._externalParams.sortName = values.sortName;\n }\n\n if (values?.sortDirection) {\n this._externalParams.sortDirection = values.sortDirection;\n }\n }\n\n private _listenPaginatorChanges() {\n merge(\n this._paginator.pageChanged$,\n this._paginator.pages$,\n this._paginator.pageReset$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n });\n }\n\n private _listenSortingChanges() {\n merge(\n this._sorting.initialized$,\n this._sorting.sortingChanged$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const sorting = this._sorting.value;\n\n if (sorting) {\n this._updateSortingParams(sorting.value, sorting.direction);\n } else {\n this.clearSortingParams();\n }\n });\n }\n\n private _updateSortingParams(name: string, direction: string) {\n if (this._queryParamsEnabled) {\n this._replaceState({\n sortName: name,\n sortDirection: direction,\n });\n }\n\n if (this._persistance.enabled) {\n if (name && direction) {\n this._persistance.saveDataToScope('sorting', { sortName: name, sortDirection: direction });\n } else {\n this._persistance.saveDataToScope('sorting', null);\n }\n }\n }\n\n private _updatePaginationParams(params) {\n if (this._queryParamsEnabled) {\n this._replaceState(params);\n }\n\n if (this._persistance.enabled) {\n this._persistance.saveDataToScope('paging', params);\n }\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .filter((name) => data[name] !== undefined && data[name] !== null)\n .forEach((name) => {\n url.searchParams.set(name,data[name]);\n });\n\n history.replaceState({}, null, url.search);\n }\n}\n","import { Observable, Subject } from 'rxjs';\r\n\r\nimport { FilterComponent } from '@firestitch/filter';\r\nimport { FsListAction } from '../interfaces/listconfig.interface';\r\n\r\n\r\nexport class ActionsController {\r\n\r\n private _filterRef: FilterComponent;\r\n\r\n private _actions: FsListAction[] = [];\r\n private _reorderAction: FsListAction;\r\n private _doneAction: FsListAction;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor() {}\r\n\r\n public get destroy$(): Observable<void> {\r\n return this._destroy$.asObservable();\r\n }\r\n\r\n public get actions(): FsListAction[] {\r\n return this._actions;\r\n }\r\n\r\n public get hasActions(): boolean {\r\n return this._actions.length > 0;\r\n }\r\n\r\n public setFilterRef(ref: FilterComponent) {\r\n this._filterRef = ref;\r\n }\r\n\r\n public setActions(actions: FsListAction[]) {\r\n this.clearActions();\r\n this._actions = actions;\r\n\r\n if (this._reorderAction) {\r\n this._actions.unshift(this._reorderAction);\r\n }\r\n }\r\n\r\n public addReorderAction(action: FsListAction) {\r\n const actionClickFn = action.click;\r\n this._actions.unshift(action);\r\n\r\n action.click = () => {\r\n this._filterRef.updateActions([this._doneAction]);\r\n this._filterRef.hideKeywordField();\r\n this._filterRef.hideFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n\r\n this._reorderAction = action;\r\n }\r\n\r\n public addReorderDoneAction(action: FsListAction) {\r\n this._doneAction = action;\r\n const actionClickFn = action.click;\r\n\r\n this._doneAction.click = () => {\r\n this._filterRef.updateActions(this._actions);\r\n this._filterRef.showKeywordField();\r\n this._filterRef.showFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n }\r\n\r\n public clearActions() {\r\n this._actions = [];\r\n this._destroy$.next();\r\n }\r\n\r\n public updateDisabledState(): void {\r\n this._filterRef.updateDisabledState();\r\n }\r\n}\r\n","export enum PaginationStrategy {\r\n Page = 'page',\r\n Offset = 'offset',\r\n None = 'none',\r\n}\r\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { isObject } from 'lodash-es';\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { PaginationStrategy } from '../enums/pagination-strategy.enum';\nimport {\n FsListLoadMoreConfig,\n FsPaging,\n PageChange,\n QueryOffsetStrategy,\n QueryPageStrategy,\n} from '../interfaces';\n\nexport class PaginationController {\n\n public limit = 25;\n public records: number;\n public manual = false;\n\n public page = 1; // Active page\n public offset = 0;\n\n // public pagesArray = [];\n public displayed = 0;\n\n private _pages$ = new BehaviorSubject<number>(0); // Total pages\n\n private _strategy: PaginationStrategy = PaginationStrategy.None;\n private _removedRows = 0;\n\n private _pageChanged$ = new Subject<PageChange>();\n private _pageReset$ = new Subject<void>();\n private _onDestroy$ = new Subject();\n\n private _loadMoreEnabled = false;\n private _infinityScrollEnabled = false;\n private _loadMoreText = 'Load More';\n private _limits = [10, 25, 50, 100, 200];\n\n constructor() {}\n\n // Total pages\n public set pages(value: number) {\n this._pages$.next(value);\n }\n\n public get pages(): number {\n return this._pages$.getValue();\n }\n\n public get pages$(): Observable<number> {\n return this._pages$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n /**\n * Fire if page was changed\n */\n public get pageChanged$(): Observable<PageChange> {\n return this._pageChanged$.pipe(takeUntil(this._onDestroy$));\n }\n\n public get pageReset$(): Observable<void> {\n return this._pageReset$.asObservable();\n }\n\n /**\n * Get enabled\n */\n public get enabled(): boolean {\n return !this.hasNoneStrategy;\n }\n\n /**\n * Get Limits\n */\n public get limits(): number[] {\n return this._limits;\n }\n\n /**\n * Set limits, update pages array and set new limit per page\n *\n * @param value\n */\n public set limits(value) {\n this._limits = value;\n\n if (this.limits.length > 0 && this.limits.indexOf(this.limit) === -1) {\n this.limit = this.limits[0];\n } else if (this.limits.length === 0) {\n this.limit = this.records;\n }\n }\n\n /**\n * Get query for request\n */\n public get query() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.queryPageStrategy;\n case PaginationStrategy.Offset:\n return this.queryOffsetStrategy;\n }\n\n return {};\n }\n\n public get loadMoreQuery() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.query;\n case PaginationStrategy.Offset:\n const query = this.queryOffsetStrategy;\n\n query.limit = query.offset + query.limit;\n query.offset = 0;\n\n return query;\n }\n\n return {};\n }\n\n /**\n * Query for Page Strategy\n */\n public get queryPageStrategy(): QueryPageStrategy {\n return this.hasNoneStrategy\n ? {}\n : {\n page: this.page || 1,\n limit: this.limit || 10,\n };\n }\n\n /**\n * Query for Offset Strategy\n */\n public get queryOffsetStrategy(): QueryOffsetStrategy {\n const page = this.page - 1 || 0;\n const limit = this.limit || 5;\n\n return {\n offset: page * limit,\n limit,\n };\n }\n\n /**\n * Get query for load only count of deleted rows\n */\n public get loadDeletedOffsetQuery() {\n const paginationOffset = this.limit * this.page;\n const actualOffset = Math.min(this.records, paginationOffset);\n const offset = Math.max(0, actualOffset - this._removedRows);\n\n return {\n offset,\n limit: this._removedRows,\n };\n }\n\n public get initialized() {\n return !!this.pages;\n }\n\n public get strategy() {\n return this._strategy;\n }\n\n public set strategy(strategy: PaginationStrategy) {\n this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;\n }\n\n /**\n * Check if pagination in Page Strategy Mode\n */\n public get hasPageStrategy() {\n return this.strategy === PaginationStrategy.Page;\n }\n\n /**\n * Check if pagination in Offset Strategy Mode\n */\n public get hasOffsetStrategy() {\n return this.strategy === PaginationStrategy.Offset;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasNoneStrategy(): boolean {\n return this.strategy === PaginationStrategy.None;\n }\n\n /**\n * If prev page can be activated\n *\n */\n public get hasPrevPage(): boolean {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasPrevPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasPrevPageOffsetStrategy;\n }\n\n return false;\n }\n\n /**\n * If next page can be activated\n */\n public get hasNextPage(): boolean { // Need to check if pages === page && page === 1\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasNextPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasNextPageOffsetStrategy;\n }\n\n return false;\n }\n\n public get loadMoreEnabled(): boolean {\n return this._loadMoreEnabled;\n }\n\n public get loadMoreText(): string {\n return this._loadMoreText;\n }\n\n public get infinityScrollEnabled() {\n return this._infinityScrollEnabled;\n }\n\n /**\n * SP-T1974\n * Showing 26-50 of 333 results sorted by Name, Ascending\n * Showing 0 results sorted by Name, Ascending\n */\n public get statusLabel(): string {\n const current = (this.page - 1) * this.limit;\n const from = current + 1;\n const to = Math.min(this.records, current + this.limit);\n\n return `${from}-${to}`;\n }\n\n public initWithConfig(\n config: FsPaging | false,\n loadMore: FsListLoadMoreConfig | boolean,\n infinityScrollEnabled = false,\n ) {\n\n if (config) {\n if (config.limits) {\n this.limits = config.limits;\n }\n\n if (config.limit) {\n this.limit = config.limit;\n }\n\n this.strategy = config.strategy;\n }\n\n if (loadMore) {\n this.setLoadMore(loadMore);\n }\n\n this._infinityScrollEnabled = infinityScrollEnabled;\n }\n\n /**\n * If pagination has prev page when Page Strategy\n */\n private get _hasPrevPagePageStrategy(): boolean {\n return this.page > 1 && this.pages > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageOffsetStrategy(): boolean {\n return this.offset >= this.limit && this.records > 1;\n }\n\n /**\n * If pagination has next page when Page Strategy\n */\n private get _hasNextPagePageStrategy(): boolean {\n return this.page < this.pages && this.pages > 1;\n }\n\n /**\n * If pagination has next page when Offset Strategy\n */\n private get _hasNextPageOffsetStrategy(): boolean {\n return (this.offset + this.limit) < this.records && this.records > 1;\n }\n\n /**\n * Update paging config and all related fields\n *\n * @param config\n * @param displayedRecords\n * @param loadMoreOperation\n */\n public updatePaging(config, displayedRecords = 0, loadMoreOperation = false) {\n if (!loadMoreOperation) {\n this._fromParams(config);\n this.displayed = displayedRecords;\n } else {\n this.records = config.records;\n\n if (this.records < this.displayed) {\n this.displayed = this.records;\n }\n\n this._removedRows = 0;\n }\n\n this._updateTotalPages();\n }\n\n // /**\n // * Update paging when data source not remove\n // * @param {any[]} rows\n // */\n /*public updatePagingManual(rows: any[]) {\n if (Array.isArray(rows) && rows.length > 0) {\n this.records = rows.length;\n this.pages = Math.ceil(rows.length / this.limit);\n }\n\n this.updatePagesArray();\n this.updateDisplayed();\n }*/\n\n /**\n * Update pages array with new pages count\n */\n // public updatePagesArray() {\n // const MIDDLE = 2;\n // const pagesArr = [];\n\n // let from = 0;\n // let to = 0;\n // if (this.page < MIDDLE) {\n // from = MIDDLE - 1;\n // to = MIDDLE + 1;\n // } else if (this.page >= MIDDLE && this.page <= this.pages - MIDDLE + 1) {\n // from = this.page - 1;\n // to = this.page + 1;\n // } else if (this.page > this.pages - MIDDLE + 1) {\n // from = this.pages - MIDDLE - 1;\n // to = this.pages;\n // }\n\n // if (!this.pages || this.pages < 5) {\n // from = 1;\n // to = this.pages || 0;\n // }\n\n // for (let i = from; i <= to; i++) {\n // pagesArr.push(i);\n // }\n\n // this.pagesArray = Object.assign([], pagesArr);\n // }\n\n public setLoadMore(config: FsListLoadMoreConfig | boolean) {\n this._loadMoreEnabled = !!config;\n\n if (this._loadMoreEnabled && isObject(config) && (config as FsListLoadMoreConfig).label) {\n this._loadMoreText = (config as FsListLoadMoreConfig).label;\n }\n }\n\n /**\n * Update dispayed records counter\n */\n // public updateDisplayed() {\n // this.displayed = this.getVisibleRecords();\n // }\n\n /**\n * Return count of records that could be shown on page\n */\n // public getVisibleRecords() {\n // const diff = this.hasOffsetStrategy\n // ? this.records - this.offset\n // : this.limit;\n //\n // return diff < this.limit\n // ? diff\n // : this.displayed;\n // }\n\n public getVisibleRecords() {\n return this.displayed;\n }\n\n /**\n * Set new limit\n *\n * @param limit\n */\n public setLimit(limit) {\n this.limit = limit;\n this.resetPaging();\n\n this._pageChanged$.next({\n type: PageChangeType.LimitChanged,\n payload: limit,\n });\n }\n\n /**\n * If page is activate page\n *\n * @param page\n */\n public isActive(page): boolean {\n return page === this.page;\n }\n\n /**\n * Go to page\n *\n * @param page\n */\n public goToPage(page) {\n if (page >= 1 && this.page !== page) {\n this.page = page;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: page,\n });\n }\n }\n\n /**\n * Reset paging like it was just initialized\n */\n public resetPaging() {\n this.page = 1;\n this.offset = 0;\n }\n\n /**\n * Go to next page\n */\n public goNext() {\n if (this.hasNextPage) {\n this.page++;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to first page\n */\n public goFirst() {\n if (this.page > 1) {\n this.page = 1;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to prev page\n */\n public goPrev() {\n if (this.page > 1) {\n this.page--;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to last page\n */\n public goLast() {\n if (this.page !== this.pages) {\n this.page = this.pages;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Update count of deleted rows. This count will be applied for offset calc\n *\n * @param count\n */\n public removeRows(count: number) {\n this._removedRows += count;\n }\n\n public updatePagination() {\n this._updateTotalPages();\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Update paging state\n *\n * @param params\n */\n private _fromParams(params): void {\n if (!this.loadMoreEnabled) {\n this.limit = params.limit ?? 25;\n }\n\n this.records = params.records;\n this.manual = params.manual;\n\n this.pages = params.pages || 0;\n }\n\n /**\n * Calc and update offset\n */\n private _updateOffset() {\n this.offset = this.limit * (this.page - 1);\n }\n\n /**\n * Calc and update total count of pages\n */\n private _updateTotalPages() {\n this.pages = Math.ceil(this.records / this.limit);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class ColumnAsyncAttribute<T> extends BehaviorSubject<T> {\n\n constructor(value: T) {\n super(Object.freeze(value));\n }\n\n public next(value: T): void {\n const newValue = value;\n const oldValue = this.getValue();\n\n if (newValue !== oldValue) {\n super.next(Object.freeze(value));\n }\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ColumnAsyncAttribute } from './column-async-attribute';\n\nexport class ColumnAttributes {\n\n private _title: string;\n private _name: string;\n private _customize = true;\n private _sortable: boolean;\n private _sortableDefault: boolean;\n private _direction$ = new ColumnAsyncAttribute(null);\n private _align: string;\n private _width: string;\n private _className: string | string[];\n private _visible$ = new ColumnAsyncAttribute(true);\n\n constructor(attrs: { [key: string]: any } = {}) {\n this._init(attrs);\n }\n\n // title\n public set title(value: string) {\n this._title = value;\n }\n\n public get title(): string {\n return this._title;\n }\n\n // name\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n // customize\n public set customize(value: boolean) {\n this._customize = value;\n }\n\n public get customize(): boolean {\n return this._customize;\n }\n\n // sortable\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n\n // sortableDefault\n public set sortableDefault(value: boolean) {\n this._sortableDefault = value;\n\n if (this.sortableDefault) {\n this.sortable = true;\n }\n }\n\n public get sortableDefault(): boolean {\n return this._sortableDefault;\n }\n\n // direction\n public set direction(value: 'asc' | 'desc') {\n this._direction$.next(value);\n }\n\n public get direction(): 'asc' | 'desc' {\n return this._direction$.value;\n }\n\n public get direction$(): Observable<'asc' | 'desc'> {\n return this._direction$.asObservable();\n }\n\n // align\n public set align(value: string) {\n this._align = value;\n }\n\n public get align(): string {\n return this._align;\n }\n\n // width\n public set width(value: string) {\n this._width = value;\n }\n\n public get width(): string {\n return this._width;\n }\n\n // className\n public set className(value: string | string[]) {\n this._className = value;\n }\n\n public get className(): string | string[] {\n return this._className;\n }\n\n // visibility\n public set visible(value: boolean) {\n this._visible$.next(value);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n private _init(attrs: { [key: string]: any }) {\n Object.keys(attrs)\n .forEach((key) => {\n switch (key) {\n case 'title': { this.title = attrs[key]; } break;\n case 'name': { this.name = attrs[key]; } break;\n case 'align': { this.align = attrs[key]; } break;\n case 'direction': { this.direction = attrs[key]; } break;\n case 'sortable': { this.sortable = attrs[key]; } break;\n case 'show': { this.visible = attrs[key]; } break;\n case 'visible': { this.visible = attrs[key]; } break;\n }\n });\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsListSortConfig, SortingChangeEvent } from '../interfaces';\nimport { ColumnAttributes } from '../models/column-attributes';\nimport { Column, SortingDirection } from '../models/column.model';\n\nimport { List } from './list-controller';\n\n\nexport class SortingController {\n public config: List;\n\n public sortingColumns: Column[] = [];\n public fakeSortingColumns: Column[] = [];\n public sortingColumn: Column;\n\n private _initialized = new BehaviorSubject<boolean>(false);\n private _sortingChanged$ = new Subject<SortingChangeEvent>();\n private _onDestroy = new Subject();\n\n constructor() {}\n\n public get sortingChanged$(): Observable<SortingChangeEvent> {\n return this._sortingChanged$.pipe(takeUntil(this._onDestroy));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized.pipe(takeUntil(this._onDestroy));\n }\n\n public get value(): FsListSortConfig | undefined {\n if (this.sortingColumn) {\n return {\n value: this.sortingColumn.name,\n direction: this.sortingColumn.direction,\n };\n }\n\n return undefined;\n }\n\n public get initialization(): boolean {\n return !this._initialized.getValue();\n }\n\n public get isDefined(): boolean {\n return !!this.sortingColumn;\n }\n\n private set _initialization(value: boolean) {\n this._initialized.next(!value);\n }\n\n public addSortableColumn(column: Column) {\n this.sortingColumns.push(column);\n }\n\n public clearSortableColumns(): void {\n this.sortingColumns = [];\n }\n\n /**\n * Set Sortable Direction\n *\n * @param direction\n */\n public sortDirection(direction) {\n if (this.sortingColumn && this.sortingColumn.sortingDirection !== direction) {\n this._setSortingDirection(direction);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Sort By\n *\n * @param column\n */\n public sortBy(column: Column) {\n if (column.sortable) {\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Same as sortBy, but need only column name as parameter for sort\n *\n * @param name\n */\n public sortByColumnWithName(name: string) {\n const column = this.getColumn(name);\n\n if (!column) {\n return;\n }\n\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n\n /**\n * Init fake columns for sorting\n *\n * @param columns\n */\n public initFakeColumns(columns) {\n columns.forEach((column) => {\n const attributes = new ColumnAttributes({\n title: column.name,\n name: column.value,\n sortable: true,\n direction: column.direction,\n });\n\n const fakeColumn = new Column({\n attributes,\n });\n\n this.fakeSortingColumns.push(fakeColumn);\n });\n }\n\n /**\n * Set initial sorting\n *\n * @param sort\n */\n public initialSortBy(sort: FsListSortConfig) {\n this._initialization = true;\n\n if (!sort) {\n this._trySortByDefaultSortableColumn();\n\n if (!this.sortingColumn) {\n this.sortByFirstSortbale();\n }\n\n this._initialization = false;\n\n return;\n }\n\n if (!this.getColumn(sort.value)) {\n this.sortByFirstSortbale();\n\n console.warn(`\n Not possible to do initial sort by \"${sort.value}\" column.\n Column with name \"${sort.value}\" does not exists.\n Check your lister configuration.\n `);\n } else {\n this.sortByColumnWithName(sort.value);\n\n const direction = (sort.direction === undefined || sort.direction === 'asc')\n ? SortingDirection.asc\n : SortingDirection.desc;\n this._setSortingDirection(direction);\n }\n\n this._initialization = false;\n }\n\n /**\n * Sort by first of available sorting columns\n */\n public sortByFirstSortbale() {\n const column =\n this.sortingColumns.find((col) => col.sortable);\n\n if (!column) {\n return;\n }\n\n this.sortBy(column);\n this.sortDirection(column.direction || SortingDirection.asc);\n }\n\n public getColumn(name: string): Column {\n return [...this.sortingColumns, ...this.fakeSortingColumns]\n .find((col) => col.name === name && col.sortable);\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private _setSortingColumn(column: Column) {\n // Can't do sort by non sortable column\n if (!column.sortable) {\n return false;\n }\n\n // Column was ordered before\n if (column.ordered) {\n column.changeDirection();\n } else {\n [...this.fakeSortingColumns, ...this.sortingColumns]\n .filter((col) => col.ordered)\n .forEach((col) => col.ordered = false);\n\n column.ordered = true;\n }\n\n this.sortingColumn = column;\n }\n\n private _setSortingDirection(direction) {\n this.sortingColumn.sortingDirection = direction;\n }\n\n private _notifySortChanged() {\n if (this.initialization) {\n return;\n }\n\n this._sortingChanged$.next({\n sortBy: this.sortingColumn.name,\n sortDirection: this.sortingColumn.direction,\n });\n }\n\n private _trySortByDefaultSortableColumn(): void {\n const sortableDefault = this.sortingColumns\n .find((column) => column.sortableDefault);\n\n if (sortableDefault) {\n this.sortByColumnWithName(sortableDefault.name);\n }\n }\n}\n","import { ElementRef, TemplateRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ChangeFn, FilterConfig, IFilterSavedFiltersConfig, ItemType } from '@firestitch/filter';\nimport { FsScrollInstance, FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { BehaviorSubject, combineLatest, EMPTY, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, debounceTime, map, mapTo, shareReplay, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { cloneDeep } from 'lodash-es';\n\nimport { SortingDirection } from '../models/column.model';\n\n// Interfaces\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport {\n FsListAfterContentInitFn,\n FsListAfterFetchFn,\n FsListAfterInitFn,\n FsListBeforeFetchFn,\n FsListConfig,\n FsListEmptyStateConfig,\n FsListFetchFn,\n FsListFetchOptions,\n FsListFetchSubscription,\n FsListGroupConfig,\n FsListLoadMoreConfig,\n FsListNoResultsConfig,\n FsListPersitance,\n FsListRestoreConfig,\n FsListScrollableConfig,\n FsListSelectionConfig,\n FsListTrackByFn,\n FsPaging,\n PageChange,\n} from '../interfaces';\nimport { RowAction } from '../models/row-action.model';\nimport { StyleConfig } from '../models/styleConfig.model';\n\nimport { ColumnsController } from './columns-controller';\nimport { DataController } from './data-controller';\nimport { ExternalParamsController } from './external-params-controller';\nimport { ActionsController } from './index';\nimport { PaginationController } from './pagination-controller';\nimport { PersistanceController } from './persistance-controller';\nimport { SelectionController } from './selection-controller';\nimport { SortingController } from './sorting-controller';\n\nconst SHOW_DELETED_FILTERS_KEY = '_showDeleted_';\n\n\nexport class List {\n\n public heading: string;\n public trackBy: string;\n public subheading: string;\n public autoFocus: boolean;\n public rowHighlight: boolean;\n public rowActionsRaw: any[];\n public groupActionsRaw: any[];\n public rowClass;\n public rowEvents: any;\n public restore: FsListRestoreConfig;\n public persist: FsListPersitance;\n public filters = [];\n public filterInitCb: ChangeFn;\n public filterChangeCb: ChangeFn;\n public savedFilters: IFilterSavedFiltersConfig;\n public scrollable: FsListScrollableConfig;\n public noResults: FsListNoResultsConfig;\n public emptyState: FsListEmptyStateConfig;\n public fetchFn: FsListFetchFn;\n public beforeFetchFn: FsListBeforeFetchFn;\n public afterFetchFn: FsListAfterFetchFn;\n public afterContentInit: FsListAfterContentInitFn;\n public afterInit: FsListAfterInitFn;\n public style;\n public initialized$ = new BehaviorSubject(false);\n public loading$ = new BehaviorSubject(false);\n public hasRowActions;\n public paging = new PaginationController();\n public columns = new ColumnsController();\n public actions = new ActionsController();\n public dataController = new DataController();\n public sorting = new SortingController();\n public externalParams: ExternalParamsController;\n public selection: SelectionController;\n public filterConfig: FilterConfig = null;\n public fetch$ = new Subject<FsListFetchSubscription | void>();\n public fetchComplete$ = new Subject<void>();\n public filtersReady$ = new Subject<void>();\n public status = true;\n public chips = false;\n public filterInput = true;\n public queryParam = false;\n public restoreMode = false;\n\n public initialFetch = true;\n\n // Empty state\n public emptyStateEnabled = false;\n public emptyStateTemplate: TemplateRef<any>;\n\n public fsScrollInstance: FsScrollInstance;\n\n public onDestroy$ = new Subject();\n\n private readonly _filtersQuery = new BehaviorSubject<Record<string, any>>(null);\n private readonly _activeFiltersCount$ = this._filtersQuery\n .pipe(map((v) => Object.keys(v).length), shareReplay());\n\n private readonly _headerConfig: StyleConfig;\n private readonly _groupCellConfig: StyleConfig;\n private readonly _cellConfig: StyleConfig;\n private readonly _footerConfig: StyleConfig;\n\n private _fsScrollSubscription: Subscription;\n\n constructor(\n private _el: ElementRef,\n private config: FsListConfig = {},\n private fsScroll: FsScrollService,\n private selectionDialog: SelectionDialog,\n private router: Router,\n private route: ActivatedRoute,\n private persistance: PersistanceController,\n private inDialog: boolean,\n ) {\n this.initialize(config);\n this._headerConfig = new StyleConfig(config.header);\n this._groupCellConfig = new StyleConfig(config.cell);\n this._cellConfig = new StyleConfig(config.cell);\n this._footerConfig = new StyleConfig(config.footer);\n this.initialized$.next(true);\n this.subscribe();\n\n if (this.initialFetch) {\n this.dataController.setOperation(FsListState.Load);\n this.fetch$.next();\n }\n\n }\n\n public get hasSavedFilters(): boolean {\n return !!this.filterConfig.savedFilters;\n }\n\n public get filtersQuery(): Record<string, any> {\n return this._filtersQuery.getValue();\n }\n\n public get activeFiltersCount$(): Observable<number> {\n return this._activeFiltersCount$;\n }\n\n public fetchRemote(query) {\n const options: FsListFetchOptions = {\n state: this.dataController.operation,\n };\n\n const result: any = this.fetchFn(query, options);\n\n return result instanceof Promise ? from(result) : result;\n }\n\n // public loadLocal() {\n // this.paging.updatePagingManual(this._rows);\n // const from = (this.paging.page - 1) * this.paging.limit;\n // const to = (this.paging.page === 1) ? this.paging.limit : this.paging.limit * this.paging.page;\n // const sliceOfRows = this._rows.slice(from, to);\n // this.data$.next(sliceOfRows);\n // }\n\n /**\n * Transform templates for using\n *\n * @param templates\n */\n public tranformTemplatesToColumns(templates) {\n const defaultConfigs = {\n header: this._headerConfig,\n groupCell: this._groupCellConfig,\n cell: this._cellConfig,\n footer: this._footerConfig,\n };\n\n this.columns.setDefaults(defaultConfigs);\n this.columns.initializeColumns(templates);\n\n // Set sortBy default column\n this._updateSortingColumns();\n\n // Default sort by\n const externalSorting = this.externalParams.externalSorting;\n const initialSortConfig = externalSorting || this.config.sort;\n this.sorting.initialSortBy(initialSortConfig);\n\n if (externalSorting && !this.sorting.isDefined) {\n this.externalParams.clearSortingParams();\n\n console.warn('Not able to restore persisted sorting params.', externalSorting);\n }\n\n this._initFilters();\n this.initInfinityScroll();\n }\n\n public reload() {\n this.loading$.next(true);\n\n this.dataController.setOperation(FsListState.Reload);\n\n if (this.fsScrollInstance) {\n this.paging.resetPaging();\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n }\n\n /**\n * Watch page changes\n */\n public subscribe() {\n this.paging.pageChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((event: PageChange) => {\n this.dataController.setOperation(FsListState.PageChange);\n\n // Remove all rows if limits was changed\n if (event.type === PageChangeType.LimitChanged && this.paging.hasPageStrategy) {\n this.dataController.clearRows();\n }\n\n if (this.paging.hasOffsetStrategy) {\n this.paging.updatePagination();\n\n if (this.selection) {\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n this.selection.pageChanged(this.scrollable);\n }\n }\n\n if (!this.scrollable && !this.paging.loadMoreEnabled) {\n\n const contains = [].slice.call(document.querySelectorAll('.cdk-overlay-container')).some((overlay) => {\n return this._el.nativeElement.contains(overlay);\n });\n\n let el = this._el.nativeElement;\n\n if (!contains) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n if ((rect.top + window.pageYOffset) < window.innerHeight) {\n el = document.body;\n }\n }\n\n this.fetchComplete$.asObservable()\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n el.scrollIntoView({ behavior: 'smooth' });\n });\n }\n\n this.fetch$.next();\n });\n\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this.dataController.setOperation(FsListState.Sort);\n this.paging.page = 1;\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n });\n\n this._listenVisibleColumnChanges();\n this.listenRowsRemove();\n this.listenFetch();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n let rowsData = this.dataController\n .visibleRowsData;\n\n if (trackBy) {\n rowsData = rowsData\n .filter(trackBy);\n }\n\n return rowsData\n .map((data) => {\n return cloneDeep(data);\n });\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.dataController.visibleRowsData.some(trackBy);\n }\n\n /**\n * Toggle group mode status\n *\n * @param value\n */\n public groupEnabled(value: boolean) {\n if (this.dataController.groupEnabled !== value) {\n this.dataController.groupEnabled = value;\n\n // Commented out because Ray wants to change group status in fetch map pipe\n // and it triggers extra requests\n // this.reload();\n }\n }\n\n public destroy() {\n if (this._fsScrollSubscription) {\n this._fsScrollSubscription.unsubscribe();\n }\n\n if (this.paging) {\n this.paging.destroy();\n }\n\n if (this.sorting) {\n this.sorting.destroy();\n }\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.filterConfig) {\n this.filterConfig = null;\n }\n\n if (this.externalParams) {\n this.externalParams.destroy();\n }\n\n this.columns.destroy();\n\n this.onDestroy$.next();\n this.onDestroy$.complete();\n\n this.dataController.destroy();\n }\n\n /**\n * Do initialization of table\n *\n * @param config\n */\n private initialize(config: FsListConfig) {\n this.autoFocus = config.autoFocus;\n this.rowHighlight = config.rowHighlight ?? true;\n this.heading = config.heading;\n this.trackBy = config.trackBy;\n this.subheading = config.subheading;\n this.rowActionsRaw = config.rowActions;\n this.rowClass = config.rowClass;\n this.rowEvents = config.rowEvents;\n this.restore = config.restore;\n this.persist = config.persist;\n this.filters = config.filters ?? [];\n this.filterInitCb = config.filterInit;\n this.filterChangeCb = config.filterChange;\n this.savedFilters = config.savedFilters;\n this.scrollable = config.scrollable;\n this.noResults = config.noResults;\n this.emptyState = config.emptyState;\n this.fetchFn = config.fetch;\n this.afterFetchFn = config.afterFetch;\n this.beforeFetchFn = config.beforeFetch;\n this.afterInit = config.afterInit;\n this.style = config.style;\n\n this.columns.initConfig(config.column);\n this.initDefaultOptions(config);\n this.initRestore();\n this.initActions(config.actions);\n this.initPaging(config.paging, config.loadMore);\n this.initSelection(config.selection, this.selectionDialog);\n this.initGroups(config.group);\n this.initExternalParamsController();\n\n this.initializeData();\n }\n\n /**\n * Just init options by default it it wasn't specified\n *\n * @param config\n */\n private initDefaultOptions(config) {\n // We should prevent initial fetch in cases when it will be fetched in any case\n // As ex. scrollable or filter will do fetch in any cases\n if (config.initialFetch === false || config.scrollable) { // TODO fixme after tsmodel version update\n this.initialFetch = false;\n }\n if (config.status === false) {\n this.status = false;\n }\n if (config.chips) {\n this.chips = config.chips;\n }\n if (config.filterInput === false) {\n this.filterInput = false;\n }\n\n if (this.inDialog) {\n this.queryParam = false;\n } else {\n this.queryParam = (config.queryParam === void 0)\n ? true\n : config.queryParam;\n }\n\n if (config.sorts) {\n this.sorting.initFakeColumns(config.sorts);\n }\n if (!config.trackBy) {\n this.trackBy = 'id';\n }\n\n if (config.afterContentInit) {\n this.afterContentInit = () => {\n config.afterContentInit(this.paging.query, this.dataController.visibleRows);\n };\n }\n }\n\n /**\n * Init restore row action and append Show Deleted option into filters\n */\n private initRestore() {\n if (this.restore) {\n const restoreAction = new RowAction({\n label: this.restore.menuLabel || 'Restore',\n menu: true,\n click: (row) => {\n this.restoreClick(this.restore.click, row);\n }, // TODO fix me, move to special file\n restore: true,\n });\n\n if (!this.rowActionsRaw) {\n this.rowActionsRaw = [];\n }\n\n this.rowActionsRaw.push(restoreAction);\n\n if (!this.filters) {\n this.filters = [];\n }\n\n if (this.restore.filter !== false) {\n this.filters.push({\n name: SHOW_DELETED_FILTERS_KEY,\n type: ItemType.Checkbox,\n label: this.restore.filterLabel || 'Show Deleted',\n });\n }\n }\n\n }\n\n /**\n * Init paging\n *\n * @param pagingConfig\n * @param loadMore\n */\n private initPaging(pagingConfig: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean) {\n this.paging.initWithConfig(pagingConfig, loadMore, !!this.scrollable);\n }\n\n /**\n * Split actions by categories\n */\n private initActions(actions) {\n if (actions) {\n this.actions.setActions(actions);\n }\n\n this.hasRowActions =\n (this.rowActionsRaw && this.rowActionsRaw.length > 0)\n || (this.groupActionsRaw && this.groupActionsRaw.length > 0);\n }\n\n private initSelection(\n selectionConfig: FsListSelectionConfig,\n selectionDialog: SelectionDialog,\n ) {\n if (selectionConfig) {\n this.selection = new SelectionController(selectionConfig, this.trackBy, selectionDialog);\n this.selection.setRowsCallback(() => this.dataController.visibleRows);\n }\n }\n\n private initializeData() {\n this.dataController.setAdditionalConfigs({\n scrollable: !!this.scrollable,\n loadMoreEnabled: this.paging.loadMoreEnabled,\n });\n }\n\n private initGroups(groupConfig: FsListGroupConfig) {\n if (groupConfig) {\n this.dataController.setGroupConfig(groupConfig);\n this.groupActionsRaw = groupConfig.actions;\n }\n }\n\n private initExternalParamsController() {\n this.externalParams = new ExternalParamsController(\n this.router,\n this.route,\n this.persistance,\n this.paging,\n this.sorting,\n this.queryParam,\n );\n }\n\n /**\n * Subscribe to fetch$ event with debounce\n */\n private listenFetch() {\n let fetch$ = this.fetch$.asObservable();\n\n // Should wait until saved filters not loaded\n if (!!this.filters) {\n fetch$ = combineLatest([fetch$, this.filtersReady$])\n .pipe(\n map(([params]) => params),\n );\n }\n\n fetch$\n .pipe(\n debounceTime(50),\n tap(() => {\n this.loading$.next(true);\n }),\n tap(() => {\n this.selection?.closeSelectionDialog();\n }),\n map((params: FsListFetchSubscription) => {\n let query = { ...this.filtersQuery };\n\n if (this.paging.hasOffsetStrategy && params && params.loadOffset) {\n query = Object.assign(query, this.paging.loadDeletedOffsetQuery);\n } else {\n const allRecordsRangeNeeded = (this.initialFetch\n || this.dataController.operation === FsListState.Reload\n ) && this.paging.loadMoreEnabled;\n\n query = allRecordsRangeNeeded ? Object.assign(query, this.paging.loadMoreQuery) : Object.assign(query, this.paging.query);\n }\n\n if (this.sorting.sortingColumn) {\n Object.assign(\n query,\n {\n order: `${this.sorting.sortingColumn.name},${this.sorting.sortingColumn.direction}`,\n },\n );\n }\n\n if (this.columns.configured) {\n query = {\n ...query,\n columns: this.columns.visibleColumnsNames,\n };\n }\n\n return query;\n }),\n switchMap((query) => {\n if (this.columns.loadFnConfigured && !this.columns.columnsFetched) {\n return this.columns.loadRemoteColumnConfigs()\n .pipe(\n mapTo(query),\n );\n }\n\n return of(query);\n }),\n switchMap((query) => {\n if (this.beforeFetchFn) {\n return this.beforeFetchFn(query)\n .pipe(\n catchError((error, source$) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n }\n\n return of(query);\n }),\n switchMap((query) => {\n const remoteFetch = this.fetchRemote(query)\n .pipe(\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n\n return combineLatest([of(query), remoteFetch]);\n }),\n catchError((error, source$) => {\n console.error(error);\n\n return EMPTY;\n }),\n takeUntil(this.onDestroy$),\n )\n .subscribe((response) => {\n this.initialFetch = false;\n\n this.completeFetch(response);\n }, () => { }, () => {\n });\n }\n\n private listenRowsRemove() {\n this.dataController.rowsRemoved$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((rows: any[]) => {\n if (this.paging.enabled) {\n\n const removedCount = rows.length;\n\n if (this.paging.hasPageStrategy) {\n this.noDataPaginationUpdate(removedCount);\n } else {\n // Fetch more if has something for fetch\n if (this.dataController.hasData || this.paging.hasNextPage) {\n this.dataController.setOperation(FsListState.LoadMore);\n\n this.paging.removeRows(removedCount);\n this.fetch$.next({ loadOffset: true });\n } else {\n this.noDataPaginationUpdate(removedCount);\n }\n }\n }\n\n // Remove from selection\n if (this.selection) {\n rows.forEach((row) => {\n this.selection.removeRow(row.data);\n });\n }\n });\n }\n\n /**\n * Lister may have originally hidden columns, but visibility of those columns\n * can be changed programmaticaly in any time\n */\n private _listenVisibleColumnChanges(): void {\n this.columns.visibleColumns$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this._updateSortingColumns();\n });\n }\n\n private initInfinityScroll() {\n if (this.fsScrollInstance) {\n return;\n }\n\n if (this.scrollable) {\n // Scrollable status by default\n if (this.scrollable.status === void 0) {\n this.scrollable.status = true;\n }\n\n\n this.fsScroll\n .component(this.scrollable.name)\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((fsScrollInstance: FsScrollInstance) => {\n this.fsScrollInstance = fsScrollInstance;\n this._fsScrollSubscription = fsScrollInstance\n .subscribe(() => {\n let startLoading = false;\n const operation = this.dataController.operation;\n\n // Initial loading if initialFetch equals false\n if (!this.initialFetch\n && !this.paging.initialized\n && operation !== FsListState.Reload\n ) {\n\n this.dataController.setOperation(FsListState.Load);\n startLoading = true;\n\n } else if (\n operation === FsListState.Reload ||\n operation === FsListState.Filter ||\n operation === FsListState.Sort\n ) {\n startLoading = true;\n } else if (this.paging.initialized && this.paging.hasNextPage) {\n // Loading if content has been scrolled\n startLoading = true;\n this.dataController.setOperation(FsListState.Load);\n this.paging.goNext();\n }\n\n if (startLoading) {\n this.fetch$.next();\n fsScrollInstance.loading();\n }\n });\n\n this.dataController.remoteRowsChange$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n fsScrollInstance.loaded();\n });\n });\n }\n }\n\n /**\n * Update and watch filter changes\n */\n private _initFilters() {\n if (this.filterConfig) {\n return;\n }\n\n // Merge sorting and fake sorting cols\n // Fake sorting cols it's cols which don't represented in table cols, like abstract cols\n const sortValues =\n [\n ...this.sorting.sortingColumns,\n ...this.sorting.fakeSortingColumns,\n ].reduce((acc, column) => {\n\n const sortingItem = {\n name: column.title,\n value: column.name,\n default: this.sorting.sortingColumn && this.sorting.sortingColumn.name === column.name,\n };\n\n acc.push(sortingItem);\n\n return acc;\n }, []);\n\n const sortConfig = this.sorting.sortingColumn\n ? { value: this.sorting.sortingColumn.name, direction: this.sorting.sortingColumn.direction }\n : null;\n\n // Config\n this.filterConfig = {\n persist: this.persist,\n items: this.filters || [],\n savedFilters: this.savedFilters,\n // inline: this.inlineFilters,\n actions: this.actions.actions,\n queryParam: this.queryParam,\n autofocus: this.autoFocus,\n sorts: sortValues,\n sort: sortConfig,\n chips: this.chips,\n init: this.filterInit.bind(this),\n change: this.filterChange.bind(this),\n reload: (this.config.reload ?? true) ? this.reload.bind(this) : null,\n sortChange: this.filterSort.bind(this),\n };\n }\n\n /**\n * Callback when Filter has been initialized\n *\n * @param filters\n */\n private filterInit(filters) {\n if (this.filterInitCb) {\n this.filterInitCb(filters);\n }\n\n this._filtersQuery.next(filters);\n\n this.checkRestoreFilter();\n }\n\n /**\n * Callback when Filter has been changed\n *\n * @param filterQuery\n * @param filterSort\n */\n private filterChange(filterQuery, filterSort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(filterQuery, filterSort);\n }\n\n this._filtersQuery.next(filterQuery);\n\n this.restoreMode = false;\n\n // Restore option\n this.checkRestoreFilter();\n\n if (this.restore && this.restore.reload) {\n this.reload();\n }\n\n this.dataController.setOperation(FsListState.Filter);\n\n // Reset paging for request with correct offset\n this.paging.resetPaging();\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n }\n\n private checkRestoreFilter() {\n // Restore option\n if (this.restore && this.filtersQuery[SHOW_DELETED_FILTERS_KEY]) {\n delete this.filtersQuery[SHOW_DELETED_FILTERS_KEY];\n\n Object.assign(this.filtersQuery, this.restore.query);\n\n this.restoreMode = true;\n }\n }\n\n // Callback when Filter sort has been changed\n private filterSort(filterQuery, filterSort) {\n if (filterSort) {\n this.sorting.sortByColumnWithName(filterSort.value);\n\n const sortDirection = filterSort.direction === 'asc' ? SortingDirection.asc : SortingDirection.desc;\n this.sorting.sortDirection(sortDirection);\n } else {\n // FIXME need to be refactored...\n this.sorting.sortingColumn = void 0;\n this.reload();\n }\n }\n\n private completeFetch([query, response]) {\n if (!this.paging.page) {\n this.paging.page = 1;\n }\n\n if (response.paging) {\n const displayed = (Array.isArray(response.data) && response.data.length) || 0;\n this.paging.updatePaging(\n response.paging,\n displayed,\n this.dataController.operation === FsListState.LoadMore,\n );\n } else if (this.paging.enabled) {\n console.log(\n '%c FsList Warning ',\n 'color: white; background-color: #ffcc0b',\n 'Pagination does not configured properly. ' +\n 'Pagination is enabled, but http response does not contain \"paging\" field. ' +\n 'You have to set \"paging: false\" in config or add \"paging\" field to response.',\n );\n }\n\n /// must be before selection, because seletion use records\n this.dataController.setRowsFromResponse(response.data);\n ///\n\n // Update selection params\n if (this.selection) {\n\n if (this.paging.enabled) {\n this.selection.pageChanged(this.scrollable);\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n } else {\n const count = response.paging && response.paging.records\n || Array.isArray(response.data) && response.data.length;\n\n this.selection.updateVisibleRecordsCount(count);\n this.selection.updateTotalRecordsCount(count);\n }\n\n this.selection.selectedRowsIntersection(this.dataController.visibleRowsData);\n }\n\n if (this.emptyState?.validate && this.emptyStateTemplate) {\n this.emptyStateEnabled = this.emptyState.validate(query, cloneDeep(this.dataController.visibleRowsData));\n }\n\n if (this.afterFetchFn) {\n this.afterFetchFn(query, this.dataController.visibleRowsData);\n }\n\n // case when have removed all results from last page\n if (this.dataController.visibleRows.length === 0\n && this.paging.page > 1\n && this.paging.page > this.paging.pages\n ) {\n this.paging.goLast();\n }\n\n this.fetchComplete$.next();\n this.loading$.next(false);\n }\n\n /**\n * Will do some actions if you removed item and item was last on his own page\n *\n * Ex: if list has 3 pages and on third page you have only one item. And you just deleted this item.\n * You must go to second page, but if it was last page and you can't go back -> just reload\n *\n * @param deletedCount\n */\n private noDataPaginationUpdate(deletedCount) {\n if (!this.dataController.hasData) {\n if (this.paging.page > 1) {\n this.paging.goToPage(this.paging.page - 1 || 1);\n } else {\n this.reload();\n }\n }\n\n this.paging.records -= deletedCount;\n this.paging.updatePagination();\n\n if (this.dataController.hasData && this.selection) {\n this.selection.updateVisibleRecordsCount(this.dataController.visibleRowsCount);\n this.selection.updateTotalRecordsCount(this.paging.records);\n }\n }\n\n /**\n * Temporary solution, will do auto subscribe if was returned Observable.\n *\n * TODO: MOVE THIS PEACE OF CODE TO SPECIAL PLACE\n *\n * @param restoreClickCallback\n * @param row\n */\n private restoreClick(restoreClickCallback, row) {\n const restoreClickResult = restoreClickCallback(row);\n\n if (restoreClickResult instanceof Observable) {\n restoreClickResult\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe({\n next: () => this.reload(),\n error: () => { },\n });\n }\n }\n\n private _updateSortingColumns(): void {\n this.sorting.clearSortableColumns();\n this.columns.columns\n .filter((column) => column.sortable && column.visible)\n .forEach((column) => {\n this.sorting.addSortableColumn(column);\n });\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { FsPersistanceStore, FsStore } from '@firestitch/store';\r\nimport { FsListPersitance } from '../interfaces';\r\n\r\nconst FILTER_STORE_KEY = 'fs-list-persist';\r\n\r\n@Injectable()\r\nexport class PersistanceController extends FsPersistanceStore<FsListPersitance> {\r\n\r\n protected STORE_KEY = FILTER_STORE_KEY;\r\n\r\n constructor(\r\n _store: FsStore,\r\n _route: ActivatedRoute,\r\n ) {\r\n super(_store, _route);\r\n }\r\n\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading],[fsListHeading]' \r\n})\r\nexport class FsListHeadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-subheading],[fsListSubheading]' \r\n})\r\nexport class FsListSubheadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading-container],[fsListHeadingContainer]' \r\n})\r\nexport class FsListHeadingContainerDirective {\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-header]' })\r\nexport class FsListHeaderDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-cell]' })\r\nexport class FsListCellDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-footer]' })\r\nexport class FsListFooterDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-cell],[fs-list-group-header]'\n})\nexport class FsListGroupHeaderDirective extends FsListCellDirective {}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-footer]'\n})\nexport class FsListGroupFooterDirective extends FsListCellDirective {}\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Injectable()\r\nexport class GroupExpandNotifierService implements OnDestroy {\r\n\r\n private _expandStatusChanged$ = new Subject();\r\n private _destroy$ = new Subject();\r\n\r\n get expandStatusChange$() {\r\n return this._expandStatusChanged$.pipe(\r\n takeUntil(this._destroy$)\r\n )\r\n }\r\n public toggleExpandStatus(rowData: any) {\r\n this._expandStatusChanged$.next(rowData);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\r\n\r\n\r\n@Directive({ selector: '[fsListGroupExpandTrigger]' })\r\nexport class FsListGroupExpandTriggerDirective {\r\n\r\n @HostListener('click', ['$event'])\r\n public click(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._expandNotifier.toggleExpandStatus(this.row);\r\n }\r\n\r\n @Input()\r\n public row;\r\n\r\n constructor(private _expandNotifier: GroupExpandNotifierService) {}\r\n}\r\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n QueryList,\n TemplateRef\n} from '@angular/core';\n\n// Directives\nimport { FsListHeaderDirective } from '../header/header.directive';\nimport { FsListCellDirective } from '../cell/cell.directive';\nimport { FsListFooterDirective } from '../footer/footer.directive';\n\nimport { CellConfig } from '../../interfaces';\nimport { FsListGroupHeaderDirective } from '../group-header/group-header.directive';\nimport { FsListGroupFooterDirective } from '../group-footer/group-footer.directive';\nimport { FsListGroupExpandTriggerDirective } from '../group-expand-trigger/group-expand-trigger.directive';\nimport { ColumnAttributes } from '../../models/column-attributes';\n\n\n@Directive({\n selector: 'fs-list-column'\n})\nexport class FsListColumnDirective {\n\n // Header\n @ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeaderDirective, { static: true })\n public headerConfigs: CellConfig;\n\n // Group\n @ContentChild(FsListGroupHeaderDirective, { read: TemplateRef, static: true })\n public groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupHeaderDirective, { static: true })\n public groupHeaderConfigs: CellConfig;\n\n // Group Footer\n @ContentChild(FsListGroupFooterDirective, { read: TemplateRef, static: true })\n public groupFooterTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupFooterDirective, { static: true })\n public groupFooterConfigs: CellConfig;\n\n // Trigger\n @ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true })\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n // Cell\n @ContentChild(FsListCellDirective, { read: TemplateRef, static: true })\n public cellTemplate: TemplateRef<any>;\n\n @ContentChild(FsListCellDirective, { static: true })\n public cellConfigs: CellConfig;\n\n // Footer\n @ContentChild(FsListFooterDirective, { read: TemplateRef, static: true })\n public footerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListFooterDirective, { static: true })\n public footerConfigs: CellConfig;\n\n private readonly _columnAttributes = new ColumnAttributes();\n\n constructor() {}\n\n public get attributes(): ColumnAttributes {\n return this._columnAttributes;\n }\n\n @Input('show')\n public set visible(value: boolean) {\n this._columnAttributes.visible = value;\n }\n\n @Input()\n public set title(value: string) {\n this._columnAttributes.title = value;\n }\n\n @Input()\n public set name(value: string) {\n this._columnAttributes.name = value;\n }\n\n @Input()\n public set customize(value: boolean) {\n this._columnAttributes.customize = value;\n }\n\n @Input()\n public set sortable(value: boolean) {\n this._columnAttributes.sortable = value;\n }\n\n @Input()\n public set sortableDefault(value: boolean) {\n this._columnAttributes.sortableDefault = value;\n }\n\n @Input()\n public set direction(value: 'asc' | 'desc') {\n this._columnAttributes.direction = value;\n }\n\n @Input()\n public set align(value: string) {\n this._columnAttributes.align = value;\n }\n\n @Input()\n public set width(value: string) {\n this._columnAttributes.width = value;\n }\n\n @Input('class')\n public set className(value: string | string[]) {\n this._columnAttributes.className = value;\n }\n\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-empty-state]',\r\n})\r\nexport class FsListEmptyStateDirective {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n\r\nexport const FS_LIST_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-list.default-config');\r\nexport const FS_LIST_CONFIG = new InjectionToken<any[]>('fs-list.config');\r\n","import { Component, ViewContainerRef } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ExternalParamsController } from '@firestitch/filter';\n\nimport { Observable } from 'rxjs';\n\n\n@Component({\n selector: 'fs-list-saved-filters',\n templateUrl: './saved-filters.component.html',\n})\nexport class FsListSavedFiltersComponent {\n constructor(\n private _dialog: MatDialog,\n private _externalParams: ExternalParamsController,\n private _vcRef: ViewContainerRef,\n ) { }\n\n public get savedFiltersEnabled$(): Observable<boolean> {\n return this._externalParams.savedFiltersController.enabled$;\n }\n\n public showManageDialog(): void {\n // this._dialog.open(FsListManageSavedFiltersComponent, {\n // viewContainerRef: this._vcRef,\n // });\n }\n}\n","<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\r\n -->, saved filter\r\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\r\n</ng-container>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\nimport { SortingController } from '../../classes/sorting-controller';\r\nimport { SortingDirection } from '../../models/column.model';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: true,\r\n})\r\nexport class FsStatusComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public paging: PaginationController;\r\n @Input() public sorting: SortingController;\r\n @Input() public rows;\r\n @Input() public scrollable;\r\n\r\n @Input()\r\n @HostBinding('class.first-load')\r\n @HostBinding('class.fs-skeleton-placeholder')\r\n public firstLoad: boolean;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor(private _cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n public ngOnInit() {\r\n this.sorting.sortingChanged$\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public toggleDirection() {\r\n if (this.sorting.sortingColumn.direction === 'asc') {\r\n this.sorting.sortDirection(SortingDirection.desc);\r\n } else {\r\n this.sorting.sortDirection(SortingDirection.asc);\r\n }\r\n }\r\n\r\n public setSortableColumn(column) {\r\n if (this.sorting.sortingColumn !== column) {\r\n this.sorting.sortBy(column);\r\n }\r\n }\r\n\r\n public setLimit(limit) {\r\n this.paging.setLimit(limit);\r\n }\r\n}\r\n","<div class=\"status\">\r\n <small>\r\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\r\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\r\n </ng-container>\r\n <ng-template #emptyResults>\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><ng-container *ngIf=\"(!paging.enabled || scrollable) && paging.displayed > 0\">\r\n <ng-container *ngIf=\"!scrollable; else scrollable\">\r\n Showing\r\n <span *ngIf=\"paging.displayed == 1\">{{ paging.displayed }} result </span>\r\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\r\n </ng-container>\r\n\r\n <ng-template #scrollable>\r\n <span *ngIf=\"paging.records == 1\">{{ paging.records }} result </span>\r\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\r\n\r\n <fs-menu [hidden]=\"!paging.enabled || scrollable\" #limitsMenu>\r\n <ng-template\r\n ngFor\r\n let-limit\r\n [ngForOf]=\"paging.limits\">\r\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\r\n {{ limit }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\r\n <!-- Real sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.sortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\r\n {{ column.title }}\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- Fake sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.fakeSortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n {{ column.title }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <ng-template #sortedBy>\r\n <ng-container *ngIf=\"sorting.sortingColumn\">\r\n sorted by\r\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\r\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\r\n </a>,\r\n </ng-template>\r\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\r\n --></ng-container><!--\r\n --></ng-template>\r\n </small> \r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\nimport { random } from 'lodash-es';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsListLoaderComponent implements OnInit, OnChanges {\r\n\r\n public placeholderWidths = [[], [], []];\r\n public widths = [];\r\n\r\n @Input() public columns;\r\n\r\n @Input()\r\n public loaderLines: number;\r\n\r\n public cols = [];\r\n public rows = [];\r\n\r\n public ngOnInit() {\r\n\r\n this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;\r\n const length = this.cols.length;\r\n for (let w = length; w >= 0; w--) {\r\n this.widths[w] = w ? random(15, 100 / length, false) : 0;\r\n }\r\n\r\n for (let r = 0; r < 3; r++) {\r\n for (let c = 0; c < length; c++) {\r\n this.placeholderWidths[r].push(random(50, 90));\r\n }\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.loaderLines) {\r\n this.rows = new Array(this.loaderLines);\r\n }\r\n }\r\n}\r\n","<table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of rows; let index=index\">\r\n <td *ngFor=\"let col of cols; let column = index\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { merge, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\n\r\n@Component({\r\n selector: 'fs-list-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsPaginationComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public pagination: PaginationController;\r\n @Input() public rows;\r\n\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n public ngOnInit(): void {\r\n merge(\r\n this.pagination.pageChanged$,\r\n this.pagination.pages$,\r\n )\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n","import { AfterViewInit, Directive, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[fsListContentInit]'\n})\nexport class FsListContentInitDirective implements AfterViewInit {\n\n @Input('fsListContentInit')\n public contentInitCallback: Function;\n\n constructor() {}\n\n public ngAfterViewInit() {\n if (this.contentInitCallback) {\n this.contentInitCallback();\n }\n }\n}\n","import { Location } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FilterComponent } from '@firestitch/filter';\nimport { FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, mergeWith } from 'lodash-es';\n\nimport { List } from '../../classes/list-controller';\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';\nimport { FsListColumnDirective } from '../../directives/column/column.directive';\nimport { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';\nimport { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';\nimport {\n FsListAbstractRow,\n FsListAction,\n FsListConfig, FsListPersitance, FsListSelectionConfig,\n FsListTrackByFn,\n FsListTrackByTargetRowFn,\n} from '../../interfaces';\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\nimport { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';\n\n\n@Component({\n selector: 'fs-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n GroupExpandNotifierService,\n PersistanceController,\n ReorderController,\n ],\n})\nexport class FsListComponent implements OnInit, OnDestroy, AfterContentInit {\n\n @HostBinding('class.fs-list') public classFsList = true;\n\n @HostBinding('class.fs-list-no-highlight')\n public noRowsHighlight: boolean;\n\n @Input('config')\n public set config(config: FsListConfig) {\n this._initWithConfig(config);\n }\n\n @Input()\n public loaderLines = 3;\n\n @Output()\n public filtersReady = new EventEmitter<void>();\n\n @ContentChild(FsListHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeadingContainerDirective, { read: TemplateRef })\n public headingContainerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListSubheadingDirective, { read: TemplateRef })\n public subheadingTemplate: TemplateRef<any>;\n\n public list: List;\n public keywordVisible = true;\n\n // Event will fired if action remove: true will clicked\n public rowRemoved = new EventEmitter();\n public firstLoad = true;\n\n private _listColumnDirectives: QueryList<FsListColumnDirective>;\n private _filterRef: FilterComponent;\n private _filterParamsReady = false;\n private _inDialog = !!this._dialogRef || !!this._drawerRef;\n\n private _destroy = new Subject();\n\n @ViewChild(FilterComponent)\n public set filterReference(component) {\n this._filterRef = component;\n this.list.actions.setFilterRef(component);\n\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Set columns to config\n * Create Column Model instances\n */\n @ContentChildren(FsListColumnDirective)\n public set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>) {\n this._listColumnDirectives = listColumnDirectives;\n if (this.list) {\n this.list.tranformTemplatesToColumns(listColumnDirectives);\n }\n }\n\n @ContentChild(FsListEmptyStateDirective, { read: TemplateRef })\n private set _emptyStateTemplate(template: TemplateRef<any>) {\n if (this.list) {\n this.list.emptyStateTemplate = template;\n }\n }\n\n constructor(\n public reorderController: ReorderController,\n @Optional() @Inject(FS_LIST_DEFAULT_CONFIG) private _defaultOptions: FsListConfig,\n @Optional() private _scroll: FsScrollService,\n @Optional() private _dialogRef: MatDialogRef<any>,\n @Optional() private _drawerRef: DrawerRef<any>,\n private _el: ElementRef,\n private _selectionDialog: SelectionDialog,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _groupExpandNotifier: GroupExpandNotifierService,\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _location: Location,\n ) { }\n\n /**\n * Return reference for filter\n */\n public get filterRef(): FilterComponent {\n return this._filterRef;\n }\n\n public set groupEnabled(value: boolean) {\n this.list.groupEnabled(value);\n }\n\n public get groupEnabled() {\n return this.list.dataController.groupEnabled;\n }\n\n public get hasFilterKeyword(): boolean {\n return this.list.filterInput && this.keywordVisible;\n }\n\n public get hasStatus() {\n return this.list.status &&\n (this.list.sorting.isDefined || this.list.paging.enabled) &&\n (\n !this.reorderController.enabled ||\n (this.reorderController.enabled && this.reorderController.status)\n ) &&\n ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);\n }\n\n public get paginatorVisible(): boolean {\n return this.list.paging.enabled\n && !this.firstLoad\n && !this.list.scrollable\n && !this.list.emptyStateEnabled\n && this.list.dataController.visibleRowsCount > 0\n && this.list.paging.pages > 1;\n }\n\n public get filtersQuery(): Record<string, unknown> {\n return this.list.filtersQuery;\n }\n\n public ngAfterContentInit(): void {\n if (this.list.afterInit) {\n this.list.afterInit(this);\n }\n }\n\n public ngOnInit() {\n this._subscribeToRemoveRow();\n this._subscribeToGroupExpandStatusChange();\n }\n\n public ngOnDestroy() {\n if (this.list) {\n this.list.destroy();\n }\n\n this._destroy.next();\n this._destroy.complete();\n }\n\n public nextPage() {\n this.list.paging.goNext();\n }\n\n public prevPage() {\n this.list.paging.goPrev();\n }\n\n public firstPage() {\n this.list.paging.goFirst();\n }\n\n public lastPage() {\n this.list.paging.goLast();\n }\n\n public reload() {\n this.list.reload();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n return this.list.getData(trackBy);\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.list.hasData(trackBy);\n }\n\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.updateData(rows, trackBy);\n }\n\n public replaceRow(\n row: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.replaceData(row, trackBy);\n }\n\n public updateSelectionConfig(config: FsListSelectionConfig) {\n this.list.selection.updateConfig(config);\n }\n\n public resetSelectionActions() {\n this.list.selection.resetActions();\n }\n\n public enableSelection() {\n this.list.selection.enableSelection();\n }\n\n public disableSelection() {\n this.list.selection.disableSelection();\n }\n\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n return this.list.dataController.removeData(data);\n }\n\n public setHeading(heading: string) {\n this.list.heading = heading;\n }\n\n public setSubheading(subheading: string) {\n this.list.subheading = subheading;\n }\n\n public reorderStart() {\n this.reorderController.enableReorder();\n }\n\n public reorderFinish() {\n this.reorderController.disableReorder();\n }\n\n public setActions(actions: FsListAction[]) {\n if (actions) {\n this.list.actions.clearActions();\n this.list.actions.setActions(actions);\n }\n }\n\n public filterReady() {\n this.list.filtersReady$.next();\n this._filterParamsReady = true;\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Update visibility for specific column\n */\n public columnVisibility(name: string, show: boolean) {\n this.columnsVisibility([{ name, show }]);\n }\n\n /**\n * Update visibility for list of specific columns\n */\n public columnsVisibility(columns: { name: string; show: boolean }[]) {\n this.list.columns.updateVisibilityForCols(columns);\n }\n\n private _emitFiltersReadyEvent(): void {\n if (!!this.filterRef && this._filterParamsReady) {\n this.filtersReady.emit();\n\n this.keywordVisible = this.filterRef.hasKeyword;\n this._cdRef.markForCheck();\n }\n }\n\n /**\n * Initialize config for list\n *\n * @param config\n */\n private _initWithConfig(config: FsListConfig) {\n if (this.list) {\n this.list.destroy();\n }\n\n const defaultOpts = this._defaultOptions\n ? cloneDeep(this._defaultOptions)\n : {};\n const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);\n\n if (listConfig.persist !== false) {\n this._restorePersistance(listConfig.persist);\n }\n\n this._updateCustomizeAction(listConfig.actions);\n\n this.list = new List(\n this._el,\n listConfig,\n this._scroll,\n this._selectionDialog,\n this._router,\n this._route,\n this._persistance,\n this._inDialog,\n );\n\n this.noRowsHighlight = !this.list.rowHighlight;\n\n this._waitFirstLoad();\n\n this.reorderController.initWithConfig(\n config.reorder,\n this.list.dataController,\n this.list.actions,\n this.list.selection,\n );\n\n if (this._listColumnDirectives) {\n this.list.tranformTemplatesToColumns(this._listColumnDirectives);\n }\n this._listenSortingChange();\n }\n\n /**\n * Find action with customize flag and re-declare click function for CustomizeColsDialog\n *\n * @param actions\n */\n private _updateCustomizeAction(actions: FsListAction[]) {\n const customizeAction = actions?.find((action) => action.customize);\n\n if (customizeAction) {\n const actionClickFn = customizeAction.click;\n\n customizeAction.click = () => {\n if (actionClickFn) {\n actionClickFn(null);\n }\n\n this._dialog.open(CustomizeColsDialogComponent, {\n data: {\n columns: this.list.columns.columnsForDialog,\n changeFn: this.list.columns.changeFn,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((data) => {\n if (data) {\n this.list.columns.updateVisibilityForCols(data);\n\n this._cdRef.markForCheck();\n }\n });\n };\n }\n }\n\n /**\n * Update sorting in filter\n */\n private _listenSortingChange() {\n this.list.sorting\n .sortingChanged$\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((sort) => {\n this._filterRef.updateSort(sort);\n });\n }\n\n private _subscribeToRemoveRow() {\n this.rowRemoved\n .pipe(takeUntil(this._destroy))\n .subscribe((row) => {\n this.list.dataController.removeData(row);\n });\n }\n\n private _subscribeToGroupExpandStatusChange() {\n if (this.list.dataController.hasGroups) {\n this._groupExpandNotifier.expandStatusChange$\n .pipe(\n takeUntil(this._destroy),\n )\n .subscribe((row) => {\n this.list.dataController.toggleRowGroup(row);\n });\n }\n }\n\n private _waitFirstLoad() {\n this.list.loading$\n .pipe(\n skip(1),\n filter((value) => !value),\n take(1),\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe(() => {\n this.firstLoad = false;\n this._cdRef.markForCheck();\n });\n }\n\n private _configMergeCustomizer(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue;\n }\n }\n\n private _restorePersistance(persistConfig: FsListPersitance) {\n const namespace = getNormalizedPath(this._location);\n this._persistance.setConfig(persistConfig, namespace, this._inDialog);\n }\n}\n","<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-line': list.style ?? 'line' === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport {\n ExternalParamsController,\n IFilterSavedFilter,\n SavedFiltersController,\n} from '@firestitch/filter';\n\nimport { map, tap } from 'rxjs/operators';\n\nimport { ReorderPosition } from '../../classes/reorder-controller';\nimport { FsListConfig } from '../../interfaces/listconfig.interface';\n\n\n@Component({\n templateUrl: './manage-saved-filters.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsListManageSavedFiltersComponent {\n\n public config: FsListConfig;\n\n private _reorderReady = true;\n\n constructor(\n private _externalParams: ExternalParamsController,\n ) {\n this._initList();\n }\n\n private get savedFiltersController(): SavedFiltersController {\n return this._externalParams.savedFiltersController;\n }\n\n private _initList(): void {\n this.config = {\n status: false,\n filterInput: false,\n queryParam: false,\n persist: false,\n paging: false,\n reorder: {\n position: ReorderPosition.Left,\n moveDrop: () => {\n return this._reorderReady;\n },\n done: (reorderData) => {\n this._reorderReady = false;\n\n const filterData = reorderData.map((data) => data.data);\n this.savedFiltersController.order(filterData)\n .pipe(\n tap(() => {\n this._reorderReady = true;\n }),\n )\n .subscribe(() => { });\n },\n },\n rowActions: [\n {\n label: 'Apply',\n click: (filter: IFilterSavedFilter) => {\n this._externalParams.setActiveSavedFilter(filter);\n },\n },\n {\n label: 'Delete',\n remove: {\n title: 'Confirm',\n template: 'Are you sure you want to delete this filter?',\n },\n click: (savedFilter) => {\n return this.savedFiltersController.delete(savedFilter);\n },\n },\n ],\n fetch: (query) => {\n return this.savedFiltersController.load()\n .pipe(\n map((response) => {\n return { data: response };\n }),\n );\n },\n\n };\n }\n}\n","<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fs-list-content]',\n})\nexport class FsListContentDirective { }\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterModule } from '@firestitch/filter';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPromptModule } from '@firestitch/prompt';\nimport { FsScrollModule } from '@firestitch/scroll';\n\nimport { merge } from 'lodash-es';\n\nimport { FsBodyComponent } from './components/body/body.component';\nimport { FsRowActionsComponent } from './components/body/row/actions/actions.component';\nimport { FsCellComponent } from './components/body/row/cell/cell.component';\nimport { FsRowInlineActionComponent } from './components/body/row/inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from './components/body/row/menu-action/menu-action.component';\nimport { FsRowComponent } from './components/body/row/row.component';\nimport { CustomizeColsDialogComponent } from './components/customize-cols/customize-cols.component';\nimport { FsFooterCellComponent } from './components/footer/footer-row/footer-cell/footer-cell.component';\nimport { FsFooterRowComponent } from './components/footer/footer-row/footer-row.component';\nimport { FsFooterComponent } from './components/footer/footer.component';\nimport { FsHeadCellComponent } from './components/head/head-cell/head-cell.component';\nimport { FsHeadComponent } from './components/head/head.component';\nimport { FsListComponent } from './components/list/list.component';\nimport { FsListLoaderComponent } from './components/loader/loader.component';\nimport { FsListManageSavedFiltersComponent } from './components/manage-saved-filters/manage-saved-filters.component';\nimport { FsPaginationComponent } from './components/pagination/pagination.component';\nimport { FsListSavedFiltersComponent } from './components/saved-filters/saved-filters.component';\nimport { FsStatusComponent } from './components/status/status.component';\nimport {\n FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective,\n} from './directives';\nimport { FsListCellDirective } from './directives/cell/cell.directive';\nimport { FsListColumnDirective } from './directives/column/column.directive';\nimport { FsListContentInitDirective } from './directives/content-init/content-init.directive';\nimport { FsListContentDirective } from './directives/content/content.directive';\nimport { FsListDraggableListDirective } from './directives/draggable-list/draggable-list.directive';\nimport { FsListDraggableRowDirective } from './directives/draggable-row/draggable-row.directive';\nimport { FsListEmptyStateDirective } from './directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from './directives/footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from './directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from './directives/group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from './directives/group-header/group-header.directive';\nimport { FsListHeaderDirective } from './directives/header/header.directive';\nimport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './fs-list.providers';\nimport { FsListConfig } from './interfaces';\nimport { ActionLabelPipe } from './pipes';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatRippleModule,\n FsFilterModule,\n FsMenuModule,\n FsScrollModule,\n FsPromptModule,\n MatDialogModule,\n MatTooltipModule,\n FsFileModule,\n FsCommonModule,\n ],\n declarations: [\n // Components\n FsListComponent,\n FsRowComponent,\n FsRowActionsComponent,\n FsRowInlineActionComponent,\n FsRowMenuActionComponent,\n FsCellComponent,\n FsFooterRowComponent,\n FsFooterCellComponent,\n FsStatusComponent,\n FsListLoaderComponent,\n FsListSavedFiltersComponent,\n FsListManageSavedFiltersComponent,\n\n // Internal Components\n FsHeadComponent,\n FsHeadCellComponent,\n FsBodyComponent,\n FsFooterComponent,\n FsPaginationComponent,\n\n // Directives\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListDraggableListDirective,\n FsListDraggableRowDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListContentInitDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n\n // Dialog\n CustomizeColsDialogComponent,\n\n //Pipes\n ActionLabelPipe,\n ],\n exports: [\n FsListComponent,\n FsRowComponent,\n FsCellComponent,\n FsListLoaderComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n ],\n})\nexport class FsListModule {\n public static forRoot(config: FsListConfig = {}): ModuleWithProviders<FsListModule> {\n return {\n ngModule: FsListModule,\n providers: [\n { provide: FS_LIST_CONFIG, useValue: config },\n {\n provide: FS_LIST_DEFAULT_CONFIG,\n useFactory: fsListConfigFactory,\n deps: [FS_LIST_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function fsListConfigFactory(config: FsListConfig) {\n return merge({\n noResults: {\n message: 'No Results Found',\n },\n } as FsListConfig, config);\n}\n","/*\n * Public API Surface of fs-menu\n */\n\n// Modules\nexport { FsListModule } from './app/fs-list.module';\n\n// Providers\nexport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './app/fs-list.providers';\n\n// Components\nexport { FsBodyComponent } from './app/components/body/body.component';\nexport { FsCellComponent } from './app/components/body/row/cell/cell.component';\nexport { FsRowComponent } from './app/components/body/row/row.component';\nexport {\n FsFooterCellComponent,\n} from './app/components/footer/footer-row/footer-cell/footer-cell.component';\nexport { FsFooterRowComponent } from './app/components/footer/footer-row/footer-row.component';\nexport { FsFooterComponent } from './app/components/footer/footer.component';\nexport { FsHeadCellComponent } from './app/components/head/head-cell/head-cell.component';\nexport { FsHeadComponent } from './app/components/head/head.component';\nexport { FsListComponent } from './app/components/list/list.component';\nexport { FsListLoaderComponent } from './app/components/loader/loader.component';\nexport { FsPaginationComponent } from './app/components/pagination/pagination.component';\nexport { FsStatusComponent } from './app/components/status/status.component';\n\n// Directives\nexport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from './app/directives';\nexport { FsListCellDirective } from './app/directives/cell/cell.directive';\nexport { FsListColumnDirective } from './app/directives/column/column.directive';\nexport { FsListContentDirective } from './app/directives/content/content.directive';\nexport { FsListEmptyStateDirective } from './app/directives/empty-state/empty-state.directive';\nexport { FsListFooterDirective } from './app/directives/footer/footer.directive';\nexport { FsListGroupExpandTriggerDirective } from './app/directives/group-expand-trigger/group-expand-trigger.directive';\nexport { FsListGroupFooterDirective } from './app/directives/group-footer/group-footer.directive';\nexport { FsListGroupHeaderDirective } from './app/directives/group-header/group-header.directive';\nexport { FsListHeaderDirective } from './app/directives/header/header.directive';\n\n// Models\nexport { List } from './app/classes/list-controller';\nexport { PaginationController } from './app/classes/pagination-controller';\nexport { ReorderController, ReorderPosition } from './app/classes/reorder-controller';\nexport { SelectionChangeType, SelectionController } from './app/classes/selection-controller';\nexport { SortingController } from './app/classes/sorting-controller';\nexport { Column, SortingDirection } from './app/models/column.model';\nexport { RowAction } from './app/models/row-action.model';\nexport { StyleConfig } from './app/models/styleConfig.model';\n\n// Interfaces\nexport { CellConfig } from './app/interfaces/cellconfig.interface';\nexport {\n FsListAbstractRow, FsListAction, FsListActionSelected, FsListCellConfig, FsListColumn, FsListColumnChangeFn, FsListColumnConfig, FsListColumnLoadFn, FsListConfig, FsListEmptyStateConfig, FsListFetchFn, FsListFetchOptions, FsListFetchSubscription, FsListFooterConfig, FsListGroupConfig, FsListHeaderConfig,\n FsListNoResultsConfig,\n FsListReorderConfig, FsListReorderData, FsListReorderDoneCallback, FsListReorderMoveInGroupCallback, FsListReorderMovedCallback, FsListRestoreConfig, FsListRowAction, FsListRowActionFile, FsListRowActionFileFn, FsListRowActionGroup, FsListRowActionLink,\n FsListRowActionLinkFn, FsListRowClassOptions, FsListScrollableConfig,\n FsListSelectionConfig,\n FsListSortsConfig, FsListStateValidationFn, FsListTrackByFn,\n FsListTrackByTargetRowFn,\n FsPaging,\n} from './app/interfaces/listconfig.interface';\nexport { QueryOffsetStrategy, QueryPageStrategy } from './app/interfaces/pagination.interface';\nexport { SortingChangeEvent } from './app/interfaces/sorting-change-event.interface';\n\n// Enums\nexport { ActionType } from './app/enums/button-type.enum';\nexport { PaginationStrategy } from './app/enums/pagination-strategy.enum';\nexport { RowType } from './app/enums/row-type.enum';\nexport { FsListState } from './app/enums/state.enum';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ReorderPosition","BehaviorSubject","Subject","Observable","takeUntil","i0","Injectable","ActionType","i1.ReorderController","Directive","Input","i1","Component","ChangeDetectionStrategy","HostBinding","EventEmitter","i2","i3","i4","i5","Output","Pipe","i5.ActionLabelPipe","take","i2.FsRowInlineActionComponent","i4.FsRowMenuActionComponent","i6","i7.ActionLabelPipe","i1.FsListDraggableListDirective","i3.FsCellComponent","i4.FsRowActionsComponent","ViewChildren","i2.FsListDraggableListDirective","TemplateRef","ViewContainerRef","i1.FsRowComponent","i3.FsListDraggableRowDirective","ViewChild","ContentChild","MAT_DIALOG_DATA","Inject","i1.FsFooterCellComponent","i1.FsFooterRowComponent","SelectionChangeType","_get","filter","i2.FsHeadCellComponent","isString","SortingDirection","isObject","isBoolean","FsListState","tap","skip","merge","isNumber","RowType","isFunction","PaginationStrategy","distinctUntilChanged","map","shareReplay","from","cloneDeep","ItemType","combineLatest","debounceTime","switchMap","mapTo","of","catchError","EMPTY","FsPersistanceStore","i1.GroupExpandNotifierService","HostListener","ContentChildren","InjectionToken","i1.FsListSavedFiltersComponent","random","mergeWith","getNormalizedPath","i6.GroupExpandNotifierService","i7","i8.PersistanceController","i9","FilterComponent","i10","i11.FsStatusComponent","i12.FsHeadComponent","i13.FsBodyComponent","i14.FsFooterComponent","i15.FsListLoaderComponent","i16.FsPaginationComponent","i17.FsListContentInitDirective","i18.FsListDraggableListDirective","i19.FsListFooterDirective","Optional","i2.FsListComponent","i5.FsListColumnDirective","i6.FsListCellDirective","CommonModule","RouterModule","MatButtonModule","MatIconModule","MatMenuModule","MatProgressSpinnerModule","MatCheckboxModule","MatRippleModule","FsFilterModule","FsMenuModule","FsScrollModule","FsPromptModule","MatDialogModule","MatTooltipModule","FsFileModule","FsCommonModule","NgModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA;;;;;;;;;;;;;IAagF;IAChF;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC,EAAA;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,IAAA,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEc,SAAA,SAAS,CAAC,CAAC,EAAE,CAAC,EAAA;IAC1B,IAAA,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;IACrC,QAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAC9F,IAAA,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,IAAA,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG,YAAA;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAA;IAC3C,QAAA,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjD,YAAA,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,SAAA;IACD,QAAA,OAAO,CAAC,CAAC;IACb,KAAC,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;IAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,SAAA;IACL,IAAA,OAAO,CAAC,CAAC;IACb,CAAC;IAEK,SAAU,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAA;IACpD,IAAA,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;IAAE,QAAA,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAC1H,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAAE,YAAA,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAAE,gBAAA,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,IAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAEe,SAAA,OAAO,CAAC,UAAU,EAAE,SAAS,EAAA;IACzC,IAAA,OAAO,UAAU,MAAM,EAAE,GAAG,EAAA,EAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;IAEe,SAAA,UAAU,CAAC,WAAW,EAAE,aAAa,EAAA;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;IAEK,SAAU,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAA;IACvD,IAAA,SAAS,KAAK,CAAC,KAAK,EAAA,EAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAA,EAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAC5G,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAA;IACrD,QAAA,SAAS,SAAS,CAAC,KAAK,EAAA,EAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAAE,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAAE,SAAA,EAAE;IAC3F,QAAA,SAAS,QAAQ,CAAC,KAAK,EAAA,EAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAAE,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAAE,SAAA,EAAE;IAC9F,QAAA,SAAS,IAAI,CAAC,MAAM,EAAA,EAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IAC9G,QAAA,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,KAAC,CAAC,CAAC;IACP,CAAC;IAEe,SAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAA;IACrC,IAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAA,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAAE,YAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAA,EAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE,EAAA;IACZ,QAAA,IAAI,CAAC;IAAE,YAAA,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC9D,QAAA,OAAO,CAAC;gBAAE,IAAI;IACV,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;IAAE,oBAAA,OAAO,CAAC,CAAC;IAC7J,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAAE,oBAAA,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,gBAAA,QAAQ,EAAE,CAAC,CAAC,CAAC;IACT,oBAAA,KAAK,CAAC,CAAC;IAAC,oBAAA,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;IAC9B,oBAAA,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAAC,wBAAA,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,oBAAA,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAAC,wBAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,wBAAA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;IACjD,oBAAA,KAAK,CAAC;IAAE,wBAAA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAAC,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;IACjD,oBAAA;IACI,wBAAA,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;IAAE,yBAAA;IAC5G,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;IAAE,yBAAA;IACtF,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;IAAE,yBAAA;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,4BAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;IAAE,yBAAA;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAE,4BAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;IAC9B,iBAAA;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9B,aAAA;IAAC,YAAA,OAAO,CAAC,EAAE;IAAE,gBAAA,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;IAAE,aAAA;IAAS,oBAAA;IAAE,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAE,aAAA;IAC1D,QAAA,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAAE,YAAA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAA,EAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEa,SAAA,YAAY,CAAC,CAAC,EAAE,CAAC,EAAA;QAC7B,KAAK,IAAI,CAAC,IAAI,CAAC;IAAE,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAAE,YAAA,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;IAEK,SAAU,QAAQ,CAAC,CAAC,EAAA;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAA,IAAI,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAA,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;IAC1C,YAAA,IAAI,EAAE,YAAA;IACF,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;IACF,IAAA,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;IAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;IACvB,IAAA,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAA,IAAI,CAAC,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC;IACjB,IAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;IAAE,YAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9E,KAAA;IACD,IAAA,OAAO,KAAK,EAAE;IAAE,QAAA,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAE,KAAA;IAC/B,YAAA;YACJ,IAAI;IACA,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAAE,gBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,SAAA;IACO,gBAAA;IAAE,YAAA,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;IAAE,SAAA;IACpC,KAAA;IACD,IAAA,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,QAAQ,GAAA;IACpB,IAAA,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IAC9C,QAAA,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAA,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,cAAc,GAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAAE,QAAA,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAA,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAA;IACxC,IAAA,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;IAAE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;IACpB,gBAAA,IAAI,CAAC,EAAE;IAAE,oBAAA,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,aAAA;IACJ,SAAA;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,CAAC;IAEK,SAAU,OAAO,CAAC,CAAC,EAAA;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACvF,IAAA,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAC9D,IAAA,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAc,EAAA,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAI,EAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC1I,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAE,KAAA;IAAC,IAAA,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAAE,KAAA,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACxH,IAAA,SAAS,OAAO,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IAClD,IAAA,SAAS,MAAM,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IAClD,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;IAAE,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;IAEK,SAAU,gBAAgB,CAAC,CAAC,EAAA;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAA,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5I,IAAA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAI,EAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;IAEK,SAAU,aAAa,CAAC,CAAC,EAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnC,IAAA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAI,EAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAChK,IAAA,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,EAAI,EAAA,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;IAEe,SAAA,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAA;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;IAAE,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAAE,KAAA;IAAM,SAAA;IAAE,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IAAE,KAAA;IAC/G,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;IACnD,IAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;IACd,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;IAEI,SAAU,YAAY,CAAC,GAAG,EAAA;IAC5B,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;IAAE,QAAA,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;IAAE,YAAA,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAAE,gBAAA,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzI,IAAA,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEK,SAAU,eAAe,CAAC,GAAG,EAAA;IAC/B,IAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;IAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;IAC3D,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;IACnL,IAAA,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;IAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;QAClE,IAAI,IAAI,KAAK,GAAG;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACxE,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;IAClL,IAAA,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9G;;AC9NYA,qCAGX;IAHD,CAAA,UAAY,eAAe,EAAA;IACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACjB,CAAC,EAHWA,uBAAe,KAAfA,uBAAe,GAG1B,EAAA,CAAA,CAAA,CAAA;IAED,IAAY,eAIX,CAAA;IAJD,CAAA,UAAY,eAAe,EAAA;IACzB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACnB,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA,CAAA;AAGD,QAAA,iBAAA,kBAAA,YAAA;IAwBE,IAAA,SAAA,iBAAA,GAAA;YARQ,IAAA,CAAA,SAAS,GAAG,IAAIC,oBAAe,CAAU,KAAK,CAAC,CAAC;YAChD,IAAA,CAAA,wBAAwB,GAAG,IAAIA,oBAAe,CAAC,KAAK,CAAC,CAAC;YACtD,IAAA,CAAA,iBAAiB,GAAG,IAAIA,oBAAe,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAA,CAAA,SAAS,GAAG,IAAIA,oBAAe,CAAyB,IAAI,CAAC,CAAC;YAC9D,IAAA,CAAA,SAAS,GAAG,IAAIA,oBAAe,CAAyB,IAAI,CAAC,CAAC;IAE9D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIC,YAAO,EAAE,CAAC;SAElB;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAClC;IAED,QAAA,GAAA,EAAA,UAAmB,KAAK,EAAA;IACtB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3B,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;aAC9F;;;IANA,KAAA,CAAA,CAAA;IAQD,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAAzB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAA9B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,oBAAoB,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;IAAjC,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;aACjD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;aAC9C;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;aAC1C;;;IAAA,KAAA,CAAA,CAAA;QAEM,iBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UACL,IAAyB,EACzB,cAA8B,EAC9B,iBAAoC,EACpC,mBAAwC,EAAA;YAJnC,IA6DN,KAAA,GAAA,IAAA,CAAA;;YAvDC,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAM;IAAE,SAAA;YAErB,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC;IAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAIF,uBAAe,CAAC,IAAI,CAAC,CAAC;IAEzD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAClB,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,SAAA;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,SAAA;;IAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;IAElC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEtC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;IAEhD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;gBAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,SAAA;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;gBACnD,iBAAiB,CAAC,gBAAgB,CAChC;IACE,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;oBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,gBAAA,OAAO,EAAE,KAAK;IACd,gBAAA,KAAK,EAAE,YAAA;wBACL,KAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;IACD,gBAAA,QAAQ,EAAE,YAAA;wBACR,OAAO,KAAI,CAAC,eAAe,CAAC;qBAC7B;IACF,aAAA,CACF,CAAC;gBAEF,iBAAiB,CAAC,oBAAoB,CAAC;IACnC,gBAAA,KAAK,EAAE,MAAM;IACb,gBAAA,OAAO,EAAE,KAAK;IACd,gBAAA,KAAK,EAAE,YAAA;wBACL,KAAI,CAAC,cAAc,EAAE,CAAC;qBACvB;IACD,gBAAA,QAAQ,EAAE,YAAA;wBACR,OAAO,KAAI,CAAC,eAAe,CAAC;qBAC7B;IACF,aAAA,CACF,CAAA;IACF,SAAA;SACF,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;YAAA,IAqBN,KAAA,GAAA,IAAA,CAAA;YApBC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;IAChH,YAAA,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAE3C,YAAA,IAAI,aAAa,IAAI,aAAa,YAAYG,eAAU,EAAE;oBACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAE5B,aAAa;IACV,qBAAA,IAAI,CACHC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,qBAAA,SAAS,CAAC,YAAA;IACT,oBAAA,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,KAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,iBAAC,CAAC,CAAC;oBAEL,OAAO;IACR,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YAAA,IAqBN,KAAA,GAAA,IAAA,CAAA;IApBC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;IACxF,YAAA,IAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAE7C,YAAA,IAAI,aAAa,IAAI,aAAa,YAAYD,eAAU,EAAE;oBACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAE5B,aAAa;IACV,qBAAA,IAAI,CACHC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,qBAAA,SAAS,CAAC,YAAA;IACT,oBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,KAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,iBAAC,CAAC,CAAC;oBAEL,OAAO;IACR,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACL,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5D,SAAA;SACF,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;IACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;SAC/C,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;IACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;SAC/C,CAAA;QAEO,iBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAsB,EAAA;IACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B,CAAA;QAEO,iBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAsB,EAAA;IACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B,CAAA;;;yIA7NU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAC,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6IAAjB,iBAAiB,EAAA,CAAA,CAAA;sHAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;sBAD7BC,aAAU;;;AC3BCC,gCAMX;IAND,CAAA,UAAY,UAAU,EAAA;IACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;IACtB,CAAC,EANWA,kBAAU,KAAVA,kBAAU,GAMrB,EAAA,CAAA,CAAA;;ACED,QAAA,SAAA,kBAAA,YAAA;IAqBE,IAAA,SAAA,SAAA,CAAY,MAAgB,EAAA;IAAhB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAgB,GAAA,EAAA,CAAA,EAAA;IAXrB,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;IAEX,QAAA,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;IAC1B,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;IAML,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;IAGzC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,SAAA;SACF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;;;IAAA,KAAA,CAAA,CAAA;QAEM,SAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,KAAU,EAAA;YAAhB,IAwCN,KAAA,GAAA,IAAA,CAAA;;IAvCC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;IAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,GAAGA,kBAAU,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,mCAAIA,kBAAU,CAAC,KAAK,CAAC;IACpH,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,0CAC9B,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,IAAI,SAAS,CAAC,MAAM,CAAC,CAArB,EAAqB,CAAC,CAAC;;IAI3C,QAAA,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,UAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAoB,EAAA;IAApB,YAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAAoB,GAAA,IAAA,CAAA,EAAA;IACnD,YAAA,OAAO,KAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACrE,SAAC,CAAC;IAEF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YAE1B,IAAI,KAAK,CAAC,IAAI,EAAE;IACd,YAAA,IAAI,CAAC,UAAU,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAC,IAAI,CAAE,CAAC;IAEpC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;IAC1B,gBAAA,IAAM,UAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAA;IAC7C,oBAAA,UAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAClC,iBAAC,CAAC;IACH,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAEzB,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,EAAA;IAC3D,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEf,gBAAA,OAAO,GAAG,CAAC;iBACZ,EAAE,EAAE,CAAC,CAAC;IACR,SAAA;SACF,CAAA;IAEM,IAAA,SAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAG,EAAE,KAAK,EAAA;YAC/B,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;IAC7B,gBAAA,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,aAAC,CAAC,CAAC;IAEH,YAAA,IAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAEzD,IAAI,CAAC,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,OAAO,CAAA,EAAA,CAAC,CAAC;IACjF,SAAA;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE;gBACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,SAAA;SACF,CAAA;QAEM,SAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,GAAG,EAAA;IACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;IACR,SAAA;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;IAC7B,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,aAAC,CAAC,CAAC;IACJ,SAAA;iBAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;IAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAA;IACF,SAAA;SACF,CAAA;QAEO,SAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAA;;YAE3D,KAAK,CAAC,eAAe,EAAE,CAAC;;IAGxB,QAAA,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,SAAS,EAAE,CAAC;IAC3B,SAAA;IAED,QAAA,IAAI,OAAO,EAAE;;gBAEX,OAAO,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,SAAA;SACF,CAAA;QACF,OAAA,SAAA,CAAA;IAAA,CAAA,EAAA;;ICnHD,IAAA,4BAAA,kBAAA,YAAA;QA0BE,SACU,4BAAA,CAAA,MAAyB,EACzB,KAAa,EACb,iBAA6B,EAC7B,kBAAqC,EACrC,SAAoB,EAAA;IAJpB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IACzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;IACb,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAY;IAC7B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;IACrC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;;YArBtB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAA,GAAS,CAAC;IAEpC,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;IAGxB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAIL,YAAO,EAAQ,CAAC;IAClC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAQ,CAAC;IAIhC,QAAA,IAA4B,CAAA,4BAAA,GAAkC,EAAE,CAAC;IACjE,QAAA,IAAuB,CAAA,uBAAA,GAAkC,EAAE,CAAC;IAC5D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAE,CAAC;SAQ7B;IAEL,IAAA,MAAA,CAAA,cAAA,CAAW,4BAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAACE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aACzD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,4BAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aACvD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,4BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;IAAxB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aAChD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,4BAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;aACpF;;;IAAA,KAAA,CAAA,CAAA;QAEM,4BAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,GAAgC,EAAA;IAC3D,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7C,CAAA;QAEM,4BAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,GAAgC,EAAA;YAC9D,IAAM,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE3D,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClD,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,4BAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,gBAA6B,EAAA;YAAvC,IAoCN,KAAA,GAAA,IAAA,CAAA;YAnCC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,OAAO;IACR,SAAA;IAED,QAAA,IACE,IAAI,CAAC,kBAAkB,CAAC,aAAa;mBAClC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAC9D;IACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;IACzC,SAAA;IAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE1D,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAE1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAE5B,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC;YAC/D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEvD,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAA;IAC3B,YAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,YAAA,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,YAAA,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACzF,SAAC,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAClE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAEtE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB,CAAA;IAGD;;;;IAIG;QACI,4BAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAK,EAAA;IACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,IAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACjD,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,gCAAgC,EAAE;gBACzC,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,IAAI,GAAM,KAAK,CAAC,OAAO,GAAA,IAAI,CAAC;gBACxE,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,GAAG,GAAM,KAAK,CAAC,OAAO,GAAA,IAAI,CAAC;IACxE,SAAA;;IAGD,QAAA,IAAM,4BAA4B,GAChC,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACpD,eAAA,SAAS,CAAC,OAAO;;IAEhB,eAAA,IAAI,CAAC,aAAqB,CAAC,OAAO,CAAC;YAGzC,IAAI,CAAC,4BAA4B,EAAE;gBACjC,IAAI,SAAS,KAAK,IAAI,EAAE;oBACtB,IAAI,SAAS,CAAC,WAAW,EAAE;IACzB,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;wBAC9B,IAAI,IAAI,CAAC,wBAAwB,EAAE;4BACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACnE,qBAAA;IACF,iBAAA;IAAM,qBAAA;wBACL,IAAI,IAAI,CAAC,wBAAwB,EAAE;4BACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChE,qBAAA;IACF,iBAAA;IACF,aAAA;;gBAGD,IAAI,IAAI,CAAC,wBAAwB,EAAE;IACjC,gBAAA,IAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;oBAClF,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,GAAM,SAAS,GAAA,IAAI,CAAC;IAC5D,aAAA;IACF,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,4BAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;YAAA,IAqDN,KAAA,GAAA,IAAA,CAAA;IApDC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;IAEvD,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa;IACpC,eAAA,IAAI,CAAC,2BAA2B,KAAK,IAAI,CAAC,sBAAsB,EAAE;IAErE,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CACnC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CACnD,CAAC;IACH,SAAA;YAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;IAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAA;IACb,gBAAA,IAAI,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACxC,oBAAA,IAAM,MAAM,GAAG,KAAI,CAAC,kBAAkB,CAAC,YAAY,CACjD,KAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CACnD,CAAC;IAEF,oBAAA,KAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClC,iBAAA;IACH,aAAC,CAAC,CAAC;IACJ,SAAA;;;YAID,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,IAAI,IAAI,CAAC,wBAAwB,EAAE;IACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;IAEvC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACtC,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjF,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAC9C,SAAA;IAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACnC,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IACxC,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;YAElC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAEzE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB,CAAA;IAED;;IAEG;IACK,IAAA,4BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B,CAAA;IAED;;IAEG;IACK,IAAA,4BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;YAAA,IAcP,KAAA,GAAA,IAAA,CAAA;IAbC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAC/G,aAAA,MAAM,CAAC,UAAC,GAAU,EAAE,UAAU,EAAE,KAAK,EAAA;IACpC,YAAA,IAAM,OAAO,GAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAE5C,YAAA,IAAI,UAAU,KAAK,KAAI,CAAC,iBAAiB,EAAE;IACzC,gBAAA,KAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACpC,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,aAAA;IAED,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElB,YAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAgC,CAAC;SACzC,CAAA;IAED;;IAEG;IACK,IAAA,4BAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;YACN,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,EAAO,EAAE,KAAK,EAAA;gBAC5C,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC/C,YAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAClB,YAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,YAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,YAAA,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,SAAC,CAAC,CAAC;SACJ,CAAA;IAED;;IAEG;IACK,IAAA,4BAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;YACN,IAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;YACjE,IAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;IAE5D,QAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC3B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAM,IAAI,CAAC,KAAK,GAAA,IAAI,CAAC;gBACnC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAM,IAAI,CAAC,IAAI,GAAA,IAAI,CAAC;gBACjC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAM,IAAI,CAAC,GAAG,GAAA,IAAI,CAAC;IAC/B,YAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAE9B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAE7E,YAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;IACnC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,SAAA;IAAM,aAAA;;gBAEL,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAElE,IAAM,aAAa,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,uBAAuB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC;gBAC3D,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzD,YAAY,CAAC,KAAK,CAAC,IAAI,GAAM,IAAI,CAAC,IAAI,GAAA,IAAI,CAAC;gBAC3C,YAAY,CAAC,KAAK,CAAC,GAAG,GAAM,IAAI,CAAC,GAAG,GAAA,IAAI,CAAC;gBAEzC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAI,aAAa,GAAiB,iBAAA,CAAC,CAAC;gBAE1E,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxD,YAAA,IAAI,CAAC,gCAAgC,GAAG,YAAY,CAAC;IACtD,SAAA;SAEF,CAAA;IAED;;;;IAIG;QACK,4BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,KAAK,EAAA;YAC9B,IAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;YACrC,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;YACxC,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtD,IAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAErC,YAAA,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;oBACd,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB;2BAC1E,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;wBACnF,SAAS,GAAG,CAAC,CAAC;IACf,iBAAA;IACF,aAAA;IACF,SAAA;IAED,QAAA,OAAO,SAAS,CAAC;SAClB,CAAA;IAED;;;;IAIG;QACK,4BAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,KAAK,EAAA;IACzB,QAAA,IAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;IAChD,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB;iBAC9C,GAAG,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,GAAG,CAAL,EAAK,CAAC;iBACjB,MAAM,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,WAAW,CAAA,EAAA,CAAC,CAAC;;IAGhC,QAAA,IAAI,CAAC,kBAAkB;iBACpB,cAAc;iBACd,QAAQ,CACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACjB,YAAY,EACZ,IAAI,CAAC,eAAe,CACrB,CAAC;;IAGJ,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAE9B,IAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBACjE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;IAEnD,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;gBAClF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;gBACrD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7C,SAAA;IAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;SAC7B,CAAA;IAED;;IAEG;IACK,IAAA,4BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;IACN,QAAA,IAAM,cAAc,GAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7F,QAAA,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACrD,CAAC,OAAO,CAAC,UAAC,IAAS,EAAE,KAAK,EAAA;IACzB,YAAA,IAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC1C,YAAA,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,GAAM,IAAI,CAAC,KAAK,GAAA,IAAI,CAAC;IACxD,SAAC,CAAC,CAAC;SACJ,CAAA;QAEO,4BAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,UAAmB,EAAA;YAAvC,IAUP,KAAA,GAAA,IAAA,CAAA;YATC,IAAI,UAAU,YAAYD,eAAU,EAAE;IACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;gBAE/C,UAAU;IACP,iBAAA,IAAI,CAACC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,iBAAA,SAAS,CAAC,YAAA;IACT,gBAAA,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;IAChD,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;IAEO,IAAA,4BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;YAAA,IASP,KAAA,GAAA,IAAA,CAAA;IARC,QAAA,IAAI,CAAC,4BAA4B;iBAC9B,OAAO,CAAC,UAAC,GAAgC,EAAA;;IACxC,YAAA,IAAM,aAAa,GAAG,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAE/F,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;IACrC,gBAAA,KAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,aAAA;IACH,SAAC,CAAC,CAAC;SACN,CAAA;IAED;;;;IAIG;QACK,4BAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,CAAC,EAAA;IAChB,QAAA,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE;gBAC1C,IAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;IACrD,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC/B,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChC,aAAA;gBAED,CAAC,CAAC,cAAc,EAAE,CAAC;IACpB,SAAA;SACF,CAAA;;;oJAlZU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,aAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6HAA5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;sBAHxCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,uBAAuB;qBAClC,CAAA;2PAsBS,KAAK,EAAA,CAAA;0BADZC,QAAK;2BAAC,MAAM,CAAA;;;ACdf,QAAA,eAAA,kBAAA,YAAA;IALA,IAAA,SAAA,eAAA,GAAA;IAO2C,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;IAEtB,QAAA,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;IAM5C,QAAA,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;IAGrB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIR,YAAO,EAAQ,CAAC;SAoFzC;IAlFQ,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;YAEL,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9C,SAAA;SACF,CAAA;QAEM,eAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAsB,EAAA;;YACvC,IAAI,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,OAAK,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAA,EAAE;gBACtE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9C,SAAA;YAED,IAAI,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,OAAK,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAA,EAAE;gBAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,SAAA;SACF,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEvC,IAAI,IAAI,CAAC,GAAG,EAAE;IACZ,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;oBACpB,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9C,aAAA;qBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;oBACrD,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IACjD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/C,aAAA;IAED,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;oBACpB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBACvC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ;yBAC/C,GAAG,CAAC,UAAC,KAAK,EAAK,EAAA,OAAA,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;IAC/B,aAAA;IAAM,iBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IACjC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC9C,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC7C,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;yBACtD,GAAG,CAAC,UAAC,KAAK,EAAK,EAAA,OAAA,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;IAC/B,aAAA;IACF,SAAA;YAED,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/C,SAAA;SACF,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;;YACN,IAAI,MAAA,IAAI,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;IACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACjF,SAAA;iBAAM,IAAI,MAAA,IAAI,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;IAClC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACjF,SAAA;IAAM,aAAA;gBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAC9C,SAAA;SACF,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;YAAA,IAUP,KAAA,GAAA,IAAA,CAAA;YATC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS;IACf,iBAAA,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,UAAC,MAAM,EAAA;IAChB,gBAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;IACrC,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;;;uIAhGU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAC,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAf,eAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,yOCpB5B,qOAKA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAN,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDea,eAAe,EAAA,UAAA,EAAA,CAAA;sBAL3BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,WAAW;IACrB,oBAAA,WAAW,EAAE,uBAAuB;wBACpC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;kCAG0C,MAAM,EAAA,CAAA;0BAA9CC,cAAW;2BAAC,mBAAmB,CAAA;oBAEC,IAAI,EAAA,CAAA;0BAApCA,cAAW;2BAAC,WAAW,CAAA;oBAER,MAAM,EAAA,CAAA;0BAArBJ,QAAK;oBACU,GAAG,EAAA,CAAA;0BAAlBA,QAAK;oBACU,QAAQ,EAAA,CAAA;0BAAvBA,QAAK;;;IEVR,IAAA,0BAAA,kBAAA,YAAA;IALA,IAAA,SAAA,0BAAA,GAAA;IAWS,QAAA,IAAA,CAAA,OAAO,GAAG,IAAIK,eAAY,EAAE,CAAC;IAG7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAIA,eAAY,EAAqB,CAAC;SAS3D;QAPQ,0BAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAK,EAAA;IACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAA;QAEM,0BAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAK,EAAA;IACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B,CAAA;;;kJAjBU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAV,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAA1B,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qKClBvC,6zIA4HA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6IAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAK,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAd,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHD1Ga,0BAA0B,EAAA,UAAA,EAAA,CAAA;sBALtCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,2BAA2B;IACrC,oBAAA,WAAW,EAAE,gCAAgC;wBAC7C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;kCAIQ,MAAM,EAAA,CAAA;0BADZH,QAAK;oBAIC,OAAO,EAAA,CAAA;0BADbU,SAAM;oBAIA,UAAU,EAAA,CAAA;0BADhBA,SAAM;;;IEpBT,IAAA,eAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,eAAA,GAAA;;IACS,IAAA,eAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,KAAK,EAAE,GAAQ,EAAA;IAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;IAC/B,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,SAAA;IAED,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;;;uIAPU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAf,aAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qIAAf,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;sHAAf,eAAe,EAAA,UAAA,EAAA,CAAA;sBAD3BgB,OAAI;uBAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;;;ICY7B,IAAA,wBAAA,kBAAA,YAAA;IAoBE,IAAA,SAAA,wBAAA,CACU,KAAsB,EAAA;IAAtB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;IANzB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAIN,eAAY,EAAE,CAAC;IAGhC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,eAAY,EAAE,CAAC;SAIjC;QAEE,wBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAK,EAAA;IACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,CAAA;QAEM,wBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAK,EAAA;IACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,CAAA;IAEM,IAAA,wBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;IACL,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;SACxB,CAAA;;;gJApCU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,eAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAAN,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,6MCjBrC,ksBAsBA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAW,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,aAAA,EAAAI,eAAA,EAAA,EAAA,eAAA,EAAAjB,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDLa,wBAAwB,EAAA,UAAA,EAAA,CAAA;sBALpCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,yBAAyB;IACnC,oBAAA,WAAW,EAAE,8BAA8B;wBAC3C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;uHAIQ,GAAG,EAAA,CAAA;0BADTH,QAAK;oBAIC,IAAI,EAAA,CAAA;0BADVA,QAAK;oBAIC,KAAK,EAAA,CAAA;0BADXA,QAAK;oBAIC,IAAI,EAAA,CAAA;0BADVA,QAAK;oBAIC,UAAU,EAAA,CAAA;0BADhBU,SAAM;oBAIA,SAAS,EAAA,CAAA;0BADfA,SAAM;;;IEXT,IAAA,qBAAA,kBAAA,YAAA;IA4BE,IAAA,SAAA,qBAAA,CACU,OAAiB,EAAA;IAAjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAU;IApBpB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IAGpB,QAAA,IAAU,CAAA,UAAA,GAAgB,EAAE,CAAC;IAM7B,QAAA,IAAc,CAAA,cAAA,GAAgB,EAAE,CAAC;IAGjC,QAAA,IAAgB,CAAA,gBAAA,GAAgB,EAAE,CAAC;IAKlC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIlB,YAAO,EAAE,CAAC;SAI7B;QAEE,qBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,MAAiB,EAAE,GAAQ,EAAE,KAAU,EAAE,OAAQ,EAAA;YAA7D,IAqBN,KAAA,GAAA,IAAA,CAAA;YApBC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjB,YAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;IACtC,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,aAAA;IAAM,iBAAA;IACL,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IACnB,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;IAC1B,oBAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;IAChC,oBAAA,SAAS,EAAE,IAAI;qBAChB,CAAC;IACC,qBAAA,IAAI,CACHqB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,qBAAA,SAAS,CAAC,YAAA;IACT,oBAAA,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,iBAAC,CAAC,CAAC;IACN,aAAA;IACF,SAAA;IAAM,aAAA;IACL,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,qBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAK,EAAA;IACpB,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;IAED;;;;;;;IAOG;QACK,qBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAA;YAAvC,IAaP,KAAA,GAAA,IAAA,CAAA;IAZC,QAAA,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEzD,QAAA,IAAI,gBAAgB,IAAI,gBAAgB,YAAYD,eAAU,EAAE;gBAC9D,gBAAgB;IACb,iBAAA,IAAI,CACHoB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,iBAAA,SAAS,CAAC,YAAA;IACT,gBAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;;;6IArFU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,eAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAAN,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,sSCvBlC,88HA0FA,EAAA,MAAA,EAAA,CAAA,8LAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAmB,0BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAP,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAO,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAT,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,aAAA,EAAAU,eAAA,EAAA,EAAA,eAAA,EAAAtB,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDnEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBANjCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,qBAAqB;IAC/B,oBAAA,WAAW,EAAE,0BAA0B;wBACvC,SAAS,EAAE,CAAC,0BAA0B,CAAC;wBACvC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;gHAIQ,GAAG,EAAA,CAAA;0BADTH,QAAK;oBAIC,KAAK,EAAA,CAAA;0BADXA,QAAK;oBAIC,WAAW,EAAA,CAAA;0BADjBA,QAAK;oBAIC,UAAU,EAAA,CAAA;0BADhBA,QAAK;oBAIC,UAAU,EAAA,CAAA;0BADhBA,QAAK;oBAIC,cAAc,EAAA,CAAA;0BADpBA,QAAK;oBAIC,gBAAgB,EAAA,CAAA;0BADtBA,QAAK;oBAIC,aAAa,EAAA,CAAA;0BADnBA,QAAK;;;AENR,QAAA,cAAA,kBAAA,YAAA;QA2CE,SACS,cAAA,CAAA,EAAc,EACb,MAAyB,EACzB,QAAyB,EACzB,SAAoB,EACpB,cAA4C,EAAA;IAJ7C,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;IACb,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IACzB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;IACzB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;IACpB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAA8B;IA7C/C,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;IAGJ,QAAA,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;IAC1B,QAAA,IAAe,CAAA,eAAA,GAAU,EAAE,CAAC;IAC5B,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;IACtB,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;IAEf,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IAmBpB,QAAA,IAAe,CAAA,eAAA,GAAGV,uBAAe,CAAC;IAClC,QAAA,IAAe,CAAA,eAAA,GAAG,eAAe,CAAC;IAC3C,QAAA,IAAU,CAAA,UAAA,GAAgB,EAAE,CAAC;IAC7B,QAAA,IAAc,CAAA,cAAA,GAAgB,EAAE,CAAC;IACjC,QAAA,IAAgB,CAAA,gBAAA,GAAgB,EAAE,CAAC;IAEnC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;IACjB,QAAA,IAAqB,CAAA,qBAAA,GAA8B,KAAK,CAAC;IAGxD,QAAA,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;IACrB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIE,YAAO,EAAE,CAAC;IAShC,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9C;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;aACzB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAAzB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;aACrF;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,cAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAD9B,QAAA,GAAA,EAAA,YAAA;IAEE,YAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;IAEtC,YAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,cAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IADtB,QAAA,GAAA,EAAA,YAAA;;;gBAEE,IAAI,GAAG,GAAG,aAAa,CAAC;IAExB,YAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC3B,GAAG,IAAI,kBAAkB,CAAC;IAC3B,aAAA;IACD,YAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC3B,GAAG,IAAI,mBAAmB,CAAC;IAC5B,aAAA;gBAED,IAAI,MAAA,IAAI,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;oBACrB,GAAG,IAAI,oBAAoB,CAAC;IAC7B,aAAA;qBAAM,IAAI,CAAA,EAAA,GAAC,IAAI,CAAC,GAAW,0CAAE,OAAO,EAAE;oBACrC,GAAG,IAAI,0BAA0B,CAAC;IACnC,aAAA;qBAAM,IAAI,MAAA,IAAI,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;oBAClC,GAAG,IAAI,2BAA2B,CAAC;IACpC,aAAA;IAAM,iBAAA;oBACL,GAAG,IAAI,mBAAmB,CAAC;IAC5B,aAAA;gBAED,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,gBAAA,IAAM,OAAO,GAA0B;wBACrC,KAAK,EAAE,IAAI,CAAC,QAAQ;IACpB,oBAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;qBACpB,CAAC;IAEF,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;wBACpB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACrC,iBAAA;IAAM,qBAAA,IAAK,IAAI,CAAC,GAAW,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;wBAC9D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5C,iBAAA;IAED,gBAAA,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1D,gBAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;wBACnC,GAAG,IAAI,GAAI,GAAA,WAAa,CAAC;IAC1B,iBAAA;IAAM,qBAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;wBAC1C,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IACtC,wBAAA,KAAgB,IAAA,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,0BAAA,EAAE,CAAA,QAAA,CAAA,IAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,EAAA;IAAjB,4BAAA,IAAM,CAAC,GAAA,QAAA,CAAA,KAAA,CAAA;IACV,4BAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oCAC3B,GAAG,IAAI,GAAI,GAAA,CAAG,CAAC;IAChB,6BAAA;IACF,yBAAA;;;;;;;;;IACF,iBAAA;IACF,aAAA;IAED,YAAA,OAAO,GAAG,CAAC;aACZ;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;aAC1B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAA9B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,cAAc;IACrB,mBAAA,IAAI,CAAC,eAAe,KAAKF,uBAAe,CAAC,IAAI;IAC7C,mBAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;IAA/B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,cAAc;IACrB,mBAAA,IAAI,CAAC,eAAe,KAAKA,uBAAe,CAAC,KAAK;IAC9C,mBAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,cAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;IAChC,YAAA,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;oBACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC,CAAC;oBAE9E,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,aAAA;IACF,SAAA;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC,CAAC;gBAE5E,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,SAAA;SACF,CAAA;IAEM,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YAAA,IAYN,KAAA,GAAA,IAAA,CAAA;YAXC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,UAAU,EAAE;IACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;IAC7B,oBAAA,MAAM,CAAC,eAAe,CAAC,KAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC;wBACrD,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAC,CAAC,CAAC;oBACH,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,aAAA;IAED,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC5B,SAAA;SACF,CAAA;IAEM,IAAA,cAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;IACpC,YAAA,QAAQ,EAAE,CAAC;IACb,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAED;;;;IAIG;QACI,cAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAwB,EAAA;IACvC,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAA;IAED;;;;IAIG;QACI,cAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAK,EAAA;IACpB,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;QAEM,cAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAK,EAAA;YACpB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBAExB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACtD,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,cAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;YAAA,IAmBP,KAAA,GAAA,IAAA,CAAA;oCAlBY,KAAK,EAAA;IACd,YAAA,IAAI,OAAK,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IACxC,gBAAA,IAAM,QAAQ,GAAG,MAAK,CAAA,SAAS,CAAC,MAAM,CAAC,MAAK,CAAA,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,UAAC,GAAG,EAAA;;;IAIvE,oBAAA,IAAI,CAAC,KAAI,CAAC,cAAc,EAAE;IACxB,wBAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpB,4BAAA,KAAK,EAAE,GAAG;IACV,4BAAA,GAAG,EAAE,KAAI,CAAC,GAAG,CAAC,IAAI;gCAClB,QAAQ,EAAE,KAAI,CAAC,QAAQ;IACxB,yBAAA,CAAC,CAAC;IACJ,qBAAA;IACH,iBAAC,CAAC,CAAC;IAEH,gBAAA,MAAA,CAAK,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,aAAA;;;IAhBH,QAAA,KAAK,IAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAA;wBAAvB,KAAK,CAAA,CAAA;IAiBf,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,cAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;YAAA,IAgCP,KAAA,GAAA,IAAA,CAAA;YA/BC,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAExE,IAAI,CAAC,SAAS,CAAC,gBAAgB;qBAC5B,IAAI;;;;;;;IAOH,YAAAI,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,iBAAA,SAAS,CAAC,YAAA;;IACT,gBAAA,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,GAAG,IAAI,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAExE,IAAI,MAAA,KAAI,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;IACrB,oBAAA,IAAM,cAAc,GAAG,KAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC;wBAEhE,IAAI,cAAc,KAAK,eAAe,EAAE;IACtC,wBAAA,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,wBAAA,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACnC,qBAAA;IAAM,yBAAA;IACL,wBAAA,KAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;IAC/B,wBAAA,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACpC,qBAAA;IACF,iBAAA;IAED,gBAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;IAEO,IAAA,cAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,YAAA;YAAA,IAmBP,KAAA,GAAA,IAAA,CAAA;IAlBC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;IAE7B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACnB,OAAO;IACR,aAAA;gBAED,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IAClC,gBAAA,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,aAAA;qBAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IAC1C,gBAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,aAAA;qBAAM,IAAI,MAAM,CAAC,OAAO,EAAE;IACzB,gBAAA,KAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC7B,aAAA;IACH,SAAC,CAAC,CAAC;SACJ,CAAA;;;sIAlSU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAAvB,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAd,cAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,+xBCxC3B,qmFA0EA,EAAA,MAAA,EAAA,CAAA,i5BAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAW,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAa,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,KAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAX,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAO,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,eAAA,EAAArB,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDlCa,cAAc,EAAA,UAAA,EAAA,CAAA;sBAN1BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,eAAe;IACzB,oBAAA,WAAW,EAAE,sBAAsB;wBACnC,SAAS,EAAE,CAAC,sBAAsB,CAAC;wBACnC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;+QAIQ,IAAI,EAAA,CAAA;0BADVC,cAAW;2BAAC,WAAW,CAAA;oBAGR,GAAG,EAAA,CAAA;0BAAlBJ,QAAK;oBACU,aAAa,EAAA,CAAA;0BAA5BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,aAAa,EAAA,CAAA;0BAA5BA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,QAAQ,EAAA,CAAA;0BAAvBA,QAAK;oBACU,WAAW,EAAA,CAAA;0BAA1BA,QAAK;oBACU,QAAQ,EAAA,CAAA;0BAAvBA,QAAK;oBACU,OAAO,EAAA,CAAA;0BAAtBA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,UAAU,EAAA,CAAA;0BAAzBA,QAAK;oBACU,kBAAkB,EAAA,CAAA;0BAAjCA,QAAK;oBAIC,cAAc,EAAA,CAAA;0BAFpBA,QAAK;;0BACLI,cAAW;2BAAC,gBAAgB,CAAA;oBAGb,eAAe,EAAA,CAAA;0BAA9BJ,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBAIC,QAAQ,EAAA,CAAA;0BADdqB,eAAY;2BAAC,IAAI,CAAA;oBA2CP,mBAAmB,EAAA,CAAA;0BAD7BjB,cAAW;2BAAC,0BAA0B,CAAA;oBAQ5B,WAAW,EAAA,CAAA;0BADrBA,cAAW;2BAAC,OAAO,CAAA;;;IEvGtB,IAAA,2BAAA,kBAAA,YAAA;IAOE,IAAA,SAAA,2BAAA,CACU,GAAe,EACf,SAAoB,EACpB,kBAAqC,EACrC,cAA4C,EAAA;IAH5C,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;IACf,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;IACpB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;IACrC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAA8B;IAN9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIZ,YAAO,EAAQ,CAAC;SAOnC;IAEL,IAAA,MAAA,CAAA,cAAA,CAAW,2BAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,GAAG,CAAC;aACjB;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,2BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;IACL,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;gBAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,SAAA;IACD,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACjD,CAAA;IAEM,IAAA,2BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,2BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACL,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACrD,CAAA;IAEO,IAAA,2BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;YAAA,IAkBP,KAAA,GAAA,IAAA,CAAA;IAjBC,QAAA,IAAI,CAAC,cAAc;iBAChB,UAAU;IACV,aAAA,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,SAAC,CAAC,CAAC;IAEL,QAAA,IAAI,CAAC,cAAc;iBAChB,QAAQ;IACR,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,WAAW,EAAE,CAAC;IACrB,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,2BAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;IACN,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3B,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAEnD,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC7D;IACE,YAAA,IAAI,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,IAAI;IACrB,YAAA,IAAI,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,IAAI;IACpB,YAAA,MAAM,EAAE,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI;IAC/B,YAAA,MAAM,EAAE,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI;IAC/B,SAAA,CACF,CAAC;IAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;IACzB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;IAC5E,SAAA;SACF,CAAA;IAEO,IAAA,2BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACN,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;IACzB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;IAC/E,SAAA;SACF,CAAA;;;mJA7EU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA3B,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4HAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;sBAHvCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,sBAAsB;qBACjC,CAAA;wNAIQ,GAAG,EAAA,CAAA;0BADTC,QAAK;;;ACUR,QAAA,eAAA,kBAAA,YAAA;IANA,IAAA,SAAA,eAAA,GAAA;IASkB,QAAA,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;IACvB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;IAClB,QAAA,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;IAC1B,QAAA,IAAe,CAAA,eAAA,GAAU,EAAE,CAAC;IAC5B,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;IAEf,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;IAEtB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;SAcrC;;;uIAzBY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAf,eAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,gkBAsBZ,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU4B,cAAW,EAHb,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAAC,mBAAgB,sDC5CtD,+rBAsBA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAnB,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAoB,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA/B,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDGa,eAAe,EAAA,UAAA,EAAA,CAAA;sBAN3BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;IAC1B,oBAAA,WAAW,EAAE,uBAAuB;wBACpC,SAAS,EAAE,CAAC,uBAAuB,CAAC;wBACpC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;kCAGiB,IAAI,EAAA,CAAA;0BAAnBH,QAAK;oBACU,OAAO,EAAA,CAAA;0BAAtBA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,aAAa,EAAA,CAAA;0BAA5BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,QAAQ,EAAA,CAAA;0BAAvBA,QAAK;oBACU,aAAa,EAAA,CAAA;0BAA5BA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,WAAW,EAAA,CAAA;0BAA1BA,QAAK;oBACU,UAAU,EAAA,CAAA;0BAAzBA,QAAK;oBACU,kBAAkB,EAAA,CAAA;0BAAjCA,QAAK;oBACU,cAAc,EAAA,CAAA;0BAA7BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBAGC,aAAa,EAAA,CAAA;0BADnB2B,YAAS;2BAAC,eAAe,EAAE,EAAE,IAAI,EAAEH,mBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAI7D,cAAc,EAAA,CAAA;0BADpBI,eAAY;2BAAC,cAAc,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;IElCnE,IAAA,4BAAA,kBAAA,YAAA;QAOE,SAC2B,4BAAA,CAAA,IAAI,EACrB,OAA0B,EAAA;IAA1B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;IAP7B,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;IACb,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;IAEpB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI/B,YAAO,EAAE,CAAC;IAMhC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;SAChC;IAEM,IAAA,4BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,4BAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAK,EAAE,MAAM,EAAA;IACnC,QAAA,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;SAC7B,CAAA;IAEM,IAAA,4BAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;YAAA,IA2BN,KAAA,GAAA,IAAA,CAAA;IA1BC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO;IACtB,aAAA,MAAM,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAb,EAAa,CAAC;iBACjC,GAAG,CAAC,UAAC,MAAM,EAAA;gBACV,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC;IACJ,SAAC,CAAC,CAAC;IAEL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,YAAYC,eAAU,EAAE;gBACjC,OAAO;IACJ,iBAAA,IAAI,CAACC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,iBAAA,SAAS,CAAC;IACT,gBAAA,IAAI,EAAE,YAAA;wBACJ,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;qBAClC;IACD,gBAAA,KAAK,EAAE,YAAA;IACL,oBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;qBAC3B;IACF,aAAA,CAAC,CAAC;IACN,SAAA;IAAM,aAAA;gBACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,SAAA;SACF,CAAA;IAEM,IAAA,4BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACL,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SACtB,CAAA;;;IAvDU,4BAAA,CAAA,IAAA,GAAAC,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,4BAA4B,kBAQ7BkC,oBAAe,EAAA,EAAA,EAAA,KAAA,EAAA5B,eAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAAN,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IARd,4BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,+DCbzC,+8BAuBA,EAAA,MAAA,EAAA,CAAA,sHAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAW,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAP,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAO,aAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAf,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,eAAA,EAAAN,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDVa,4BAA4B,EAAA,UAAA,EAAA,CAAA;sBALxCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,WAAW,EAAE,iCAAiC;wBAC9C,SAAS,EAAE,CAAC,iCAAiC,CAAC;wBAC9C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;;;kCASI2B,SAAM;mCAACD,oBAAe,CAAA;;;;AEX3B,QAAA,qBAAA,kBAAA,UAAA,MAAA,EAAA;QAA2C,SAAe,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAA;IAExD,IAAA,SAAA,qBAAA,GAAA;mBACE,MAAO,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA;SACR;;KAJH,CAA2C,eAAe;6IAA7C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAlC,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+FCVlC,gNAKA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAN,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDKa,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBALjCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,uBAAuB;IACjC,oBAAA,WAAW,EAAE,8BAA8B;wBAC3C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;;;AEWD,QAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;QAA0C,SAAc,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;IAQtD,IAAA,SAAA,oBAAA,CACE,EAAc,EACd,KAAwB,EACxB,OAAwB,EACxB,QAAmB,EAAA;mBAEnB,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAA,IAAA,CAAA;SAC1C;;KAfH,CAA0C,cAAc;4IAA3C,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,aAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAApB,oBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,8RCpBjC,gxBAqBA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAoC,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAzB,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAX,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;sBANhCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,sBAAsB;IAChC,oBAAA,WAAW,EAAE,6BAA6B;wBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;wBAC1C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;uOAGiB,aAAa,EAAA,CAAA;0BAA5BH,QAAK;oBACU,kBAAkB,EAAA,CAAA;0BAAjCA,QAAK;oBACU,cAAc,EAAA,CAAA;0BAA7BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;;;AEVR,QAAA,iBAAA,kBAAA,YAAA;IANA,IAAA,SAAA,iBAAA,GAAA;IASkB,QAAA,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;SAMxC;;;yIATY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAjB,iBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,+SChB9B,yTAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAqC,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAArC,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;sBAN7BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,kBAAkB;IAC5B,oBAAA,WAAW,EAAE,yBAAyB;wBACtC,SAAS,EAAE,CAAC,yBAAyB,CAAC;wBACtC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;kCAGiB,aAAa,EAAA,CAAA;0BAA5BH,QAAK;oBACU,OAAO,EAAA,CAAA;0BAAtBA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,kBAAkB,EAAA,CAAA;0BAAjCA,QAAK;oBACU,cAAc,EAAA,CAAA;0BAA7BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;;;AENR,QAAA,mBAAA,kBAAA,UAAA,MAAA,EAAA;QAAyC,SAAe,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAMtD,SACU,mBAAA,CAAA,MAAyB,EACzB,QAAyB,EAAA;IAFnC,QAAA,IAAA,KAAA,GAIE,iBAAO,IAER,IAAA,CAAA;IALS,QAAA,KAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IACzB,QAAA,KAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;IAN5B,QAAA,KAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;IAS3B,QAAA,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;;SACtD;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YACL,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACxC,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC5B,SAAA;SACF,CAAA;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACL,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5C,CAAA;;KAtBH,CAAyC,eAAe;2IAA3C,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAnB,mBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,wFClBhC,mtBAcA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAK,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,eAAA,EAAAX,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;sBAN/BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;IAC1B,oBAAA,WAAW,EAAE,4BAA4B;wBACzC,SAAS,EAAE,CAAC,4BAA4B,CAAC;wBACzC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;;;AEPW8B,yCAIX;IAJD,CAAA,UAAY,mBAAmB,EAAA;IAC7B,IAAA,mBAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;IACvD,IAAA,mBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;IACzC,IAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;IAC7B,CAAC,EAJWA,2BAAmB,KAAnBA,2BAAmB,GAI9B,EAAA,CAAA,CAAA,CAAA;AAGD,QAAA,mBAAA,kBAAA,YAAA;IAmCE,IAAA,SAAA,mBAAA,CACE,MAAkC,EAC1B,QAAgB,EAChB,gBAAiC,EAAA;IAFzC,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAkC,GAAA,EAAA,CAAA,EAAA;IAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;IAChB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;;IAnCpC,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;IACb,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;;IAQjB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;;IAG1B,QAAA,IAAmB,CAAA,mBAAA,GAAiB,IAAI,CAAC;IAGzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIzC,YAAO,EAA+C,CAAC;;IAG9E,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;;;IAI5B,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;IAErB,QAAA,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;IACrB,QAAA,IAAoB,CAAA,oBAAA,GAAG,CAAC,CAAC;IACzB,QAAA,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;IAEvB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAE,CAAC;YAC1B,IAAA,CAAA,UAAU,GAAG,IAAID,oBAAe,CAAU,KAAK,CAAC,CAAC;IAOvD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,MAAM,CAAC,OAAO,CAAA,CAAA,GAAI,EAAE,CAAC;IACzD,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC;IAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAClD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACzC;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,mBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,mBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;aACvC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,mBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAtB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,mBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAACG,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aAC9D;;;IAAA,KAAA,CAAA,CAAA;QAEM,mBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAiB,EAAA;IACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB,CAAA;IAED;;;;;IAKG;IACI,IAAA,mBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,GAAQ,EAAE,OAAgB,EAAA;IAClD,QAAA,IAAI,GAAG,EAAE;IACP,YAAA,IAAI,OAAO,EAAE;IACX,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,aAAA;IAAM,iBAAA;oBACL,IAAI,IAAI,CAAC,YAAY,EAAE;IACrB,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,iBAAA;IAED,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxB,aAAA;IACF,SAAA;YAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC,CAAA;IAED;;;;IAIG;QACI,mBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,OAAO,EAAA;YAA5B,IAqCN,KAAA,GAAA,IAAA,CAAA;YApCC,IAAI,CAAC,UAAU,EAAE,CAAC;IAElB,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAE1B,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAE7B,QAAA,IAAI,OAAO,EAAE;IACX,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;oBACf,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAEjD,IAAI,GAAG,CAAC,OAAO,EAAE;wBACf,KAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,iBAAA;IAAM,qBAAA;wBACL,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC5C,KAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,iBAAA;IACH,aAAC,CAAC,CAAC;IACJ,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;oBACf,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAEjD,IAAI,GAAG,CAAC,OAAO,EAAE;IACf,oBAAA,KAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACzD,iBAAA;IAAM,qBAAA;IACL,oBAAA,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,iBAAA;IACH,aAAC,CAAC,CAAC;IAEH,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC3B,SAAA;;YAGD,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC,CAAA;QAEM,mBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAAO,EAAA;IAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;mBACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;mBACrD,IAAI,CAAC,WAAW,CAAC;SACvB,CAAA;QAEM,mBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,GAAG,EAAA;;YACxB,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEjD,QAAA,IACE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,eAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,0CAAE,MAAM,IAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAC7D;IACA,YAAA,OAAO,eAAe,CAAC;IACxB,SAAA;IAED,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;SAEhE,CAAA;IAED;;IAEG;IACI,IAAA,mBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACpD,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,kBAAkB;IACjC,gBAAA,OAAO,EAAM,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,OAAO,CAAC,CAAA;;IAE3B,aAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,mBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,KAAa,EAAA;IAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACnC,CAAA;IAED;;;;IAIG;QACI,mBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,KAAa,EAAA;IAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAEhC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClE,SAAA;SACF,CAAA;QAEM,mBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,qBAAqB,EAAA;YAAjC,IAoBN,KAAA,GAAA,IAAA,CAAA;YAnBC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,aAAA;IACF,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,QAAQ,EAAE;qBACZ,GAAG,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,GAAG,CAAC,IAAI,CAAR,EAAQ,CAAC;qBACtB,OAAO,CAAC,UAAC,OAAO,EAAA;oBACf,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBAEhD,IAAI,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wBACrC,KAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,iBAAA;IACH,aAAC,CAAC,CAAC;gBAEL,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACrC,SAAA;SACF,CAAA;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;IACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B,CAAA;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;IACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B,CAAA;IAED;;;;;;IAMG;QACI,mBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,GAAG,EAAA;IAClB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YAEnD,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC,CAAA;IAED;;;;IAIG;QACI,mBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,IAAI,EAAA;YAA7B,IAQN,KAAA,GAAA,IAAA,CAAA;IAPC,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAxB,EAAwB,CAAC,CAAC;YAErE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,WAAW,EAAE,UAAU,EAAA;gBAChD,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;IAC/C,gBAAA,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7B,aAAA;IACH,SAAC,CAAC,CAAC;SACJ,CAAA;QAEM,mBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,EAEI,EAAA;IADtB,QAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,cAAc,GAAA,EAAA,CAAA,cAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,SAAS,eAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAE5E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,GAAE,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,OAAO,CAAA,CAAA,GAAI,IAAI,CAAC,OAAO,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,KAAA,CAAA,GAAA,cAAc,GAAI,IAAI,CAAC,gBAAgB,CAAC;YAChE,IAAI,CAAC,aAAa,GAAG,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,WAAW,GAAI,IAAI,CAAC,aAAa,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,SAAS,GAAI,IAAI,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,KAAhB,KAAA,CAAA,GAAA,gBAAgB,GAAI,IAAI,CAAC,kBAAkB,CAAC;YACtE,IAAI,CAAC,SAAS,GAAG,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC;SAC9C,CAAA;;IAGM,IAAA,mBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;;YACL,CAAA,EAAA,GAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,EAAE,CAAC;SAC1C,CAAA;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;YACL,CAAA,EAAA,GAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;SACnC,CAAA;IAEM,IAAA,mBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;YACL,IAAI,CAAC,eAAe,EAAE,CAAC;IAEvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAEhC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAE1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;SAClC,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YAAA,IAsBP,KAAA,GAAA,IAAA,CAAA;IArBC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;IACvC,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,UAAC,IAAI,EAAA;IACd,YAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9B,SAAC,CAAC,CAAC;IAEL,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;IAClC,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,gBAAgB,EAAE,CAAA,EAAA,CAAC,CAAC;IAE5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;IACpC,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,UAAC,IAAI,EAAA;IACd,YAAA,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjC,SAAC,CAAC,CAAC;SACN,CAAA;IAED;;;;IAIG;QACK,mBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,IAAI,EAAA;YAArB,IAgCP,KAAA,GAAA,IAAA,CAAA;IA/BC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,OAAO;IACR,SAAA;;IAGD,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,iBAClC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA;oBACvD,OAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,GAAG,CAAG,CAAA;IACpB,aAAC,CAAC,EAAA,EACC,IAAI,CAAA,CACP,CAAC;;YAGH,IAAI,MAAM,YAAYD,eAAU,EAAE;;IAGhC,YAAA,MAAM,CAAC,IAAI,CACToB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,CAAC;IACV,gBAAA,IAAI,EAAE,YAAA;;wBAGJ,KAAI,CAAC,oBAAoB,EAAE,CAAC;;IAG5B,oBAAA,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;qBAClC;oBACD,KAAK,EAAE,eAAS;IACjB,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;IACN,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,SAAA;IAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC,CAAA;IAED;;;;IAIG;QACK,mBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,IAAI,EAAA;IAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAEzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEjE,IAAI,CAAC,qBAAqB,CAACuC,2BAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/E,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,OAAO;IACR,SAAA;IAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1B,CAAA;IAEO,IAAA,mBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;YAAA,IA+BP,KAAA,GAAA,IAAA,CAAA;;;IA5BC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;IAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBAE3C,OAAO;IACR,SAAA;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EACtC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,mBAAmB,CACzB,CAAC;IAEF,YAAA,IAAI,MAAM,EAAE;oBACV,IAAI,MAAM,YAAYxC,eAAU,EAAE;IAChC,oBAAA,MAAM,CAAC,IAAI,CACToB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,CAAC;4BACV,IAAI,EAAE,UAAC,OAAO,EAAA;IACZ,4BAAA,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;6BACjD;IACF,qBAAA,CAAC,CAAC;IACJ,iBAAA;IAAM,qBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAChC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,iBAAA;IACF,aAAA;IACF,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,YAAA;YACN,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;;IAGhE,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;IAChC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAClC,aAAA;gBAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACjC,SAAA;SACF,CAAA;IAED;;;;;;IAMG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,8BAA8B,GAA9B,YAAA;YACN,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,4BAA4B,GAA5B,YAAA;IACN,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,oBAAoB,CAAC;YAE9G,IAAI,CAAC,qBAAqB,CACxBuC,2BAAmB,CAAC,kBAAkB,EACtC,IAAI,CAAC,mBAAmB,CACzB,CAAC;SACH,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,4BAA4B,GAA5B,YAAA;YACN,IAAI,CAAC,qBAAqB,CACxBA,2BAAmB,CAAC,yBAAyB,EAC7C,IAAI,CAAC,mBAAmB,CACzB,CAAC;SACH,CAAA;IAED;;;;;IAKG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,IAAyB,EAAE,OAAO,EAAA;IAC9D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACzB,YAAA,IAAI,EAAA,IAAA;IACJ,YAAA,OAAO,EAAA,OAAA;IACR,SAAA,CAAC,CAAC;SACJ,CAAA;IAED;;;;IAIG;QACK,mBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,GAAG,EAAA;IACxB,QAAA,IAAM,UAAU,GAAGC,YAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAEvD,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,OAAO,CAAC,IAAI,CAAC,sDAAsD;IACjE,gBAAA,sDAAsD,CAAC,CAAC;IAC3D,SAAA;IAED,QAAA,OAAO,UAAU,CAAC;SACnB,CAAA;QAEO,mBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,GAAG,EAAA;YAAd,IAeP,KAAA,GAAA,IAAA,CAAA;YAdC,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,GAAG,CAAC,OAAO,EAAE;IACf,YAAA,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;IAC5B,gBAAA,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5B,aAAC,CAAC,CAAC;IACJ,SAAA;IAAM,aAAA;gBACL,IAAI,GAAG,CAAC,OAAO,EAAE;IACf,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAA;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,SAAA;SACF,CAAA;QAEO,mBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,GAAG,EAAA;YAAhB,IAiBP,KAAA,GAAA,IAAA,CAAA;YAhBC,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,GAAG,CAAC,OAAO,EAAE;IACf,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEvC,YAAA,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;IAC5B,gBAAA,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,aAAC,CAAC,CAAC;IACJ,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;IACpD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7B,aAAA;IAED,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,SAAA;SACF,CAAA;QAEO,mBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,GAAG,EAAA;IACzB,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAA,IAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE9E,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;SACxF,CAAA;QAEO,mBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,GAAG,EAAA;IAC3B,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAA,IAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE9E,IAAI,sBAAsB,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;IACxF,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC/D,SAAA;SACF,CAAA;IAEO,IAAA,mBAAA,CAAA,SAAA,CAAA,mCAAmC,GAAnC,UAAoC,UAAkB,EAAE,CAAS,EAAA;YACvE,IAAI,CAAC,KAAK,CAAC,EAAE;IACX,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEvC,OAAO;IACR,SAAA;YAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SACxC,CAAA;IAED;;IAEG;IACK,IAAA,mBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;IACN,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC1B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC,CAAA;QACF,OAAA,mBAAA,CAAA;IAAA,CAAA,EAAA;;ACzjBD,QAAA,eAAA,kBAAA,YAAA;IAmBE,IAAA,SAAA,eAAA,CAAoB,MAAyB,EAAA;IAAzB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IALtC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IACX,QAAA,IAAmB,CAAA,mBAAA,GAAG,eAAe,CAAC;IAE9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI1C,YAAO,EAAE,CAAC;SAEgB;IAElD,IAAA,MAAA,CAAA,cAAA,CAAW,eAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAA9B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,cAAc;IACrB,mBAAA,IAAI,CAAC,eAAe,KAAKF,uBAAe,CAAC,IAAI;IAC7C,mBAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,eAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;IAA/B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,cAAc;IACrB,mBAAA,IAAI,CAAC,eAAe,KAAKA,uBAAe,CAAC,KAAK;IAC9C,mBAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAED;;;;IAIG;QACI,eAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAwB,EAAA;YACvC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACpD,CAAA;IAED;;;;IAIG;QACI,eAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAK,EAAA;IACpB,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;IAED;;IAEG;IACK,IAAA,eAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;YAAA,IAQP,KAAA,GAAA,IAAA,CAAA;YAPC,IAAI,CAAC,OAAO,CAAC,eAAe;IACzB,aAAA,IAAI,CACHI,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;IACT,YAAA,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAC9B,SAAC,CAAC,CAAC;SACN,CAAA;IAED;;IAEG;IACK,IAAA,eAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YAAA,IAmBP,KAAA,GAAA,IAAA,CAAA;YAlBC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB;IAC5B,iBAAA,IAAI,CACHyC,gBAAM,CACJ,UAAC,EAAQ,EAAA;IAAN,gBAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;IAAO,gBAAA,QACZ,IAAI,KAAKF,2BAAmB,CAAC,yBAAyB;2BACnD,IAAI,KAAKA,2BAAmB,CAAC,WAAW;IACxC,uBAAA,IAAI,KAAKA,2BAAmB,CAAC,kBAAkB,EACnD;iBAAA,CACF,EACDvC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,UAAC,EAAyB,EAAA;wBAAvB,IAAI,GAAA,EAAA,CAAA,IAAA,EAAW,MAAM,GAAA,EAAA,CAAA,OAAA,CAAA;IACjC,gBAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAE1B,gBAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;;;uIAhGU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAWU6B,mBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA7B,aAAA,EAAA,QAAA,EC1CtD,mgCA8BA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAmC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA7B,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,eAAA,EAAAZ,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDCa,eAAe,EAAA,UAAA,EAAA,CAAA;sBAN3BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;IAC1B,oBAAA,WAAW,EAAE,uBAAuB;wBACpC,SAAS,EAAE,CAAC,uBAAuB,CAAC;wBACpC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;uHAGiB,OAAO,EAAA,CAAA;0BAAtBH,QAAK;oBACU,OAAO,EAAA,CAAA;0BAAtBA,QAAK;oBACU,aAAa,EAAA,CAAA;0BAA5BA,QAAK;oBACU,SAAS,EAAA,CAAA;0BAAxBA,QAAK;oBACU,kBAAkB,EAAA,CAAA;0BAAjCA,QAAK;oBACU,cAAc,EAAA,CAAA;0BAA7BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBACU,eAAe,EAAA,CAAA;0BAA9BA,QAAK;oBAGC,aAAa,EAAA,CAAA;0BADnB2B,YAAS;2BAAC,eAAe,EAAE,EAAE,IAAI,EAAEH,mBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AExCtE,QAAA,WAAA,kBAAA,YAAA;IAQE,IAAA,SAAA,WAAA,CAAY,MAAW,EAAA;IAAX,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAW,GAAA,EAAA,CAAA,EAAA;IALhB,QAAA,IAAA,CAAA,SAAS,GAAsB,EAAE,CAAC;IAElC,QAAA,IAAA,CAAA,YAAY,GAAG,EAAE,CAAC;IAClB,QAAA,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;IAGxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACpB;IAED;;IAEG;IACI,IAAA,WAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;IACL,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtE,CAAA;IAED;;;;IAIG;IACI,IAAA,WAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,MAAmB,EAAE,MAAmB,EAAA;IAClE,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;IAE7B,QAAA,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;gBAC1B,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;IACrC,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,aAAA;qBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;IAC5C,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,aAAA;IAAM,iBAAA;oBACL,WAAW,GAAG,MAAM,CAAC;IACtB,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;SAC1B,CAAA;IAED;;;;IAIG;IACI,IAAA,WAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,MAAmB,EAAE,MAAmB,EAAA;YAClE,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACjC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,SAAA;IAAM,aAAA,IAAIa,iBAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACnC,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,SAAA;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;gBACzC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,SAAA;iBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;gBAChD,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,SAAA;IAED,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;SAC9B,CAAA;QAEO,WAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,MAAM,EAAA;IAClB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;SACnC,CAAA;IAED;;;;IAIG;IACK,IAAA,WAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,EAAY,EAAE,IAAuB,EAAA;IAClE,QAAA,IAAIA,iBAAQ,CAAC,IAAI,CAAC,EAAE;IAClB,YAAA,EAAE,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;IACzB,SAAA;IAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IAC9B,YAAA,EAAE,CAAC,IAAI,CAAA,KAAA,CAAP,EAAE,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAS,IAAI,CAAC,CAAA,CAAA,CAAA;IACjB,SAAA;SACF,CAAA;QACF,OAAA,WAAA,CAAA;IAAA,CAAA,EAAA;;ACxEWC,sCAGX;IAHD,CAAA,UAAY,gBAAgB,EAAA;IAC1B,IAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACf,CAAC,EAHWA,wBAAgB,KAAhBA,wBAAgB,GAG3B,EAAA,CAAA,CAAA,CAAA;IAED,IAAM,gBAAgB,GAAG;QACvB,OAAO;QACP,UAAU;QACV,OAAO;QACP,OAAO;KACR,CAAC;AAEF,QAAA,MAAA,kBAAA,YAAA;QA8BE,SAAY,MAAA,CAAA,SAA6B,EAAE,WAAwB,EAAA;IAAxB,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAAwB,GAAA,KAAA,CAAA,EAAA;IArB5D,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;IAE/C,QAAA,IAAA,CAAA,kBAAkB,GAAgB,IAAI,WAAW,EAAE,CAAC;IACpD,QAAA,IAAA,CAAA,kBAAkB,GAAgB,IAAI,WAAW,EAAE,CAAC;IAEpD,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;IAE7C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;IAI/C,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;IACzB,QAAA,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;IAC9B,QAAA,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;IAC9B,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;IACvB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;IAIxB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;IAGvB,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC;IAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;IACrC,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;IAC9B,SAAA,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;SAC3C;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAIhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;aAC/B;IAND,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;aAChC;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,MAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAInB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;aAClC;IAND,QAAA,GAAA,EAAA,UAAoB,KAAc,EAAA;IAChC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,MAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAI3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;aACnC;IAND,QAAA,GAAA,EAAA,UAA4B,KAAqB,EAAA;IAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,MAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;IAA5B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAKA,wBAAgB,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC;aAC1E;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;IAA5B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAKA,wBAAgB,CAAC,GAAG,IAAI,WAAW,GAAG,YAAY,CAAC;aACtF;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;IAED,QAAA,GAAA,EAAA,UAAmB,KAAK,EAAA;IACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAEtB,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;IACnC,gBAAA,IAAI,CAAC,gBAAgB,GAAGA,wBAAgB,CAAC,GAAG,CAAC;IAC9C,aAAA;aACF;;;IARA,KAAA,CAAA,CAAA;IAUD;;;;IAIG;QACI,MAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,QAAQ,EAAA;YAAhC,IA0CN,KAAA,GAAA,IAAA,CAAA;IAzCC,QAAA,IAAI,CAACC,iBAAQ,CAAC,QAAQ,CAAC,EAAE;gBACvB,QAAQ,GAAG,EAAE,CAAC;IACf,SAAA;IAED,QAAA,gBAAgB,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;IAC3B,YAAA,QAAQ,GAAG;IACT,gBAAA,KAAK,OAAO;IAAE,oBAAA;4BACZ,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC3C,qBAAA;wBAAC,MAAM;IAER,gBAAA,KAAK,UAAU;IAAE,oBAAA;IACf,wBAAA,IAAIC,kBAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAChC,4BAAA,IAAI,KAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE;IAC5B,gCAAA,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,6BAAA;IACF,yBAAA;IACF,qBAAA;wBAAC,MAAM;IAER,gBAAA,KAAK,OAAO;IAAE,oBAAA;IACZ,wBAAA,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzE,wBAAA,KAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5E,wBAAA,KAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5E,wBAAA,KAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,wBAAA,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1E,qBAAA;wBAAC,MAAM;IAER,gBAAA,KAAK,OAAO;IAAE,oBAAA;IACZ,wBAAA,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzE,wBAAA,KAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5E,wBAAA,KAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5E,wBAAA,KAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,wBAAA,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1E,qBAAA;wBAAC,MAAM;IACT,aAAA;IACH,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;IACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;IAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IACrC,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;SACxC,CAAA;IAED;;IAEG;IACI,IAAA,MAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAKF,wBAAgB,CAAC,GAAG,GAAGA,wBAAgB,CAAC,IAAI,GAAGA,wBAAgB,CAAC,GAAG,CAAC;SACvH,CAAA;QAEM,MAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAc,EAAA;IACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;SAClC,CAAA;QAEO,MAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAA0B,EAAA;IAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACtD,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACtD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;SAC3C,CAAA;QACF,OAAA,MAAA,CAAA;IAAA,CAAA,EAAA;;ICpND,IAAY,cAGX,CAAA;IAHD,CAAA,UAAY,cAAc,EAAA;QACxB,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;QACX,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;IAClB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ACHWG,iCAQX;IARD,CAAA,UAAY,WAAW,EAAA;QACrB,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;QACJ,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;QACJ,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;QACN,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;QACN,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;QACJ,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;QACV,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;IACV,CAAC,EARWA,mBAAW,KAAXA,mBAAW,GAQtB,EAAA,CAAA,CAAA;;ICOD,IAAA,iBAAA,kBAAA,YAAA;IAuBE,IAAA,SAAA,iBAAA,GAAA;YArBQ,IAAA,CAAA,gBAAgB,GAAG,IAAIlD,oBAAe,CAAW,EAAE,CAAC,CAAC;YACrD,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACtD,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;IAOjB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;IACtB,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;IAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;IAC5B,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;IACxB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;IACnB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;IACnB,QAAA,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;IAGxB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIC,YAAO,EAAQ,CAAC;IACvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAQ,CAAC;SAExB;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAAzB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,sBAAsB,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;gBAAA,IA6BC,KAAA,GAAA,IAAA,CAAA;IA5BC,YAAA,IAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACrD,YAAA,IAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;IACjE,YAAA,IAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBAEjD,OAAO,IAAI,CAAC,QAAQ;IACjB,iBAAA,MAAM,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA,EAAA,CAAC;qBACrD,GAAG,CAAC,UAAC,MAAM,EAAA;oBACV,IAAM,KAAK,GAAG,cAAc;IAC1B,sBAAE,KAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;IACxD,sBAAE,MAAM,CAAC,IAAI,CAAC;oBAEhB,IAAM,QAAQ,GAAG,uBAAuB;0BACpC,KAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC;0BAC3C,KAAK,CAAC;oBAEV,IAAM,OAAO,GAAG,gBAAgB;IAC9B,sBAAE,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;0BAC5D,KAAK,CAAC,CAAC;oBAEX,OAAO;wBACL,QAAQ,EAAE,MAAM,CAAC,cAAc;wBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,oBAAA,KAAK,EAAE,KAAK;IACZ,oBAAA,QAAQ,EAAE,QAAQ;IAClB,oBAAA,OAAO,EAAE,OAAO;qBACjB,CAAA;IACH,aAAC,CAAC,CAAC;aACN;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAAzB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;IAA7B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,mBAAmB,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAA9B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,cAAc;qBACvB,GAAG,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,IAAI,CAAX,EAAW,CAAC;qBAC5B,MAAM,CAAC,UAAC,IAAI,EAAK,EAAA,OAAA,CAAC,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;QAEM,iBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,QAAQ,EAAA;IACzB,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;SACjC,CAAA;IAED;;;IAGG;QACI,iBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,MAA0B,EAAA;IAC1C,QAAA,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,CAAC,IAAI,EAAE;IACf,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,aAAA;gBAED,IAAI,MAAM,CAAC,MAAM,EAAE;IACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACjC,aAAA;gBAED,IAAI,MAAM,CAAC,KAAK,EAAE;IAChB,gBAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5C,aAAA;gBAED,IAAI,MAAM,CAAC,QAAQ,EAAE;IACnB,gBAAA,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAClD,aAAA;gBAED,IAAI,MAAM,CAAC,OAAO,EAAE;IAClB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;IACxC,aAAA;IAED,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,SAAA;SACF,CAAA;IAED;;;IAGG;QACI,iBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,SAAS,EAAA;YAA3B,IA2BN,KAAA,GAAA,IAAA,CAAA;IA1BC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IAEnB,QAAA,SAAS,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;gBACvB,IAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,KAAI,CAAC,eAAe,CAAC,CAAC;IAGrD,YAAA,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,KAAK,EAAE;IACnC,gBAAA,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,aAAA;gBACD,IAAI,GAAG,CAAC,cAAc,EAAE;IACtB,gBAAA,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,aAAA;IAED,YAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE,CAAC;IAEtD,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAC1D,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACpE,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACpE,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;YAE1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,YAAA;YAAA,IASN,KAAA,GAAA,IAAA,CAAA;YARC,OAAO,IAAI,CAAC,OAAO,EAAE;iBAClB,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzBgD,aAAG,CAAC,UAAC,aAAa,EAAA;IAChB,YAAA,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC5B,YAAA,KAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;aAC7C,CAAC,CACH,CAAA;SACJ,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;YACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,OAAO,CAAA,EAAA,CAAC,IAAI,EAAE,CACvD,CAAC;SACH,CAAA;IAED;;;IAGG;QACI,iBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,aAAa,EAAA;YAArC,IAWN,KAAA,GAAA,IAAA,CAAA;IAVC,QAAA,aAAa,CAAC,OAAO,CAAC,UAAC,YAAY,EAAA;IACjC,YAAA,IAAM,GAAG,GAAG,KAAI,CAAC,QAAQ;IACtB,iBAAA,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAjC,EAAiC,CAAC,CAAC;IAEvD,YAAA,IAAI,GAAG,EAAE;IACP,gBAAA,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,aAAA;IACH,SAAC,CAAC,CAAC;YAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAEjC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;IAE9B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;SACzB,CAAA;IAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,8BAA8B,GAA9B,YAAA;YAAA,IAeP,KAAA,GAAA,IAAA,CAAA;IAdC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,MAAM,EAAA;gBACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,SAAC,CAAC,CAAC;IAEH,QAAAC,UAAK,wCAAI,iBAAiB,CAAA,CAAA,CAAA,CACvB,IAAI,CACHlD,mBAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAChCA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,SAAC,CAAC,CAAA;SACL,CAAA;IAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,MAAM,EAAE,UAAU,EAAA;YAAlC,IAkBP,KAAA,GAAA,IAAA,CAAA;YAjBC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK,EAAA;gBAE/B,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE;oBAClC,IAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IAE5C,gBAAA,IAAI,CAACmD,iBAAQ,CAAC,MAAM,CAAC,EAAE;wBACrB,OAAO;IACR,iBAAA;oBACD,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IAEzC,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACvC,oBAAA,IAAI,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;4BACpB,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACrC,qBAAA;IACF,iBAAA;IACF,aAAA;IACH,SAAC,CAAC,CAAA;SACH,CAAA;QAEF,OAAA,iBAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;ACxRWC,6BAKX;IALD,CAAA,UAAY,OAAO,EAAA;IACjB,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;IAC3B,IAAA,OAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;IAC3B,CAAC,EALWA,eAAO,KAAPA,eAAO,GAKlB,EAAA,CAAA,CAAA;;ICFD,IAAA,OAAA,kBAAA,YAAA;QASE,SACE,OAAA,CAAA,IAAc,EACd,OAAwB,EAAA;IADxB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACd,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAA,GAAUA,eAAO,CAAC,MAAM,CAAA,EAAA;IARnB,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;IAIT,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;IAM/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,OAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,OAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,OAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YACL,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,YAAA,MAAM,EAAE,IAAI;aACb,CAAA;SACF,CAAA;QAGF,OAAA,OAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;IC/BD,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;QAA8B,SAAO,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;QAMnC,SACE,QAAA,CAAA,IAAc,EACd,aAAqB,EAAA;IADrB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACd,QAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAAqB,GAAA,KAAA,CAAA,EAAA;IAFvB,QAAA,IAAA,KAAA,GAIE,kBAAM,IAAI,EAAEA,eAAO,CAAC,KAAK,CAAC,IAK3B,IAAA,CAAA;IAbM,QAAA,KAAQ,CAAA,QAAA,GAAkC,EAAE,CAAC;YAEnC,KAAA,CAAA,SAAS,GAAG,IAAIvD,oBAAe,CAAU,KAAK,CAAC,CAAC;IAQ/D,QAAA,IAAI,aAAa,EAAE;IACjB,YAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,SAAA;;SACF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ;qBACf,GAAG,CAAC,UAAC,KAAK,EAAK,EAAA,OAAA,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC;aACb;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,QAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YACL,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK,EAAA;IAC/B,YAAA,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,SAAC,CAAC,CAAC;SACJ,CAAA;IAEM,IAAA,QAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;YAAA,IAIN,KAAA,GAAA,IAAA,CAAA;IAHC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;IACxB,YAAA,GAAG,CAAC,OAAO,GAAG,KAAI,CAAC,QAAQ,CAAC;IAC9B,SAAC,CAAC,CAAA;SACH,CAAA;IAEM,IAAA,QAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpC,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC,CAAA;IAEM,IAAA,QAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK,EAAA,EAAK,OAAA,KAAK,CAAC,OAAO,EAAE,CAAf,EAAe,CAAC,CAAC;IAClD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;QACF,OAAA,QAAA,CAAA;IAAA,CAxDD,CAA8B,OAAO,CAwDpC,CAAA;;ICxDD,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;QAA8B,SAAO,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;QAKnC,SACE,QAAA,CAAA,IAAc,EACd,MAAuB,EAAA;IADvB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAuB,GAAA,IAAA,CAAA,EAAA;IAFzB,QAAA,IAAA,KAAA,GAIE,kBAAM,IAAI,EAAEuD,eAAO,CAAC,UAAU,CAAC,IAQhC,IAAA,CAAA;IAfM,QAAA,KAAO,CAAA,OAAA,GAAG,IAAI,CAAC;IASpB,QAAA,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YAEtB,IAAI,KAAI,CAAC,MAAM,EAAE;gBACf,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACrC,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC1C,SAAA;;SACF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAjB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC;aACb;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,QAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YACL,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;aACrC,CAAA;SACF,CAAA;QAEM,QAAO,CAAA,SAAA,CAAA,OAAA,GAAP,eAAY,CAAA;QACpB,OAAA,QAAA,CAAA;IAAA,CApCD,CAA8B,OAAO,CAoCpC,CAAA;;ICvCD,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;QAA+B,SAAO,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;IAEpC,IAAA,SAAA,SAAA,CACE,IAAc,EAAA;IAAd,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IAEd,QAAA,OAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,IAAI,EAAEA,eAAO,CAAC,MAAM,CAAC,IAAA,IAAA,CAAA;SAC5B;IAGM,IAAA,SAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;SACN,CAAA;QACF,OAAA,SAAA,CAAA;IAAA,CAXD,CAA+B,OAAO,CAWrC,CAAA;;ICTD,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;QAAoC,SAAO,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;QAKzC,SACE,cAAA,CAAA,IAAc,EACd,MAAuB,EAAA;IADvB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAuB,GAAA,IAAA,CAAA,EAAA;IAFzB,QAAA,IAAA,KAAA,GAIE,kBAAM,IAAI,EAAEA,eAAO,CAAC,WAAW,CAAC,IAQjC,IAAA,CAAA;IAfM,QAAA,KAAO,CAAA,OAAA,GAAG,IAAI,CAAC;IASpB,QAAA,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YAEtB,IAAI,KAAI,CAAC,MAAM,EAAE;gBACf,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACrC,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC1C,SAAA;;SACF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAjB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,cAAa,CAAA,SAAA,EAAA,eAAA,EAAA;IAAxB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC;aACb;;;IAAA,KAAA,CAAA,CAAA;QAEM,cAAO,CAAA,SAAA,CAAA,OAAA,GAAP,eAAY,CAAA;QACpB,OAAA,cAAA,CAAA;IAAA,CA5BD,CAAoC,OAAO,CA4B1C,CAAA;;IC1BD,IAAA,GAAA,kBAAA,YAAA;IAIE,IAAA,SAAA,GAAA,CACE,IAAc,EACd,OAAiC,EACjC,EAA8E,EAAA;IAF9E,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACd,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAA,GAAmBA,eAAO,CAAC,MAAM,CAAA,EAAA;IACjC,QAAA,IAAA,EAAA,GAAA,EAAA,KAAA,KAAA,CAAA,GAA4E,EAAE,GAAA,EAAA,EAA5E,MAAM,GAAA,EAAA,CAAA,MAAA,EAAE,aAAa,GAAA,EAAA,CAAA,aAAA,CAAA;IAEvB,QAAA,QAAQ,OAAO;gBACb,KAAKA,eAAO,CAAC,MAAM;IAAE,gBAAA;wBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,iBAAA;oBAAC,MAAM;gBAER,KAAKA,eAAO,CAAC,KAAK;IAAE,gBAAA;wBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,iBAAA;oBAAC,MAAM;gBAER,KAAKA,eAAO,CAAC,UAAU;IAAE,gBAAA;wBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAA;oBAAC,MAAM;IACT,SAAA;SACF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aACxB;IAED,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACzB;;;IAJA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,GAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAtB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;aAC9B;IAMD,QAAA,GAAA,EAAA,UAAuB,KAAc,EAAA;IACnC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC/B;;;IARA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAQ,IAAI,CAAC,IAAiB,CAAC,OAAO,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,GAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,YAAY,QAAQ,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,YAAY,QAAQ,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAa,CAAA,SAAA,EAAA,eAAA,EAAA;IAAxB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,YAAY,cAAc,CAAC;aAC5C;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAjB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAQ,IAAI,CAAC,IAAiB,CAAC,MAAM,CAAC;aACvC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAQ,IAAI,CAAC,IAAiB,CAAC,QAAQ,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAQ,IAAI,CAAC,IAAiB,CAAC,QAAQ,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,GAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAQ,IAAI,CAAC,IAAiB,CAAC,SAAS,CAAC;aAC1C;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,GAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;IACJ,QAAA,IAAI,CAAC,IAAiB,CAAC,qBAAqB,EAAE,CAAC;SACjD,CAAA;IAEM,IAAA,GAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;IACJ,QAAA,IAAI,CAAC,IAAiB,CAAC,qBAAqB,EAAE,CAAC;SACjD,CAAA;IAEM,IAAA,GAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;IACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SACnC,CAAA;IAEM,IAAA,GAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB,CAAA;QACF,OAAA,GAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;ICrFD,IAAA,cAAA,kBAAA,YAAA;IA+BE,IAAA,SAAA,cAAA,GAAA;YA7BiB,IAAA,CAAA,aAAa,GAAG,IAAIvD,oBAAe,CAAQ,EAAE,CAAC,CAAC;IAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAIC,YAAO,EAAS,CAAC;IACrC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAIA,YAAO,EAAQ,CAAC;IAElD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACnB,QAAA,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;IAcvB,QAAA,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;IACtB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;IAKtB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;IAER,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAQ,CAAC;SAEjC;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAI,cAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;aACtC;IAsCD,QAAA,GAAA,EAAA,UAAgB,KAAY,EAAA;IAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aAC7C;;;IAzCA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,GAAG,CAAC,IAAI,CAAR,EAAQ,CAAC,CAAC;aAChD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aAChC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;IAED,QAAA,GAAA,EAAA,UAAiB,KAAc,EAAA;IAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;;;IAJA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAI,cAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACjCE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAC5BA,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAI,cAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;aAChC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC;aAC7C;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU;IACnB,iBAAA,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,GAAG,CAAC,cAAc,EAAE,CAAA,EAAA,CAAC,CAAC;aACvC;;;IAAA,KAAA,CAAA,CAAA;QAEM,cAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,KAAwB,EAAA;;IAC5C,QAAA,IAAI,KAAK,EAAE;IACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;IACpC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,YAAA,EAAM,OAAA,KAAK,CAAL,EAAK,CAAC,CAAC;gBAClD,IAAI,CAAC,cAAc,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;;gBAGlD,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;sBAC1C,KAAK,CAAC,OAAO;sBACb,IAAI,CAAC;IACV,SAAA;SACF,CAAA;QAEM,cAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,OAA0D,EAAA;IACpF,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;SACjD,CAAA;IAED;;;IAGG;QACI,cAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,IAAW,EAAA;YACpC,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,QAAQ,IAAI,CAAC,UAAU;oBACrB,KAAK+C,mBAAW,CAAC,MAAM,CAAC;oBACxB,KAAKA,mBAAW,CAAC,MAAM,CAAC;oBACxB,KAAKA,mBAAW,CAAC,IAAI;IAAE,oBAAA;IACrB,wBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7B,qBAAA;wBAAC,MAAM;IAER,gBAAA,SAAS;IACP,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7B,iBAAA;IACF,aAAA;IAED,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAChC,SAAA;IAAM,aAAA;IACL,YAAA,IACE,IAAI,CAAC,UAAU,KAAKA,mBAAW,CAAC,QAAQ;IACxC,iBAAC,IAAI,CAAC,UAAU,KAAKA,mBAAW,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,EACrE;IACA,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAA;IAAM,iBAAA;IACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,UAAU,GAAGA,mBAAW,CAAC,IAAI,CAAC;YAEnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;IAED;;;IAGG;QACI,cAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAkB,EAAA;IACpC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB,CAAA;IAED;;IAEG;IACI,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;IACL,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB,CAAA;IAED;;;;IAIG;IACI,IAAA,cAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UACL,SAA4B,EAC5B,OAAkC,EAAA;YAElC,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,OAAO,EAAA;gBACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CACjC,SAAS,EACTK,eAAO,CAAC,MAAM,EACd,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACvC,CAAC;gBAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAE1B,YAAA,OAAO,IAAI,CAAC;IACb,SAAA;IAAM,aAAA;IACL,YAAA,OAAO,KAAK,CAAC;IACd,SAAA;SAEF,CAAA;IAED;;;;IAIG;IACI,IAAA,cAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UACL,IAA6C,EAC7C,OAAkC,EAAA;YAF7B,IAuBN,KAAA,GAAA,IAAA,CAAA;IAnBC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,eAAa,GAAG,KAAK,CAAC;IAE1B,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAA;oBAChB,IAAI,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;wBACjC,eAAa,GAAG,IAAI,CAAC;IACtB,iBAAA;IACH,aAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAE1B,YAAA,OAAO,eAAa,CAAC;IACtB,SAAA;IAAM,aAAA;gBACL,IAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAE1B,YAAA,OAAO,OAAO,CAAC;IAChB,SAAA;SACF,CAAA;IAED;;;IAGG;QACI,cAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,IAAwE,EAAA;YAAnF,IAyBN,KAAA,GAAA,IAAA,CAAA;YAxBC,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,QAAA,IAAM,cAAc,GAAG,UAAC,GAAG,EAAE,MAAM,EAAA;gBACjC,OAAO,GAAG,KAAK,MAAM,CAAC;IACxB,SAAC,CAAC;IAEF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;IAEvB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAA;IAChB,gBAAA,WAAW,CAAC,IAAI,CAAhB,KAAA,CAAA,WAAW,EAAS,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAE,CAAA,CAAA,CAAA;IAC5D,aAAC,CAAC,CAAC;IACJ,SAAA;IAAM,aAAA,IAAIC,mBAAU,CAAC,IAAI,CAAC,EAAE;IAC3B,YAAA,WAAW,CAAC,IAAI,CAAhB,KAAA,CAAA,WAAW,EAAS,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAG,IAAiC,CAAC,CAAE,CAAA,CAAA,CAAA;IAC/E,SAAA;IAAM,aAAA,IAAIR,iBAAQ,CAAC,IAAI,CAAC,EAAE;IACzB,YAAA,WAAW,CAAC,IAAI,CAAhB,KAAA,CAAA,WAAW,EAAS,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAE,CAAA,CAAA,CAAA;IAC3D,SAAA;IAED,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAE1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACrC,SAAA;IAED,QAAA,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;SAC7B,CAAA;QAEM,cAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,IAAI,EAAE,IAAI,EAAE,YAAoB,EAAE,cAAsB,EAAA;IAAtB,QAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAsB,GAAA,KAAA,CAAA,EAAA;IACtE,QAAA,IAAI,KAAK,CAAC;IACV,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChD,IAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,QAAA,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;YACnC,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IACxD,QAAA,SAAS,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;YAEnC,IAAI,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;IACjD,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAChC,gBAAA,YAAY,GAAI,aAAA,CAAA,CAAA,IAAI,CAAK,EAAA,MAAA,CAAA,YAAY,EAAC,CAAC;IACxC,aAAA;gBAED,YAAY;qBACT,MAAM,CAAC,UAAC,WAAW,EAAA;oBAClB,OAAO,WAAW,KAAK,IAAI,CAAC;IAC9B,aAAC,CAAC;qBACD,OAAO,CAAC,UAAC,WAAW,EAAA;oBACnB,IAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,gBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3B,aAAC,CAAC,CAAC;gBAEL,IAAM,oBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpD,YAAA,SAAS,CAAC,MAAM,CAAC,oBAAkB,EAAE,CAAC,CAAC,CAAC;IAExC,YAAA,YAAY,CAAC,OAAO,CAAC,UAAC,WAAW,EAAE,MAAM,EAAA;oBACvC,SAAS,CAAC,MAAM,CAAC,oBAAkB,GAAG,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,aAAC,CAAC,CAAC;IACJ,SAAA;IAED,QAAA,IAAI,CAAC,UAAU,GAAQ,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,SAAS,EAAE,CAAC;SACpC,CAAA;IAEM,IAAA,cAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;QAEM,cAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAO,EAAA;YAC3B,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,IAAI,KAAK,OAAO,CAA3B,EAA2B,CAAE,CAAC;YAChF,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAE5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,cAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;YAAA,IAeN,KAAA,GAAA,IAAA,CAAA;;YAbC,IAAI,IAAI,CAAC,YAAY,EAAE;IACrB,YAAA,IAAI,OAAK,CAAC;IACV,YAAA,IAAI,CAAC,UAAU;IACZ,iBAAA,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK,EAAA;IAClB,gBAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,KAAK,OAAK,EAAE;wBAChC,OAAK,GAAG,GAAG,CAAC;IACb,iBAAA;IAAM,qBAAA;IACL,oBAAA,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAK,CAAC,GAAG,CAAC,CAAC;IACxD,iBAAA;IACH,aAAC,CAAC,CAAC;IACN,SAAA;YAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;QAEO,cAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,IAAI,EAAA;YAArB,IAgBP,KAAA,GAAA,IAAA,CAAA;YAfC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,YAAY,EAAE;IACrB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,GAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;IAC/C,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA;IAClB,gBAAA,OAAO,IAAI,GAAG,CACZ,GAAG,EACHO,eAAO,CAAC,MAAM,EACd,EAAE,aAAa,EAAE,KAAI,CAAC,cAAc,EAAE,CACvC,CAAC;IACJ,aAAC,CAAC,CAAC;IACH,YAAA,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,EAAC,CAAC;IAC7B,SAAA;SACF,CAAA;QAEO,cAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,IAAI,EAAA;YAArB,IAaP,KAAA,GAAA,IAAA,CAAA;YAZC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,UAAU,GAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;IAC/C,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA;IAClB,gBAAA,OAAO,IAAI,GAAG,CACZ,GAAG,EACHA,eAAO,CAAC,MAAM,EACd,EAAE,aAAa,EAAE,KAAI,CAAC,cAAc,EAAE,CACvC,CAAC;IACJ,aAAC,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,UAAU,CAAA,CAAA,EAAA,MAAA,CAAK,IAAI,CAAA,CAAC,CAAC;IACjD,SAAA;SACF,CAAA;IAEO,IAAA,cAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;IACN,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,GAAG,CAAC,OAAO,EAAE,CAAb,EAAa,CAAC,CAAC;SACjD,CAAA;IAEO,IAAA,cAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;IACN,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;IAC/B,aAAA,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK,EAAA;IACjB,YAAA,OAAO,CAAC,CAAE,GAAW,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;IACtE,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UACN,SAA4B,EAC5B,OAAgF,EAAA;IAEhF,QAAA,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE;IACtB,YAAA,OAAO,GAAG,UAAC,GAAG,EAAE,MAAM,EAAA;oBACpB,OAAO,GAAG,KAAK,MAAM,CAAC;IACxB,aAAC,CAAA;IACF,SAAA;YAED,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,OAAO,EAAA,EAAK,OAAA,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA,EAAA,CAAC,CAAC;IAE7F,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACtB,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAClD,YAAA,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEpE,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,CACpC,WAAW,EACX,YAAY,CAAC,IAAI,EACjB;oBACE,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,aAAa,EAAE,YAAY,CAAC,QAAQ;IACrC,aAAA,CACF,CAAC;IAEF,YAAA,OAAO,IAAI,CAAC;IACb,SAAA;IAED,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;IAED;;;;IAIG;IACK,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UACN,SAAmC,EACnC,OAAkC,EAAA;IAGlC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,KAAK,EAAA;gBAC1B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;oBACpC,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEzC,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,aAAA;IACH,SAAC,CAAC,CAAC;IAEH,QAAA,OAAO,WAAW,CAAC;SACpB,CAAA;IAED;;IAEG;QACK,cAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,IAAI,EAAA;YAAhB,IAwDP,KAAA,GAAA,IAAA,CAAA;YAvDC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAAE,YAAA,OAAO,IAAI,CAAA;IAAE,SAAA;YAE3D,IAAI,SAAS,GAAe,EAAE,CAAC;IAC/B,QAAA,IAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;gBACf,IAAM,SAAS,GAAG,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAM,YAAY,GAAG,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAElD,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;oBAClC,IAAM,KAAK,GAAG,IAAI,QAAQ,CACxB,SAAS,EACT,KAAI,CAAC,cAAc,CACpB,CAAC;IAEF,gBAAA,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAEtB,IAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAE1C,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACrC,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,aAAA;IAAM,iBAAA;oBACL,IAAM,KAAK,GAAG,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC5C,IAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE1C,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,aAAA;IACH,SAAC,CAAC,CAAC;IAEH,QAAA,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;IACzB,YAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ;qBAClC,SAAS,CAAC,UAAC,GAAG,EAAA;IACb,gBAAA,OAAO,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAC5B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,CAAC,IAAI,KAChB,QAAQ,EAAE,QAAQ,CAAC,YAAY,IAC/B,CAAC;IACL,aAAC,CAAC,CAAC;IAEL,YAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;IACtB,gBAAA,IAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,gBAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,aAAA;IACH,SAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACpC,aAAA,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,EAAA;gBAChB,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAA,KAAA,CAAR,GAAG,EAAA,aAAA,CAAA,CAAM,IAAI,CAAK,EAAA,MAAA,CAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAA,CAAA;IAClC,aAAA;IAAM,iBAAA;IACL,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,aAAA;IAED,YAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACV,CAAA;QACF,OAAA,cAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;ICjeD,IAAA,wBAAA,kBAAA,YAAA;QAWE,SACU,wBAAA,CAAA,OAAe,EACf,MAAsB,EACtB,YAAmC,EACnC,UAAgC,EAChC,QAA2B,EAC3B,mBAA4B,EAAA;IAL5B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;IACf,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;IACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;IACnC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;IAChC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;IAC3B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAS;YAf9B,IAAA,CAAA,eAAe,GAAmB;IACxC,YAAA,IAAI,EAAE,IAAI;IACV,YAAA,KAAK,EAAE,IAAI;IACX,YAAA,QAAQ,EAAE,IAAI;IACd,YAAA,aAAa,EAAE,IAAI;aACpB,CAAC;IAEM,QAAA,IAAA,CAAA,SAAS,GAAG,IAAItD,YAAO,EAAQ,CAAC;YAUtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,wBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;IAC7D,gBAAA,OAAO,IAAI,CAAC;IACb,aAAA;gBAED,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,SAAS;oBACrB,SAAS,EAAE,IAAI,CAAC,cAAc;iBAC/B,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;aAC9D;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAjB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;aAC3C;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;;IAGL,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IAC7B,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,SAAA;;YAGD,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAsC,CAAC,CAAC;gBAC3F,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAmC,CAAC,CAAC;IACtF,SAAA;;;IAID,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;gBACrE,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,aAAA;gBAED,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,aAAA;IACF,SAAA;;YAGD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAEhE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAA;IAEM,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;IACL,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACvC,CAAA;IAEM,IAAA,wBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;QAEO,wBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,MAA+B,EAAA;IAC9D,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;gBAChB,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1C,SAAA;IAED,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAE;gBACjB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5C,SAAA;SACF,CAAA;QAEO,wBAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,MAA4B,EAAA;IACxD,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjD,SAAA;IAED,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,aAAa,EAAE;gBACzB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3D,SAAA;SACF,CAAA;IAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,YAAA;YAAA,IAYP,KAAA,GAAA,IAAA,CAAA;IAXC,QAAAoD,UAAK,CACH,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAC3B;IACE,aAAA,IAAI,CACHlD,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,uBAAuB,CAAC,KAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAClE,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YAAA,IAiBP,KAAA,GAAA,IAAA,CAAA;IAhBC,QAAAkD,UAAK,CACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC9B;IACE,aAAA,IAAI,CACHlD,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;IACT,YAAA,IAAM,OAAO,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEpC,YAAA,IAAI,OAAO,EAAE;oBACX,KAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,aAAA;IAAM,iBAAA;oBACL,KAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,aAAA;IACH,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,IAAY,EAAE,SAAiB,EAAA;YAC1D,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,aAAa,CAAC;IACjB,gBAAA,QAAQ,EAAE,IAAI;IACd,gBAAA,aAAa,EAAE,SAAS;IACzB,aAAA,CAAC,CAAC;IACJ,SAAA;IAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC7B,IAAI,IAAI,IAAI,SAAS,EAAE;IACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5F,aAAA;IAAM,iBAAA;oBACL,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpD,aAAA;IACF,SAAA;SACF,CAAA;QAEO,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,MAAM,EAAA;YACpC,IAAI,IAAI,CAAC,mBAAmB,EAAE;IAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,SAAA;SACF,CAAA;QAEO,wBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,IAAI,EAAA;YACxB,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE1C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACd,MAAM,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA,EAAA,CAAC;iBACjE,OAAO,CAAC,UAAC,IAAI,EAAA;IACZ,YAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,SAAC,CAAC,CAAC;YAEL,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SAC5C,CAAA;QACF,OAAA,wBAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;ICtMD,IAAA,iBAAA,kBAAA,YAAA;IAUE,IAAA,SAAA,iBAAA,GAAA;IANQ,QAAA,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;IAI9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIF,YAAO,EAAQ,CAAC;SAExB;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAlB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;QAEM,iBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,GAAoB,EAAA;IACtC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;SACvB,CAAA;QAEM,iBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAuB,EAAA;YACvC,IAAI,CAAC,YAAY,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAExB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,SAAA;SACF,CAAA;QAEM,iBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAoB,EAAA;YAArC,IAYN,KAAA,GAAA,IAAA,CAAA;IAXC,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE9B,MAAM,CAAC,KAAK,GAAG,YAAA;gBACb,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,YAAA,KAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACnC,YAAA,KAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;gBACjC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,SAAC,CAAA;IAED,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;SAC9B,CAAA;QAEM,iBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,MAAoB,EAAA;YAAzC,IAUN,KAAA,GAAA,IAAA,CAAA;IATC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC1B,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,YAAA;gBACvB,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,YAAA,KAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACnC,YAAA,KAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;gBACjC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,SAAC,CAAA;SACF,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;IACL,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;IACL,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACvC,CAAA;QACF,OAAA,iBAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;AC7EWwD,wCAIX;IAJD,CAAA,UAAY,kBAAkB,EAAA;IAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACf,CAAC,EAJWA,0BAAkB,KAAlBA,0BAAkB,GAI7B,EAAA,CAAA,CAAA;;ACWD,QAAA,oBAAA,kBAAA,YAAA;IA0BE,IAAA,SAAA,oBAAA,GAAA;IAxBO,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;IAEX,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;IAEf,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,CAAC;IACT,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;;IAGX,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;YAEb,IAAO,CAAA,OAAA,GAAG,IAAIzD,oBAAe,CAAS,CAAC,CAAC,CAAC;IAEzC,QAAA,IAAA,CAAA,SAAS,GAAuByD,0BAAkB,CAAC,IAAI,CAAC;IACxD,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;IAEjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAIxD,YAAO,EAAc,CAAC;IAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAIA,YAAO,EAAQ,CAAC;IAClC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAIA,YAAO,EAAE,CAAC;IAE5B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;IACzB,QAAA,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;IAC/B,QAAA,IAAa,CAAA,aAAA,GAAG,WAAW,CAAC;IAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SAEzB;IAGhB,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAIhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;aAChC;;IAND,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAjB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,OAAO;IAChB,iBAAA,IAAI,CACHyD,8BAAoB,EAAE,CACvB,CAAC;aACL;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAHvB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAACvD,mBAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;aAC7D;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAHlB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAHjB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;IAED;;;;IAIG;IACH,QAAA,GAAA,EAAA,UAAkB,KAAK,EAAA;IACrB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBAErB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBACpE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,aAAA;IAAM,iBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;IACnC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,aAAA;aACF;;;IAfA,KAAA,CAAA,CAAA;IAoBD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAHhB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,QAAQ,IAAI,CAAC,QAAQ;oBACnB,KAAKsD,0BAAkB,CAAC,IAAI;wBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;oBAChC,KAAKA,0BAAkB,CAAC,MAAM;wBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,aAAA;IAED,YAAA,OAAO,EAAE,CAAC;aACX;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAa,CAAA,SAAA,EAAA,eAAA,EAAA;IAAxB,QAAA,GAAA,EAAA,YAAA;gBACE,QAAQ,IAAI,CAAC,QAAQ;oBACnB,KAAKA,0BAAkB,CAAC,IAAI;wBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;oBACpB,KAAKA,0BAAkB,CAAC,MAAM;IAC5B,oBAAA,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;wBAEvC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;IACzC,oBAAA,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjB,oBAAA,OAAO,KAAK,CAAC;IAChB,aAAA;IAED,YAAA,OAAO,EAAE,CAAC;aACX;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;IAH5B;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,eAAe;IACzB,kBAAE,EAAE;IACJ,kBAAE;IACA,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;IACpB,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;qBACxB,CAAC;aACL;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAH9B;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,YAAA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAE9B,OAAO;oBACL,MAAM,EAAE,IAAI,GAAG,KAAK;IACpB,gBAAA,KAAK,EAAA,KAAA;iBACN,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;IAHjC;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IAChD,YAAA,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC9D,YAAA,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE7D,OAAO;IACL,gBAAA,MAAM,EAAA,MAAA;oBACN,KAAK,EAAE,IAAI,CAAC,YAAY;iBACzB,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAtB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;IAED,QAAA,GAAA,EAAA,UAAoB,QAA4B,EAAA;IAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAIA,0BAAkB,CAAC,IAAI,GAAG,QAAQ,CAAC;aAChF;;;IAJA,KAAA,CAAA,CAAA;IASD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAH1B;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,QAAQ,KAAKA,0BAAkB,CAAC,IAAI,CAAC;aAClD;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;IAH5B;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,QAAQ,KAAKA,0BAAkB,CAAC,MAAM,CAAC;aACpD;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAH1B;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,QAAQ,KAAKA,0BAAkB,CAAC,IAAI,CAAC;aAClD;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAJvB;;;IAGG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,QAAQ,IAAI,CAAC,QAAQ;oBACnB,KAAKA,0BAAkB,CAAC,IAAI;wBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;oBACvC,KAAKA,0BAAkB,CAAC,MAAM;wBAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC;IAC1C,aAAA;IAED,YAAA,OAAO,KAAK,CAAC;aACd;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAHtB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,QAAQ,IAAI,CAAC,QAAQ;oBACnB,KAAKA,0BAAkB,CAAC,IAAI;wBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;oBACvC,KAAKA,0BAAkB,CAAC,MAAM;wBAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC;IAC1C,aAAA;IAED,YAAA,OAAO,KAAK,CAAC;aACd;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;IAAhC,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,sBAAsB,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,oBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IALtB;;;;IAIG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,IAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;IAC7C,YAAA,IAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IACzB,YAAA,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAExD,OAAU,IAAI,GAAI,GAAA,GAAA,EAAI,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,oBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UACL,MAAwB,EACxB,QAAwC,EACxC,qBAA6B,EAAA;IAA7B,QAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAA6B,GAAA,KAAA,CAAA,EAAA;IAG7B,QAAA,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,CAAC,MAAM,EAAE;IACjB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,aAAA;gBAED,IAAI,MAAM,CAAC,KAAK,EAAE;IAChB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,aAAA;IAED,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,SAAA;IAED,QAAA,IAAI,QAAQ,EAAE;IACZ,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;SACrD,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAwB,CAAA,SAAA,EAAA,0BAAA,EAAA;IAHpC;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAY,oBAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;IAHtC;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACtD;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAwB,CAAA,SAAA,EAAA,0BAAA,EAAA;IAHpC;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aACjD;;;IAAA,KAAA,CAAA,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAY,oBAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;IAHtC;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACtE;;;IAAA,KAAA,CAAA,CAAA;IAED;;;;;;IAMG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,MAAM,EAAE,gBAAoB,EAAE,iBAAyB,EAAA;IAA/C,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAoB,GAAA,CAAA,CAAA,EAAA;IAAE,QAAA,IAAA,iBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,iBAAyB,GAAA,KAAA,CAAA,EAAA;YACzE,IAAI,CAAC,iBAAiB,EAAE;IACtB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzB,YAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;IACnC,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE9B,YAAA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;IACjC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/B,aAAA;IAED,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACvB,SAAA;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,CAAA;;;;;IAMD;;;;;;;;IAQG;IAEH;;IAEG;;;;;;;;;;;;;;;;;;;;;;;;;QA8BI,oBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,MAAsC,EAAA;IACvD,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAEjC,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAIT,iBAAQ,CAAC,MAAM,CAAC,IAAK,MAA+B,CAAC,KAAK,EAAE;IACvF,YAAA,IAAI,CAAC,aAAa,GAAI,MAA+B,CAAC,KAAK,CAAC;IAC7D,SAAA;SACF,CAAA;IAED;;IAEG;;;;IAKH;;IAEG;;;;;;;;;;IAWI,IAAA,oBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;YACL,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB,CAAA;IAED;;;;IAIG;QACI,oBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAAK,EAAA;IACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;IAEnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,YAAY;IACjC,YAAA,OAAO,EAAE,KAAK;IACf,SAAA,CAAC,CAAC;SACJ,CAAA;IAED;;;;IAIG;QACI,oBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,IAAI,EAAA;IAClB,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;SAC3B,CAAA;IAED;;;;IAIG;QACI,oBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,IAAI,EAAA;YAClB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IACnC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEjB,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;IAC5B,gBAAA,OAAO,EAAE,IAAI;IACd,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACd,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;YACL,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;oBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI;IACnB,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;IACjB,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEd,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;oBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI;IACnB,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACL,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;oBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI;IACnB,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACL,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;IAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBAEvB,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;oBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI;IACnB,aAAA,CAAC,CAAC;IACJ,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,oBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAa,EAAA;IAC7B,QAAA,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;SAC5B,CAAA;IAEM,IAAA,oBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,CAAA;IAED;;IAEG;IACI,IAAA,oBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;SAC7B,CAAA;IAED;;;;IAIG;QACK,oBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,MAAM,EAAA;;IACxB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;IACjC,SAAA;IAED,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAE5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;SAChC,CAAA;IAED;;IAEG;IACK,IAAA,oBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;IACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;SAC5C,CAAA;IAED;;IAEG;IACK,IAAA,oBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;IACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SACnD,CAAA;QACF,OAAA,oBAAA,CAAA;IAAA,CAAA,EAAA;;IC5jBD,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;QAA6C,SAAkB,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;IAE7D,IAAA,SAAA,oBAAA,CAAY,KAAQ,EAAA;IAClB,QAAA,OAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAA,IAAA,CAAA;SAC5B;QAEM,oBAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,KAAQ,EAAA;YAClB,IAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEjC,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBACzB,MAAM,CAAA,SAAA,CAAA,IAAI,YAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,SAAA;SACF,CAAA;QACF,OAAA,oBAAA,CAAA;IAAA,CAdD,CAA6ChD,oBAAkB,CAc9D,CAAA;;ICZD,IAAA,gBAAA,kBAAA,YAAA;IAaE,IAAA,SAAA,gBAAA,CAAY,KAAkC,EAAA;IAAlC,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAkC,GAAA,EAAA,CAAA,EAAA;IATtC,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;YAGlB,IAAA,CAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAI7C,IAAA,CAAA,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAGjD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACnB;IAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAIhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;IAND,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAIf,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;IAND,QAAA,GAAA,EAAA,UAAgB,KAAa,EAAA;IAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAIpB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;IAND,QAAA,GAAA,EAAA,UAAqB,KAAc,EAAA;IACjC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAInB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;IAND,QAAA,GAAA,EAAA,UAAoB,KAAc,EAAA;IAChC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAQ1B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;aAC9B;;IAVD,QAAA,GAAA,EAAA,UAA2B,KAAc,EAAA;IACvC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAE9B,IAAI,IAAI,CAAC,eAAe,EAAE;IACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,aAAA;aACF;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAIpB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;aAC/B;;IAND,QAAA,GAAA,EAAA,UAAqB,KAAqB,EAAA;IACxC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;IAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAIhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;IAND,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAIhB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;IAND,QAAA,GAAA,EAAA,UAAiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAIpB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;IAND,QAAA,GAAA,EAAA,UAAqB,KAAwB,EAAA;IAC3C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;;;IAAA,KAAA,CAAA,CAAA;IAOD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAIlB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAClC;;IAND,QAAA,GAAA,EAAA,UAAmB,KAAc,EAAA;IAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;QAEO,gBAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,KAA6B,EAAA;YAAnC,IAaP,KAAA,GAAA,IAAA,CAAA;IAZC,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACf,OAAO,CAAC,UAAC,GAAG,EAAA;IACX,YAAA,QAAQ,GAAG;IACT,gBAAA,KAAK,OAAO;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IACjD,gBAAA,KAAK,MAAM;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IAC/C,gBAAA,KAAK,OAAO;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IACjD,gBAAA,KAAK,WAAW;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IACzD,gBAAA,KAAK,UAAU;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IACvD,gBAAA,KAAK,MAAM;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IAClD,gBAAA,KAAK,SAAS;IAAE,oBAAA;IAAE,wBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE,qBAAA;wBAAC,MAAM;IACtD,aAAA;IACH,SAAC,CAAC,CAAC;SACN,CAAA;QACF,OAAA,gBAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;AC/HD,QAAA,iBAAA,kBAAA,YAAA;IAWE,IAAA,SAAA,iBAAA,GAAA;IARO,QAAA,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;IAC9B,QAAA,IAAkB,CAAA,kBAAA,GAAa,EAAE,CAAC;YAGjC,IAAA,CAAA,YAAY,GAAG,IAAIA,oBAAe,CAAU,KAAK,CAAC,CAAC;IACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIC,YAAO,EAAsB,CAAC;IACrD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAIA,YAAO,EAAE,CAAC;SAEnB;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAACE,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aAC/D;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAACA,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aAC3D;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;gBACE,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,OAAO;IACL,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;IAC9B,oBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;qBACxC,CAAC;IACH,aAAA;IAED,YAAA,OAAO,SAAS,CAAC;aAClB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;IAAzB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,iBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,iBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,UAA4B,KAAc,EAAA;gBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;aAChC;;;IAAA,KAAA,CAAA,CAAA;QAEM,iBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAc,EAAA;IACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;IACL,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;SAC1B,CAAA;IAED;;;;IAIG;QACI,iBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,SAAS,EAAA;YAC5B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE;IAC3E,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAErC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,iBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,MAAc,EAAA;YAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;IACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,SAAA;SACF,CAAA;IAED;;;;IAIG;QACI,iBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,IAAY,EAAA;YACtC,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;IACR,SAAA;IAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;IAED;;;;IAIG;QACI,iBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,OAAO,EAAA;YAAvB,IAeN,KAAA,GAAA,IAAA,CAAA;IAdC,QAAA,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;IACrB,YAAA,IAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC;oBACtC,KAAK,EAAE,MAAM,CAAC,IAAI;oBAClB,IAAI,EAAE,MAAM,CAAC,KAAK;IAClB,gBAAA,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,MAAM,CAAC,SAAS;IAC5B,aAAA,CAAC,CAAC;IAEH,YAAA,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC;IAC5B,gBAAA,UAAU,EAAA,UAAA;IACX,aAAA,CAAC,CAAC;IAEH,YAAA,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,SAAC,CAAC,CAAC;SACJ,CAAA;IAED;;;;IAIG;QACI,iBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,IAAsB,EAAA;IACzC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAE5B,IAAI,CAAC,IAAI,EAAE;gBACT,IAAI,CAAC,+BAA+B,EAAE,CAAC;IAEvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,aAAA;IAED,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAE7B,OAAO;IACR,SAAA;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAE3B,YAAA,OAAO,CAAC,IAAI,CAAC,iDAAA,GAC2B,IAAI,CAAC,KAAK,GAAA,yCAAA,GAC5B,IAAI,CAAC,KAAK,GAAA,uEAE/B,CAAC,CAAC;IACJ,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,YAAA,IAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;sBACvE4C,wBAAgB,CAAC,GAAG;IACtB,kBAAEA,wBAAgB,CAAC,IAAI,CAAC;IAC1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtC,SAAA;IAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;IACL,QAAA,IAAM,MAAM,GACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,GAAG,CAAC,QAAQ,CAAZ,EAAY,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;IACR,SAAA;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAIA,wBAAgB,CAAC,GAAG,CAAC,CAAC;SAC9D,CAAA;QAEM,iBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,IAAY,EAAA;YAC3B,OAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,IAAI,CAAC,cAAc,CAAA,CAAA,EAAA,MAAA,CAAK,IAAI,CAAC,kBAAkB,CAAA,CAAA,CACvD,IAAI,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAA,EAAA,CAAC,CAAC;SACrD,CAAA;IAED;;IAEG;IACI,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;SAC5B,CAAA;QAEO,iBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAc,EAAA;;IAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IACpB,YAAA,OAAO,KAAK,CAAC;IACd,SAAA;;YAGD,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,CAAC,eAAe,EAAE,CAAC;IAC1B,SAAA;IAAM,aAAA;IACL,YAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,IAAI,CAAC,kBAAkB,WAAK,IAAI,CAAC,cAAc,CAChD,CAAA,CAAA,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,OAAO,CAAA,EAAA,CAAC;IAC5B,iBAAA,OAAO,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,GAAG,CAAC,OAAO,GAAG,KAAK,CAAnB,EAAmB,CAAC,CAAC;IAEzC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,SAAA;IAED,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;SAC7B,CAAA;QAEO,iBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,SAAS,EAAA;IACpC,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;SACjD,CAAA;IAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;YACN,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,OAAO;IACR,SAAA;IAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACzB,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;IAC/B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;IAC5C,SAAA,CAAC,CAAC;SACJ,CAAA;IAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,+BAA+B,GAA/B,YAAA;IACN,QAAA,IAAM,eAAe,GAAG,IAAI,CAAC,cAAc;iBACxC,IAAI,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,eAAe,CAAA,EAAA,CAAC,CAAC;IAE5C,QAAA,IAAI,eAAe,EAAE;IACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjD,SAAA;SACF,CAAA;QACF,OAAA,iBAAA,CAAA;IAAA,CAAA,EAAA;;IC5LD,IAAM,wBAAwB,GAAG,eAAe,CAAC;AAGjD,QAAA,IAAA,kBAAA,YAAA;IAmEE,IAAA,SAAA,IAAA,CACU,GAAe,EACf,MAAyB,EACzB,QAAyB,EACzB,eAAgC,EAChC,MAAc,EACd,KAAqB,EACrB,WAAkC,EAClC,QAAiB,EAAA;IANjB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAyB,GAAA,EAAA,CAAA,EAAA;IADzB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;IACf,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IACzB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;IACzB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;IAChC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IACd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;IACrB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;IAClC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;IA9DpB,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;YAab,IAAA,CAAA,YAAY,GAAG,IAAI/C,oBAAe,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAA,CAAA,QAAQ,GAAG,IAAIA,oBAAe,CAAC,KAAK,CAAC,CAAC;IAEtC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAGlC,QAAA,IAAY,CAAA,YAAA,GAAiB,IAAI,CAAC;IAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAIC,YAAO,EAAkC,CAAC;IACvD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAIA,YAAO,EAAQ,CAAC;IACrC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAIA,YAAO,EAAQ,CAAC;IACpC,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;IACd,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;IACd,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;IACnB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;IACnB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IAEpB,QAAA,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;;IAGpB,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;IAK1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAIA,YAAO,EAAE,CAAC;YAEjB,IAAA,CAAA,aAAa,GAAG,IAAID,oBAAe,CAAsB,IAAI,CAAC,CAAC;IAC/D,QAAA,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,aAAa;iBACvD,IAAI,CAAC2D,aAAG,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAArB,EAAqB,CAAC,EAAEC,qBAAW,EAAE,CAAC,CAAC;IAmBxD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,cAAc,CAAC,YAAY,CAACV,mBAAW,CAAC,IAAI,CAAC,CAAC;IACnD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,SAAA;SAEF;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,IAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAA1B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,IAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,IAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAA9B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,oBAAoB,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;QAEM,IAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAK,EAAA;IACtB,QAAA,IAAM,OAAO,GAAuB;IAClC,YAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;aACrC,CAAC;YAEF,IAAM,MAAM,GAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjD,QAAA,OAAO,MAAM,YAAY,OAAO,GAAGW,SAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;SAC1D,CAAA;;;;;;;;IAUD;;;;IAIG;QACI,IAA0B,CAAA,SAAA,CAAA,0BAAA,GAA1B,UAA2B,SAAS,EAAA;IACzC,QAAA,IAAM,cAAc,GAAG;gBACrB,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,SAAS,EAAE,IAAI,CAAC,gBAAgB;gBAChC,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,MAAM,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;IAEF,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACzC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;;YAG1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;;IAG7B,QAAA,IAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;YAC5D,IAAM,iBAAiB,GAAG,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9D,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAE9C,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;IAEzC,YAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;IAChF,SAAA;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,IAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB,IAAI,CAAC,cAAc,CAAC,YAAY,CAACX,mBAAW,CAAC,MAAM,CAAC,CAAC;YAErD,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACzB,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAChC,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,SAAA;SACF,CAAA;IAED;;IAEG;IACI,IAAA,IAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YAAA,IAsEN,KAAA,GAAA,IAAA,CAAA;YArEC,IAAI,CAAC,MAAM,CAAC,YAAY;IACrB,aAAA,IAAI,CACH/C,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACA,SAAS,CAAC,UAAC,KAAiB,EAAA;gBAC3B,KAAI,CAAC,cAAc,CAAC,YAAY,CAAC+C,mBAAW,CAAC,UAAU,CAAC,CAAC;;IAGzD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,IAAI,KAAI,CAAC,MAAM,CAAC,eAAe,EAAE;IAC7E,gBAAA,KAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IACjC,aAAA;IAED,YAAA,IAAI,KAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;IACjC,gBAAA,KAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAE/B,IAAI,KAAI,CAAC,SAAS,EAAE;IAClB,oBAAA,KAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;wBAC1E,KAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC5D,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,iBAAA;IACF,aAAA;gBAED,IAAI,CAAC,KAAI,CAAC,UAAU,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,eAAe,EAAE;IAEpD,gBAAA,IAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAC,OAAO,EAAA;wBAC/F,OAAO,KAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,iBAAC,CAAC,CAAC;IAEH,gBAAA,IAAI,IAAE,GAAG,KAAI,CAAC,GAAG,CAAC,aAAa,CAAC;oBAEhC,IAAI,CAAC,QAAQ,EAAE;wBACb,IAAM,IAAI,GAAG,KAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAC5D,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;IACxD,wBAAA,IAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;IACpB,qBAAA;IACF,iBAAA;IAED,gBAAA,KAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC/B,qBAAA,IAAI,CACH5B,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,KAAI,CAAC,UAAU,CAAC,CAC3B;IACA,qBAAA,SAAS,CAAC,YAAA;wBACT,IAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,iBAAC,CAAC,CAAC;IACN,aAAA;IAED,YAAA,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,SAAC,CAAC,CAAC;YAEL,IAAI,CAAC,OAAO,CAAC,eAAe;IACzB,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,cAAc,CAAC,YAAY,CAAC+C,mBAAW,CAAC,IAAI,CAAC,CAAC;IACnD,YAAA,KAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBAErB,IAAI,KAAI,CAAC,gBAAgB,EAAE;IACzB,gBAAA,KAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAChC,gBAAA,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAChC,aAAA;IAAM,iBAAA;IACL,gBAAA,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,aAAA;IACH,SAAC,CAAC,CAAC;YAEL,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB,CAAA;QAEM,IAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,OAAyB,EAAA;IACtC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc;IAC/B,aAAA,eAAe,CAAC;IAEnB,QAAA,IAAI,OAAO,EAAE;IACX,YAAA,QAAQ,GAAG,QAAQ;qBAChB,MAAM,CAAC,OAAO,CAAC,CAAC;IACpB,SAAA;IAED,QAAA,OAAO,QAAQ;iBACZ,GAAG,CAAC,UAAC,IAAI,EAAA;IACR,YAAA,OAAOY,kBAAS,CAAC,IAAI,CAAC,CAAC;IACzB,SAAC,CAAC,CAAC;SACN,CAAA;QAEM,IAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,OAAwB,EAAA;YACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1D,CAAA;IAED;;;;IAIG;QACI,IAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAc,EAAA;IAChC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,KAAK,KAAK,EAAE;IAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC;;;;IAK1C,SAAA;SACF,CAAA;IAEM,IAAA,IAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;YACL,IAAI,IAAI,CAAC,qBAAqB,EAAE;IAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;IAC1C,SAAA;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,SAAA;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,SAAA;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC1B,SAAA;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;IACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,SAAA;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;IACvB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAC/B,SAAA;IAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAEvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAE3B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;SAC/B,CAAA;IAED;;;;IAIG;QACK,IAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,MAAoB,EAAA;;IACrC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;IAChD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;IACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAE1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAEpC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,CAAA;IAED;;;;IAIG;QACK,IAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,MAAM,EAAA;YAAzB,IAoCP,KAAA,GAAA,IAAA,CAAA;;;YAjCC,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;IACtD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,SAAA;IACD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;IAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,SAAA;YACD,IAAI,MAAM,CAAC,KAAK,EAAE;IAChB,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,SAAA;IACD,QAAA,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;IAChC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1B,SAAA;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,SAAA;IAAM,aAAA;gBACL,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC;IAC7C,kBAAE,IAAI;IACN,kBAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAA;YAED,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,SAAA;IACD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACnB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,SAAA;YAED,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,YAAA;IACtB,gBAAA,MAAM,CAAC,gBAAgB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC9E,aAAC,CAAC;IACH,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;YAAA,IA8BP,KAAA,GAAA,IAAA,CAAA;YA7BC,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAM,aAAa,GAAG,IAAI,SAAS,CAAC;IAClC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS;IAC1C,gBAAA,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,UAAC,GAAG,EAAA;wBACT,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC5C;IACD,gBAAA,OAAO,EAAE,IAAI;IACd,aAAA,CAAC,CAAC;IAEH,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IACzB,aAAA;IAED,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,aAAA;IAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;IACjC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAChB,oBAAA,IAAI,EAAE,wBAAwB;wBAC9B,IAAI,EAAEC,aAAQ,CAAC,QAAQ;IACvB,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc;IAClD,iBAAA,CAAC,CAAC;IACJ,aAAA;IACF,SAAA;SAEF,CAAA;IAED;;;;;IAKG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,YAA8B,EAAE,QAAwC,EAAA;IACzF,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACvE,CAAA;IAED;;IAEG;QACK,IAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAO,EAAA;IACzB,QAAA,IAAI,OAAO,EAAE;IACX,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,SAAA;IAED,QAAA,IAAI,CAAC,aAAa;gBAChB,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;IACjD,oBAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAChE,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UACN,eAAsC,EACtC,eAAgC,EAAA;YAF1B,IAQP,KAAA,GAAA,IAAA,CAAA;IAJC,QAAA,IAAI,eAAe,EAAE;IACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzF,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,cAAc,CAAC,WAAW,CAA/B,EAA+B,CAAC,CAAC;IACvE,SAAA;SACF,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;IACN,QAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC;IACvC,YAAA,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;IAC7B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;IAC7C,SAAA,CAAC,CAAC;SACJ,CAAA;QAEO,IAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,WAA8B,EAAA;IAC/C,QAAA,IAAI,WAAW,EAAE;IACf,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;IAC5C,SAAA;SACF,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,4BAA4B,GAA5B,YAAA;IACN,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAChD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;SACH,CAAA;IAED;;IAEG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;YAAA,IAoGP,KAAA,GAAA,IAAA,CAAA;YAnGC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;;IAGxC,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;gBAClB,MAAM,GAAGC,kBAAa,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,iBAAA,IAAI,CACHL,aAAG,CAAC,UAAC,EAAQ,EAAA;wBAAR,EAAA,GAAA,MAAA,CAAA,EAAA,EAAA,CAAA,CAAQ,EAAP,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;IAAM,gBAAA,OAAA,MAAM,CAAA;iBAAA,CAAC,CAC1B,CAAC;IACL,SAAA;YAED,MAAM;IACH,aAAA,IAAI,CACHM,sBAAY,CAAC,EAAE,CAAC,EAChBd,aAAG,CAAC,YAAA;IACF,YAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B,CAAC,EACFA,aAAG,CAAC,YAAA;;gBACF,CAAA,EAAA,GAAA,KAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,oBAAoB,EAAE,CAAC;IACzC,SAAC,CAAC,EACFQ,aAAG,CAAC,UAAC,MAA+B,EAAA;IAClC,YAAA,IAAI,KAAK,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAE,CAAC;gBAErC,IAAI,KAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;IAChE,gBAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,aAAA;IAAM,iBAAA;IACL,gBAAA,IAAM,qBAAqB,GAAG,CAAC,KAAI,CAAC,YAAY;IAC3C,uBAAA,KAAI,CAAC,cAAc,CAAC,SAAS,KAAKT,mBAAW,CAAC,MAAM,KACpD,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IAEjC,gBAAA,KAAK,GAAG,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3H,aAAA;IAED,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAC9B,gBAAA,MAAM,CAAC,MAAM,CACX,KAAK,EACL;IACE,oBAAA,KAAK,EAAK,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAA,GAAA,GAAI,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAW;IACpF,iBAAA,CACF,CAAC;IACH,aAAA;IAED,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC3B,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACA,KAAK,CAAA,EAAA,EACR,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,mBAAmB,EAAA,CAC1C,CAAC;IACH,aAAA;IAED,YAAA,OAAO,KAAK,CAAC;IACf,SAAC,CAAC,EACFgB,mBAAS,CAAC,UAAC,KAAK,EAAA;IACd,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,cAAc,EAAE;IACjE,gBAAA,OAAO,KAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;IAC1C,qBAAA,IAAI,CACHC,eAAK,CAAC,KAAK,CAAC,CACb,CAAC;IACL,aAAA;IAED,YAAA,OAAOC,OAAE,CAAC,KAAK,CAAC,CAAC;IACnB,SAAC,CAAC,EACFF,mBAAS,CAAC,UAAC,KAAK,EAAA;gBACd,IAAI,KAAI,CAAC,aAAa,EAAE;IACtB,gBAAA,OAAO,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC7B,qBAAA,IAAI,CACHG,oBAAU,CAAC,UAAC,KAAK,EAAE,OAAO,EAAA;IACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,oBAAA,OAAOC,UAAK,CAAC;qBACd,CAAC,CACH,CAAC;IACL,aAAA;IAED,YAAA,OAAOF,OAAE,CAAC,KAAK,CAAC,CAAC;IACnB,SAAC,CAAC,EACFF,mBAAS,CAAC,UAAC,KAAK,EAAA;IACd,YAAA,IAAM,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACxC,iBAAA,IAAI,CACHG,oBAAU,CAAC,UAAC,KAAK,EAAA;IACf,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,gBAAA,OAAOC,UAAK,CAAC;iBACd,CAAC,CACH,CAAC;gBAEJ,OAAON,kBAAa,CAAC,CAACI,OAAE,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACjD,SAAC,CAAC,EACFC,oBAAU,CAAC,UAAC,KAAK,EAAE,OAAO,EAAA;IACxB,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,YAAA,OAAOC,UAAK,CAAC;aACd,CAAC,EACFnE,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACA,SAAS,CAAC,UAAC,QAAQ,EAAA;IAClB,YAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAE1B,YAAA,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC9B,EAAE,YAAQ,GAAC,EAAE,YAAA;IACd,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;YAAA,IAgCP,KAAA,GAAA,IAAA,CAAA;YA/BC,IAAI,CAAC,cAAc,CAAC,YAAY;IAC7B,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACA,SAAS,CAAC,UAAC,IAAW,EAAA;IACrB,YAAA,IAAI,KAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IAEvB,gBAAA,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;IAEjC,gBAAA,IAAI,KAAI,CAAC,MAAM,CAAC,eAAe,EAAE;IAC/B,oBAAA,KAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3C,iBAAA;IAAM,qBAAA;;wBAEL,IAAI,KAAI,CAAC,cAAc,CAAC,OAAO,IAAI,KAAI,CAAC,MAAM,CAAC,WAAW,EAAE;4BAC1D,KAAI,CAAC,cAAc,CAAC,YAAY,CAAC+C,mBAAW,CAAC,QAAQ,CAAC,CAAC;IAEvD,wBAAA,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;4BACrC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,qBAAA;IAAM,yBAAA;IACL,wBAAA,KAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3C,qBAAA;IACF,iBAAA;IACF,aAAA;;gBAGD,IAAI,KAAI,CAAC,SAAS,EAAE;IAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;wBACf,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,iBAAC,CAAC,CAAC;IACJ,aAAA;IACH,SAAC,CAAC,CAAC;SACN,CAAA;IAED;;;IAGG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,YAAA;YAAA,IAQP,KAAA,GAAA,IAAA,CAAA;YAPC,IAAI,CAAC,OAAO,CAAC,eAAe;IACzB,aAAA,IAAI,CACH/C,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;IACA,aAAA,SAAS,CAAC,YAAA;gBACT,KAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;YAAA,IA6DP,KAAA,GAAA,IAAA,CAAA;YA5DC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,OAAO;IACR,SAAA;YAED,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAEnB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;IACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAA;IAGD,YAAA,IAAI,CAAC,QAAQ;IACV,iBAAA,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC/B,iBAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;qBACA,SAAS,CAAC,UAAC,gBAAkC,EAAA;IAC5C,gBAAA,KAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;oBACzC,KAAI,CAAC,qBAAqB,GAAG,gBAAgB;IAC1C,qBAAA,SAAS,CAAC,YAAA;wBACT,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,oBAAA,IAAM,SAAS,GAAG,KAAI,CAAC,cAAc,CAAC,SAAS,CAAC;;wBAGhD,IAAI,CAAC,KAAI,CAAC,YAAY;IACjB,2BAAA,CAAC,KAAI,CAAC,MAAM,CAAC,WAAW;IACxB,2BAAA,SAAS,KAAK+C,mBAAW,CAAC,MAAM,EACnC;4BAEA,KAAI,CAAC,cAAc,CAAC,YAAY,CAACA,mBAAW,CAAC,IAAI,CAAC,CAAC;4BACnD,YAAY,GAAG,IAAI,CAAC;IAErB,qBAAA;IAAM,yBAAA,IACL,SAAS,KAAKA,mBAAW,CAAC,MAAM;4BAChC,SAAS,KAAKA,mBAAW,CAAC,MAAM;IAChC,wBAAA,SAAS,KAAKA,mBAAW,CAAC,IAAI,EAC9B;4BACA,YAAY,GAAG,IAAI,CAAC;IACrB,qBAAA;6BAAM,IAAI,KAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAI,CAAC,MAAM,CAAC,WAAW,EAAE;;4BAE7D,YAAY,GAAG,IAAI,CAAC;4BACpB,KAAI,CAAC,cAAc,CAAC,YAAY,CAACA,mBAAW,CAAC,IAAI,CAAC,CAAC;IACnD,wBAAA,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACtB,qBAAA;IAED,oBAAA,IAAI,YAAY,EAAE;IAChB,wBAAA,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;4BACnB,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAC5B,qBAAA;IACH,iBAAC,CAAC,CAAC;oBAEL,KAAI,CAAC,cAAc,CAAC,iBAAiB;IAClC,qBAAA,IAAI,CACH/C,mBAAS,CAAC,KAAI,CAAC,UAAU,CAAC,CAC3B;IACA,qBAAA,SAAS,CAAC,YAAA;wBACT,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAC5B,iBAAC,CAAC,CAAC;IACP,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;YAAA,IA6CP,KAAA,GAAA,IAAA,CAAA;;YA5CC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO;IACR,SAAA;;;YAID,IAAM,UAAU,GACd,aACK,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAC3B,CAAA,EAAA,MAAA,CAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAClC,CAAA,CAAA,MAAM,CAAC,UAAC,GAAG,EAAE,MAAM,EAAA;IAEnB,YAAA,IAAM,WAAW,GAAG;oBAClB,IAAI,EAAE,MAAM,CAAC,KAAK;oBAClB,KAAK,EAAE,MAAM,CAAC,IAAI;IAClB,gBAAA,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;iBACvF,CAAC;IAEF,YAAA,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEtB,YAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;IAET,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;kBACzC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;kBAC3F,IAAI,CAAC;;YAGT,IAAI,CAAC,YAAY,GAAG;gBAClB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;gBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;;IAE/B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,YAAA,KAAK,EAAE,UAAU;IACjB,YAAA,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC,YAAA,MAAM,EAAE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;gBACpE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC,CAAC;SACH,CAAA;IAED;;;;IAIG;QACK,IAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAO,EAAA;YACxB,IAAI,IAAI,CAAC,YAAY,EAAE;IACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAA;IAED;;;;;IAKG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,WAAW,EAAE,UAAU,EAAA;YAC1C,IAAI,IAAI,CAAC,cAAc,EAAE;IACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC9C,SAAA;IAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAErC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;YAGzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,SAAA;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC+C,mBAAW,CAAC,MAAM,CAAC,CAAC;;IAGrD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACzB,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAChC,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,SAAA;SACF,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;;YAEN,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;IAC/D,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAEnD,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAErD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,SAAA;SACF,CAAA;;IAGO,IAAA,IAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,WAAW,EAAE,UAAU,EAAA;IACxC,QAAA,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAEpD,YAAA,IAAM,aAAa,GAAG,UAAU,CAAC,SAAS,KAAK,KAAK,GAAGH,wBAAgB,CAAC,GAAG,GAAGA,wBAAgB,CAAC,IAAI,CAAC;IACpG,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,SAAA;IAAM,aAAA;;IAEL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,SAAA;SACF,CAAA;QAEO,IAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,EAAiB,EAAA;IAAjB,QAAA,IAAA,EAAA,GAAA,aAAiB,EAAhB,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;IACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACtB,SAAA;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,IAAM,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,QAAQ,CAAC,MAAM,EACf,SAAS,EACT,IAAI,CAAC,cAAc,CAAC,SAAS,KAAKG,mBAAW,CAAC,QAAQ,CACvD,CAAC;IACH,SAAA;IAAM,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IAC9B,YAAA,OAAO,CAAC,GAAG,CACT,oBAAoB,EACpB,yCAAyC,EACzC,2CAA2C;oBAC3C,4EAA4E;IAC5E,gBAAA,8EAA8E,CAC/E,CAAC;IACH,SAAA;;YAGD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;YAIvD,IAAI,IAAI,CAAC,SAAS,EAAE;IAElB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBAC1E,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,aAAA;IAAM,iBAAA;oBACL,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO;IACnD,uBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAE1D,gBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,aAAA;gBAED,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9E,SAAA;IAED,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,IAAI,CAAC,kBAAkB,EAAE;gBACxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAEY,kBAAS,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1G,SAAA;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC/D,SAAA;;YAGD,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;IAC3C,eAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;mBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EACvC;IACA,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACtB,SAAA;IAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B,CAAA;IAED;;;;;;;IAOG;QACK,IAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,YAAY,EAAA;IACzC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;IAChC,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;IACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,aAAA;IAAM,iBAAA;oBACL,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,aAAA;IACF,SAAA;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAE/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;gBACjD,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,SAAA;SACF,CAAA;IAED;;;;;;;IAOG;IACK,IAAA,IAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,oBAAoB,EAAE,GAAG,EAAA;YAAtC,IAcP,KAAA,GAAA,IAAA,CAAA;IAbC,QAAA,IAAM,kBAAkB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAErD,IAAI,kBAAkB,YAAY5D,eAAU,EAAE;gBAC5C,kBAAkB;IACf,iBAAA,IAAI,CACHoB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;IACA,iBAAA,SAAS,CAAC;oBACT,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,MAAM,EAAE,GAAA;oBACzB,KAAK,EAAE,eAAS;IACjB,aAAA,CAAC,CAAC;IACN,SAAA;SACF,CAAA;IAEO,IAAA,IAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YAAA,IAOP,KAAA,GAAA,IAAA,CAAA;IANC,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,OAAO;IACjB,aAAA,MAAM,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAA,EAAA,CAAC;iBACrD,OAAO,CAAC,UAAC,MAAM,EAAA;IACd,YAAA,KAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,SAAC,CAAC,CAAC;SACN,CAAA;QACF,OAAA,IAAA,CAAA;IAAA,CAAA,EAAA;;ICv+BD,IAAM,gBAAgB,GAAG,iBAAiB,CAAC;IAG3C,IAAA,qBAAA,kBAAA,UAAA,MAAA,EAAA;QAA2C,SAAoC,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAA;QAI7E,SACE,qBAAA,CAAA,MAAe,EACf,MAAsB,EAAA;IAFxB,QAAA,IAAA,KAAA,GAIE,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,MAAM,EAAE,MAAM,CAAC,IACtB,IAAA,CAAA;IAPS,QAAA,KAAS,CAAA,SAAA,GAAG,gBAAgB,CAAC;;SAOtC;;KATH,CAA2CoE,uBAAoC;6IAAlE,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7D,eAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,aAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAAX,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iJAArB,qBAAqB,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBADjCC,aAAU;;;ACHX,QAAA,sBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,sBAAA,GAAA;;;;8IAAa,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,QAAA,EAAA,mCAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;sBAHlCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,mCAAmC;qBAC9C,CAAA;;;ACCD,QAAA,yBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,yBAAA,GAAA;;;;iJAAa,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0HAAzB,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;sBAHrCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,yCAAyC;qBACpD,CAAA;;;ACCD,QAAA,+BAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,+BAAA,GAAA;;;;uJAAa,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gIAA/B,+BAA+B,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;sBAH3CI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,sDAAsD;qBACjE,CAAA;;;ACDD,QAAA,qBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,qBAAA,GAAA;;;;6IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBADjCI,YAAS;uBAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;kCAEzB,OAAO,EAAA,CAAA;0BAAtBC,QAAK;oBACU,KAAK,EAAA,CAAA;0BAApBA,QAAK;oBACiB,SAAS,EAAA,CAAA;0BAA/BA,QAAK;2BAAC,OAAO,CAAA;;;ACHhB,QAAA,mBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,mBAAA,GAAA;;;;2IAAa,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;sBAD/BI,YAAS;uBAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;kCAEvB,OAAO,EAAA,CAAA;0BAAtBC,QAAK;oBACU,KAAK,EAAA,CAAA;0BAApBA,QAAK;oBACiB,SAAS,EAAA,CAAA;0BAA/BA,QAAK;2BAAC,OAAO,CAAA;;;ACHhB,QAAA,qBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,qBAAA,GAAA;;;;6IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBADjCI,YAAS;uBAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;kCAEzB,OAAO,EAAA,CAAA;0BAAtBC,QAAK;oBACU,KAAK,EAAA,CAAA;0BAApBA,QAAK;oBACiB,SAAS,EAAA,CAAA;0BAA/BA,QAAK;2BAAC,OAAO,CAAA;;;ACEhB,QAAA,0BAAA,kBAAA,UAAA,MAAA,EAAA;QAAgD,SAAmB,CAAA,0BAAA,EAAA,MAAA,CAAA,CAAA;IAAnE,IAAA,SAAA,0BAAA,GAAA;;;;KAAA,CAAgD,mBAAmB;kJAAtD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2HAA1B,0BAA0B,EAAA,QAAA,EAAA,6CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;sBAHtCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,6CAA6C;qBACxD,CAAA;;;ACCD,QAAA,0BAAA,kBAAA,UAAA,MAAA,EAAA;QAAgD,SAAmB,CAAA,0BAAA,EAAA,MAAA,CAAA,CAAA;IAAnE,IAAA,SAAA,0BAAA,GAAA;;;;KAAA,CAAgD,mBAAmB;kJAAtD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2HAA1B,0BAA0B,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;sBAHtCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,wBAAwB;qBACnC,CAAA;;;ICDD,IAAA,0BAAA,kBAAA,YAAA;IADA,IAAA,SAAA,0BAAA,GAAA;IAGU,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAIP,YAAO,EAAE,CAAC;IACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIA,YAAO,EAAE,CAAC;SAenC;IAbC,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CACpCE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAA;aACF;;;IAAA,KAAA,CAAA,CAAA;QACM,0BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,OAAY,EAAA;IACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1C,CAAA;IAEM,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;;;kJAjBU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAC,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sJAA1B,0BAA0B,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;sBADtCC,aAAU;;;ACAX,QAAA,iCAAA,kBAAA,YAAA;IAYE,IAAA,SAAA,iCAAA,CAAoB,eAA2C,EAAA;IAA3C,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAA4B;SAAI;QAT5D,iCAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,KAAK,EAAA;YAChB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnD,CAAA;;;yJAPU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmE,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAApE,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kIAAjC,iCAAiC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;sBAD7CI,YAAS;uBAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAA;kHAI5C,KAAK,EAAA,CAAA;0BADXiE,eAAY;2BAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;oBAQ1B,GAAG,EAAA,CAAA;0BADThE,QAAK;;;ACUR,QAAA,qBAAA,kBAAA,YAAA;IA2CE,IAAA,SAAA,qBAAA,GAAA;IAFiB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;SAE5C;IAEhB,IAAA,MAAA,CAAA,cAAA,CAAW,qBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAArB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IADlB,QAAA,GAAA,EAAA,UACmB,KAAc,EAAA;IAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IADhB,QAAA,GAAA,EAAA,UACiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IADf,QAAA,GAAA,EAAA,UACgB,KAAa,EAAA;IAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC;aACrC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IADpB,QAAA,GAAA,EAAA,UACqB,KAAc,EAAA;IACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1C;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IADnB,QAAA,GAAA,EAAA,UACoB,KAAc,EAAA;IAChC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAD1B,QAAA,GAAA,EAAA,UAC2B,KAAc,EAAA;IACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,KAAK,CAAC;aAChD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IADpB,QAAA,GAAA,EAAA,UACqB,KAAqB,EAAA;IACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1C;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IADhB,QAAA,GAAA,EAAA,UACiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IADhB,QAAA,GAAA,EAAA,UACiB,KAAa,EAAA;IAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACW,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IADpB,QAAA,GAAA,EAAA,UACqB,KAAwB,EAAA;IAC3C,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1C;;;IAAA,KAAA,CAAA,CAAA;;;6IAjGU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAGlB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA4B,cAAW,EAG1C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAIrB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAAA,cAAW,EAG/C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,oGAI1B,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAUA,cAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG/C,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQ1B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAUA,cAAW,EAGxC,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAInB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAAA,cAAW,EAG1C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,iFAdlB,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA5B,aAAA,EAAA,CAAA,CAAA;sHAxBvC,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBAHjCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;qBAC3B,CAAA;8EAKQ,cAAc,EAAA,CAAA;0BADpB6B,eAAY;2BAAC,qBAAqB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAIjE,aAAa,EAAA,CAAA;0BADnBK,eAAY;oBAAC,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAK9C,mBAAmB,EAAA,CAAA;0BADzBA,eAAY;2BAAC,0BAA0B,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAItE,kBAAkB,EAAA,CAAA;0BADxBK,eAAY;oBAAC,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAKnD,mBAAmB,EAAA,CAAA;0BADzBA,eAAY;2BAAC,0BAA0B,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAItE,kBAAkB,EAAA,CAAA;0BADxBK,eAAY;oBAAC,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAKnD,aAAa,EAAA,CAAA;0BADnBqC,kBAAe;oBAAC,IAAA,EAAA,CAAA,iCAAiC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;oBAKlE,YAAY,EAAA,CAAA;0BADlBrC,eAAY;2BAAC,mBAAmB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAI/D,WAAW,EAAA,CAAA;0BADjBK,eAAY;oBAAC,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAK5C,cAAc,EAAA,CAAA;0BADpBA,eAAY;2BAAC,qBAAqB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAIjE,aAAa,EAAA,CAAA;0BADnBK,eAAY;oBAAC,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAY1C,OAAO,EAAA,CAAA;0BADjB5B,QAAK;2BAAC,MAAM,CAAA;oBAMF,KAAK,EAAA,CAAA;0BADfA,QAAK;oBAMK,IAAI,EAAA,CAAA;0BADdA,QAAK;oBAMK,SAAS,EAAA,CAAA;0BADnBA,QAAK;oBAMK,QAAQ,EAAA,CAAA;0BADlBA,QAAK;oBAMK,eAAe,EAAA,CAAA;0BADzBA,QAAK;oBAMK,SAAS,EAAA,CAAA;0BADnBA,QAAK;oBAMK,KAAK,EAAA,CAAA;0BADfA,QAAK;oBAMK,KAAK,EAAA,CAAA;0BADfA,QAAK;oBAMK,SAAS,EAAA,CAAA;0BADnBA,QAAK;2BAAC,OAAO,CAAA;;;ACjHhB,QAAA,yBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,yBAAA,GAAA;;;;iJAAa,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0HAAzB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;sBAHrCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,uBAAuB;qBAClC,CAAA;;;QCDY,sBAAsB,GAAG,IAAImE,iBAAc,CAAQ,wBAAwB,EAAE;QAC7E,cAAc,GAAG,IAAIA,iBAAc,CAAQ,gBAAgB;;ICSxE,IAAA,2BAAA,kBAAA,YAAA;IACE,IAAA,SAAA,2BAAA,CACU,OAAkB,EAClB,eAAyC,EACzC,MAAwB,EAAA;IAFxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;IAClB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;IACzC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;SAC7B;IAEL,IAAA,MAAA,CAAA,cAAA,CAAW,2BAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;IAA/B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,QAAQ,CAAC;aAC7D;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,2BAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;;;;SAIN,CAAA;;;mJAfU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjE,eAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,eAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,aAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAA3B,2BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,wECbxC,4MAIA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAW,eAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;sHDSa,2BAA2B,EAAA,UAAA,EAAA,CAAA;sBAJvCL,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,uBAAuB;IACjC,oBAAA,WAAW,EAAE,gCAAgC;qBAC9C,CAAA;;;AEaD,QAAA,iBAAA,kBAAA,YAAA;IAcE,IAAA,SAAA,iBAAA,CAAoB,MAAyB,EAAA;IAAzB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IAFrC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIV,YAAO,EAAQ,CAAC;SAGvC;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YAAA,IAQN,KAAA,GAAA,IAAA,CAAA;YAPC,IAAI,CAAC,OAAO,CAAC,eAAe;IACzB,aAAA,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;IACT,YAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,SAAC,CAAC,CAAC;SACN,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,KAAK,KAAK,EAAE;gBAClD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC4C,wBAAgB,CAAC,IAAI,CAAC,CAAC;IACnD,SAAA;IAAM,aAAA;gBACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAACA,wBAAgB,CAAC,GAAG,CAAC,CAAC;IAClD,SAAA;SACF,CAAA;QAEM,iBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAM,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE;IACzC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAA;SACF,CAAA;QAEM,iBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAAK,EAAA;IACnB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC7B,CAAA;;;yIAhDU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3C,aAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAjB,iBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,sSCzB9B,i9GAkFA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAwE,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA7D,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAAC,aAAA,CAAA,WAAA,EAAA,EAAA,eAAA,EAAAZ,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;sHDzDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;sBAP7BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;IAC1B,oBAAA,WAAW,EAAE,yBAAyB;wBACtC,SAAS,EAAE,CAAC,yBAAyB,CAAC;wBACtC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;IAC/C,oBAAA,mBAAmB,EAAE,IAAI;qBAC1B,CAAA;uHAGiB,MAAM,EAAA,CAAA;0BAArBH,QAAK;oBACU,OAAO,EAAA,CAAA;0BAAtBA,QAAK;oBACU,IAAI,EAAA,CAAA;0BAAnBA,QAAK;oBACU,UAAU,EAAA,CAAA;0BAAzBA,QAAK;oBAKC,SAAS,EAAA,CAAA;0BAHfA,QAAK;;0BACLI,cAAW;2BAAC,kBAAkB,CAAA;;0BAC9BA,cAAW;2BAAC,+BAA+B,CAAA;;;AEhB9C,QAAA,qBAAA,kBAAA,YAAA;IANA,IAAA,SAAA,qBAAA,GAAA;YAQS,IAAiB,CAAA,iBAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,QAAA,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;IAOZ,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;IACV,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;SAsBlB;IApBQ,IAAA,qBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YAEL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IACxE,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGgE,eAAM,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,SAAA;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAACA,eAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,aAAA;IACF,SAAA;SACF,CAAA;QAEM,qBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAsB,EAAA;YACvC,IAAI,OAAO,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,SAAA;SACF,CAAA;;;6IAhCU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAzE,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,kJClBlC,2kBAgBA,EAAA,MAAA,EAAA,CAAA,mIAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAN,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBANjCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,gBAAgB;IAC1B,oBAAA,WAAW,EAAE,yBAAyB;wBACtC,SAAS,EAAE,CAAC,yBAAyB,CAAC;wBACtC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;kCAMiB,OAAO,EAAA,CAAA;0BAAtBH,QAAK;oBAGC,WAAW,EAAA,CAAA;0BADjBA,QAAK;;;AELR,QAAA,qBAAA,kBAAA,YAAA;IAOE,IAAA,SAAA,qBAAA,CACU,MAAyB,EAAA;IAAzB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IAH3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIR,YAAO,EAAE,CAAC;SAI7B;IAEE,IAAA,qBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YAAA,IAWN,KAAA,GAAA,IAAA,CAAA;IAVC,QAAAoD,UAAK,CACH,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CACvB;IACE,aAAA,IAAI,CACHlD,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;IACA,aAAA,SAAS,CAAC,YAAA;IACT,YAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,SAAC,CAAC,CAAC;SACN,CAAA;IAEM,IAAA,qBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAA;;;6IA3BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yHCpBlC,o6CA6BA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAK,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,gBAAA,EAAAC,aAAA,CAAA,kBAAA,EAAA,EAAA,eAAA,EAAAb,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDTa,qBAAqB,EAAA,UAAA,EAAA,CAAA;sBANjCO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,oBAAoB;IAC9B,oBAAA,WAAW,EAAE,6BAA6B;wBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;wBAC1C,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;uHAGiB,UAAU,EAAA,CAAA;0BAAzBH,QAAK;oBACU,IAAI,EAAA,CAAA;0BAAnBA,QAAK;;;IEjBR,IAAA,0BAAA,kBAAA,YAAA;IAKE,IAAA,SAAA,0BAAA,GAAA;SAAgB;IAET,IAAA,0BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACL,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,SAAA;SACF,CAAA;;;kJAXU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAL,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2HAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;sBAHtCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,qBAAqB;qBAChC,CAAA;8EAIQ,mBAAmB,EAAA,CAAA;0BADzBC,QAAK;2BAAC,mBAAmB,CAAA;;;ACyD5B,QAAA,eAAA,kBAAA,YAAA;QAoEE,SACS,eAAA,CAAA,iBAAoC,EACS,eAA6B,EAC7D,OAAwB,EACxB,UAA6B,EAC7B,UAA0B,EACtC,GAAe,EACf,gBAAiC,EACjC,OAAkB,EAClB,MAAyB,EACzB,oBAAgD,EAChD,OAAe,EACf,MAAsB,EACtB,YAAmC,EACnC,SAAmB,EAAA;IAbpB,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;IACS,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAc;IAC7D,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;IACxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;IAC7B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;IACtC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;IACf,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;IACjC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;IAClB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;IACzB,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA4B;IAChD,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;IACf,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;IACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;IACnC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;IAhFQ,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;IAWjD,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;IAGhB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAIK,eAAY,EAAQ,CAAC;IAYxC,QAAA,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;;IAGtB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAIA,eAAY,EAAE,CAAC;IAChC,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;IAIhB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;IAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAEnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAIb,YAAO,EAAE,CAAC;SA4C5B;IA5EL,IAAA,MAAA,CAAA,cAAA,CACW,eAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IADjB,QAAA,GAAA,EAAA,UACkB,MAAoB,EAAA;IACpC,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IA+BD,IAAA,MAAA,CAAA,cAAA,CACW,eAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAD1B,QAAA,GAAA,EAAA,UAC2B,SAAS,EAAA;IAClC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAE1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CACW,eAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAL1B;;;IAGG;IACH,QAAA,GAAA,EAAA,UAC2B,oBAAsD,EAAA;IAC/E,YAAA,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;gBAClD,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,gBAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IAC5D,aAAA;aACF;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CACY,eAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;IAD/B,QAAA,GAAA,EAAA,UACgC,QAA0B,EAAA;gBACxD,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;IACzC,aAAA;aACF;;;IAAA,KAAA,CAAA,CAAA;IAsBD,IAAA,MAAA,CAAA,cAAA,CAAW,eAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAHpB;;IAEG;IACH,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,eAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAIvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;aAC9C;IAND,QAAA,GAAA,EAAA,UAAwB,KAAc,EAAA;IACpC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAW,eAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;aACrD;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,eAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;IACrB,iBAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACzD,iBACE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO;IAC/B,qBAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAClE;qBACA,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACpF;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,eAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;uBAC1B,CAAC,IAAI,CAAC,SAAS;IACf,mBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;IACrB,mBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB;IAC5B,mBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,CAAC;uBAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAW,eAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAvB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;IACL,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACvB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAA;SACF,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,mCAAmC,EAAE,CAAC;SAC5C,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;YACL,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,SAAA;IAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC1B,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAC5B,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACpB,CAAA;QAEM,eAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,OAAyB,EAAA;YACtC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACnC,CAAA;QAEM,eAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,OAAwB,EAAA;YACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACnC,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UACL,IAA6C,EAC7C,OAAkC,EAAA;IAElC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3D,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UACL,GAAsB,EACtB,OAAkC,EAAA;IAElC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SAC3D,CAAA;QAEM,eAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,MAA6B,EAAA;YACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC1C,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;SACpC,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;SACvC,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;SACxC,CAAA;QAEM,eAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,IAAwE,EAAA;YACxF,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAClD,CAAA;QAEM,eAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAe,EAAA;IAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SAC7B,CAAA;QAEM,eAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,UAAkB,EAAA;IACrC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SACnC,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;IACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;IACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;SACzC,CAAA;QAEM,eAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAuB,EAAA;IACvC,QAAA,IAAI,OAAO,EAAE;IACX,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,SAAA;SACF,CAAA;IAEM,IAAA,eAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;IACL,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B,CAAA;IAED;;IAEG;IACI,IAAA,eAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,IAAY,EAAE,IAAa,EAAA;IACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,CAAC,CAAC,CAAC;SAC1C,CAAA;IAED;;IAEG;QACI,eAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,OAA0C,EAAA;YACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACpD,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;YACN,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;IAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAEzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IAChD,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC5B,SAAA;SACF,CAAA;IAED;;;;IAIG;QACK,eAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,MAAoB,EAAA;YAC1C,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,SAAA;IAED,QAAA,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe;IACtC,cAAE6D,kBAAS,CAAC,IAAI,CAAC,eAAe,CAAC;kBAC/B,EAAE,CAAC;IACP,QAAA,IAAM,UAAU,GAAGgB,kBAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE/E,QAAA,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE;IAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9C,SAAA;IAED,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEhD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAE/C,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CACnC,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,IAAI,CAAC,cAAc,EACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC;YAEF,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClE,SAAA;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B,CAAA;IAED;;;;IAIG;QACK,eAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,OAAuB,EAAA;YAA9C,IA+BP,KAAA,GAAA,IAAA,CAAA;IA9BC,QAAA,IAAM,eAAe,GAAG,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,SAAS,CAAhB,EAAgB,CAAC,CAAC;IAEpE,QAAA,IAAI,eAAe,EAAE;IACnB,YAAA,IAAM,eAAa,GAAG,eAAe,CAAC,KAAK,CAAC;gBAE5C,eAAe,CAAC,KAAK,GAAG,YAAA;IACtB,gBAAA,IAAI,eAAa,EAAE;wBACjB,eAAa,CAAC,IAAI,CAAC,CAAC;IACrB,iBAAA;IAED,gBAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE;IAC9C,oBAAA,IAAI,EAAE;IACJ,wBAAA,OAAO,EAAE,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;IAC3C,wBAAA,QAAQ,EAAE,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;IACrC,qBAAA;qBACF,CAAC;IACC,qBAAA,WAAW,EAAE;IACb,qBAAA,IAAI,CACH3E,mBAAS,CAAC,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/BA,mBAAS,CAAC,KAAI,CAAC,QAAQ,CAAC,CACzB;yBACA,SAAS,CAAC,UAAC,IAAI,EAAA;IACd,oBAAA,IAAI,IAAI,EAAE;4BACR,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAEhD,wBAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC5B,qBAAA;IACH,iBAAC,CAAC,CAAC;IACP,aAAC,CAAC;IACH,SAAA;SACF,CAAA;IAED;;IAEG;IACK,IAAA,eAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;YAAA,IAUP,KAAA,GAAA,IAAA,CAAA;YATC,IAAI,CAAC,IAAI,CAAC,OAAO;iBACd,eAAe;IACf,aAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/BA,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;iBACA,SAAS,CAAC,UAAC,IAAI,EAAA;IACd,YAAA,KAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;YAAA,IAMP,KAAA,GAAA,IAAA,CAAA;IALC,QAAA,IAAI,CAAC,UAAU;IACZ,aAAA,IAAI,CAACA,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,UAAC,GAAG,EAAA;gBACb,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3C,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,mCAAmC,GAAnC,YAAA;YAAA,IAUP,KAAA,GAAA,IAAA,CAAA;IATC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;gBACtC,IAAI,CAAC,oBAAoB,CAAC,mBAAmB;IAC1C,iBAAA,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;qBACA,SAAS,CAAC,UAAC,GAAG,EAAA;oBACb,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAC,CAAC,CAAC;IACN,SAAA;SACF,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YAAA,IAaP,KAAA,GAAA,IAAA,CAAA;YAZC,IAAI,CAAC,IAAI,CAAC,QAAQ;IACf,aAAA,IAAI,CACHiD,cAAI,CAAC,CAAC,CAAC,EACPR,gBAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,KAAK,CAAN,EAAM,CAAC,EACzBtB,cAAI,CAAC,CAAC,CAAC,EACPnB,mBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/BA,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;IACA,aAAA,SAAS,CAAC,YAAA;IACT,YAAA,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,YAAA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,SAAC,CAAC,CAAC;SACN,CAAA;IAEO,IAAA,eAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,QAAa,EAAE,QAAa,EAAA;IACzD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC3B,YAAA,OAAO,QAAQ,CAAC;IACjB,SAAA;SACF,CAAA;QAEO,eAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,aAA+B,EAAA;YACzD,IAAM,SAAS,GAAG4E,oBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACvE,CAAA;;;IAvZU,eAAA,CAAA,IAAA,GAAA3E,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,eAAe,gDAsEJ,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,aAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,aAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,eAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA4E,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA/E,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAtEjC,eAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EANf,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT,0BAA0B;YAC1B,qBAAqB;YACrB,iBAAiB;SAClB,EAoBa,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,2BAAU4B,cAAW,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG3C,+BAA+B,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAAA,cAAW,kEAGpD,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAUA,cAAW,EAqC9C,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,2BAAUA,cAAW,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAR3C,qBAAqB,EAZ3B,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAAoD,oBAAe,2DC1G5B,soNAyKA,EAAA,MAAA,EAAA,CAAA,wnMAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAAO,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAAX,aAAA,CAAA,SAAA,EAAA,EAAA,eAAA,EAAA/E,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDxGa,eAAe,EAAA,UAAA,EAAA,CAAA;sBAX3BO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,SAAS;IACnB,oBAAA,WAAW,EAAE,uBAAuB;wBACpC,SAAS,EAAE,CAAC,uBAAuB,CAAC;wBACpC,eAAe,EAAEC,0BAAuB,CAAC,MAAM;IAC/C,oBAAA,SAAS,EAAE;4BACT,0BAA0B;4BAC1B,qBAAqB;4BACrB,iBAAiB;IAClB,qBAAA;qBACF,CAAA;;;kCAuEImF,WAAQ;;kCAAIxD,SAAM;mCAAC,sBAAsB,CAAA;;kCACzCwD,WAAQ;;kCACRA,WAAQ;;kCACRA,WAAQ;;6BAvE0B,WAAW,EAAA,CAAA;0BAA/ClF,cAAW;2BAAC,eAAe,CAAA;oBAGrB,eAAe,EAAA,CAAA;0BADrBA,cAAW;2BAAC,4BAA4B,CAAA;oBAI9B,MAAM,EAAA,CAAA;0BADhBJ,QAAK;2BAAC,QAAQ,CAAA;oBAMR,WAAW,EAAA,CAAA;0BADjBA,QAAK;oBAIC,YAAY,EAAA,CAAA;0BADlBU,SAAM;oBAIA,eAAe,EAAA,CAAA;0BADrBkB,eAAY;oBAAC,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,CAAA;oBAIpD,wBAAwB,EAAA,CAAA;0BAD9BK,eAAY;oBAAC,IAAA,EAAA,CAAA,+BAA+B,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,CAAA;oBAI7D,kBAAkB,EAAA,CAAA;0BADxBK,eAAY;oBAAC,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,CAAA;oBAkBnD,eAAe,EAAA,CAAA;0BADzBI,YAAS;2BAACgD,oBAAe,CAAA;oBAaf,eAAe,EAAA,CAAA;0BADzBV,kBAAe;2BAAC,qBAAqB,CAAA;oBAS1B,mBAAmB,EAAA,CAAA;0BAD9BrC,eAAY;oBAAC,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAEL,cAAW,EAAE,CAAA;;;IE5GhE,IAAA,iCAAA,kBAAA,YAAA;IAME,IAAA,SAAA,iCAAA,CACU,eAAyC,EAAA;IAAzC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;IAH3C,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;YAK3B,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;IAED,IAAA,MAAA,CAAA,cAAA,CAAY,iCAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;IAAlC,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC;aACpD;;;IAAA,KAAA,CAAA,CAAA;IAEO,IAAA,iCAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YAAA,IAqDP,KAAA,GAAA,IAAA,CAAA;YApDC,IAAI,CAAC,MAAM,GAAG;IACZ,YAAA,MAAM,EAAE,KAAK;IACb,YAAA,WAAW,EAAE,KAAK;IAClB,YAAA,UAAU,EAAE,KAAK;IACjB,YAAA,OAAO,EAAE,KAAK;IACd,YAAA,MAAM,EAAE,KAAK;IACb,YAAA,OAAO,EAAE;oBACP,QAAQ,EAAEjC,uBAAe,CAAC,IAAI;IAC9B,gBAAA,QAAQ,EAAE,YAAA;wBACR,OAAO,KAAI,CAAC,aAAa,CAAC;qBAC3B;oBACD,IAAI,EAAE,UAAC,WAAW,EAAA;IAChB,oBAAA,KAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAE3B,oBAAA,IAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,IAAI,EAAK,EAAA,OAAA,IAAI,CAAC,IAAI,CAAT,EAAS,CAAC,CAAC;IACxD,oBAAA,KAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;6BAC1C,IAAI,CACHoD,aAAG,CAAC,YAAA;IACF,wBAAA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,qBAAC,CAAC,CACH;IACA,yBAAA,SAAS,CAAC,YAAA,GAAS,CAAC,CAAC;qBACzB;IACF,aAAA;IACD,YAAA,UAAU,EAAE;IACV,gBAAA;IACE,oBAAA,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,UAAC,MAA0B,EAAA;IAChC,wBAAA,KAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;yBACnD;IACF,iBAAA;IACD,gBAAA;IACE,oBAAA,KAAK,EAAE,QAAQ;IACf,oBAAA,MAAM,EAAE;IACN,wBAAA,KAAK,EAAE,SAAS;IAChB,wBAAA,QAAQ,EAAE,8CAA8C;IACzD,qBAAA;wBACD,KAAK,EAAE,UAAC,WAAW,EAAA;4BACjB,OAAO,KAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;yBACxD;IACF,iBAAA;IACF,aAAA;gBACD,KAAK,EAAE,UAAC,KAAK,EAAA;IACX,gBAAA,OAAO,KAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;IACtC,qBAAA,IAAI,CACHQ,aAAG,CAAC,UAAC,QAAQ,EAAA;IACX,oBAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC3B,CAAC,CACH,CAAC;iBACL;aAEF,CAAC;SACH,CAAA;;;yJArEU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjD,eAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAAN,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;IAAjC,iCAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,+DClB9C,0gBAoBA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA4F,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAhF,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAAgF,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAjF,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAAb,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;sHDFa,iCAAiC,EAAA,UAAA,EAAA,CAAA;sBAJ7CO,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,WAAW,EAAE,uCAAuC;wBACpD,eAAe,EAAEC,0BAAuB,CAAC,MAAM;qBAChD,CAAA;;;AEZD,QAAA,sBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,sBAAA,GAAA;;;;8IAAa,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAR,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,CAAA,CAAA;sHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;sBAHlCI,YAAS;IAAC,YAAA,IAAA,EAAA,CAAA;IACT,oBAAA,QAAQ,EAAE,mBAAmB;qBAC9B,CAAA;;;AC2ID,QAAA,YAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,YAAA,GAAA;;QACgB,YAAO,CAAA,OAAA,GAAd,UAAe,MAAyB,EAAA;IAAzB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAyB,GAAA,EAAA,CAAA,EAAA;YAC7C,OAAO;IACL,YAAA,QAAQ,EAAE,YAAY;IACtB,YAAA,SAAS,EAAE;IACT,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC7C,gBAAA;IACE,oBAAA,OAAO,EAAE,sBAAsB;IAC/B,oBAAA,UAAU,EAAE,mBAAmB;wBAC/B,IAAI,EAAE,CAAC,cAAc,CAAC;IACvB,iBAAA;IACF,aAAA;aACF,CAAC;SACH,CAAA;;;oIAbU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;qIAAZ,YAAY,EAAA,YAAA,EAAA;;YA9DrB,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,0BAA0B;YAC1B,wBAAwB;YACxB,eAAe;YACf,oBAAoB;YACpB,qBAAqB;YACrB,iBAAiB;YACjB,qBAAqB;YACrB,2BAA2B;YAC3B,iCAAiC;;YAGjC,eAAe;YACf,mBAAmB;YACnB,eAAe;YACf,iBAAiB;YACjB,qBAAqB;;YAGrB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,0BAA0B;YAC1B,0BAA0B;YAC1B,iCAAiC;YACjC,4BAA4B;YAC5B,2BAA2B;YAC3B,yBAAyB;YACzB,sBAAsB;YACtB,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB;YACtB,+BAA+B;;YAG/B,4BAA4B;;YAG5B,eAAe;qBA5Df+F,eAAY;YACZC,eAAY;YACZC,kBAAe;YACfC,gBAAa;YACbC,kBAAa;YACbC,wCAAwB;YACxBC,sBAAiB;YACjBC,oBAAe;YACfC,mBAAc;YACdC,iBAAY;YACZC,mBAAc;YACdC,mBAAc;YACdC,oBAAe;YACfC,mBAAgB;YAChBC,iBAAY;IACZ,QAAAC,iBAAc,aAgDd,eAAe;YACf,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,0BAA0B;YAC1B,0BAA0B;YAC1B,iCAAiC;YACjC,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,sBAAsB;YACtB,+BAA+B,CAAA,EAAA,CAAA,CAAA;IAGtB,YAAA,CAAA,IAAA,GAAA9G,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,YAAY,EAlFd,OAAA,EAAA,CAAA;gBACP+F,eAAY;gBACZC,eAAY;gBACZC,kBAAe;gBACfC,gBAAa;gBACbC,kBAAa;gBACbC,wCAAwB;gBACxBC,sBAAiB;gBACjBC,oBAAe;gBACfC,mBAAc;gBACdC,iBAAY;gBACZC,mBAAc;gBACdC,mBAAc;gBACdC,oBAAe;gBACfC,mBAAgB;gBAChBC,iBAAY;gBACZC,iBAAc;aACf,CAAA,EAAA,CAAA,CAAA;sHAiEU,YAAY,EAAA,UAAA,EAAA,CAAA;sBAnFxBC,WAAQ;IAAC,YAAA,IAAA,EAAA,CAAA;IACR,oBAAA,OAAO,EAAE;4BACPhB,eAAY;4BACZC,eAAY;4BACZC,kBAAe;4BACfC,gBAAa;4BACbC,kBAAa;4BACbC,wCAAwB;4BACxBC,sBAAiB;4BACjBC,oBAAe;4BACfC,mBAAc;4BACdC,iBAAY;4BACZC,mBAAc;4BACdC,mBAAc;4BACdC,oBAAe;4BACfC,mBAAgB;4BAChBC,iBAAY;4BACZC,iBAAc;IACf,qBAAA;IACD,oBAAA,YAAY,EAAE;;4BAEZ,eAAe;4BACf,cAAc;4BACd,qBAAqB;4BACrB,0BAA0B;4BAC1B,wBAAwB;4BACxB,eAAe;4BACf,oBAAoB;4BACpB,qBAAqB;4BACrB,iBAAiB;4BACjB,qBAAqB;4BACrB,2BAA2B;4BAC3B,iCAAiC;;4BAGjC,eAAe;4BACf,mBAAmB;4BACnB,eAAe;4BACf,iBAAiB;4BACjB,qBAAqB;;4BAGrB,qBAAqB;4BACrB,mBAAmB;4BACnB,qBAAqB;4BACrB,qBAAqB;4BACrB,0BAA0B;4BAC1B,0BAA0B;4BAC1B,iCAAiC;4BACjC,4BAA4B;4BAC5B,2BAA2B;4BAC3B,yBAAyB;4BACzB,sBAAsB;4BACtB,0BAA0B;4BAC1B,yBAAyB;4BACzB,sBAAsB;4BACtB,+BAA+B;;4BAG/B,4BAA4B;;4BAG5B,eAAe;IAChB,qBAAA;IACD,oBAAA,OAAO,EAAE;4BACP,eAAe;4BACf,cAAc;4BACd,eAAe;4BACf,qBAAqB;4BACrB,qBAAqB;4BACrB,mBAAmB;4BACnB,qBAAqB;4BACrB,qBAAqB;4BACrB,0BAA0B;4BAC1B,0BAA0B;4BAC1B,iCAAiC;4BACjC,yBAAyB;4BACzB,sBAAsB;4BACtB,yBAAyB;4BACzB,sBAAsB;4BACtB,+BAA+B;IAChC,qBAAA;qBACF,CAAA;;IAiBK,SAAU,mBAAmB,CAAC,MAAoB,EAAA;IACtD,IAAA,OAAO7D,cAAK,CAAC;IACX,QAAA,SAAS,EAAE;IACT,YAAA,OAAO,EAAE,kBAAkB;IAC5B,SAAA;SACc,EAAE,MAAM,CAAC,CAAC;IAC7B;;ICrKA;;IAEG;;ICFH;;IAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"firestitch-list.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/classes/reorder-controller.ts","../../src/app/enums/button-type.enum.ts","../../src/app/models/row-action.model.ts","../../src/app/directives/draggable-list/draggable-list.directive.ts","../../src/app/components/body/row/cell/cell.component.ts","../../src/app/components/body/row/cell/cell.component.html","../../src/app/components/body/row/inline-action/inline-action.component.ts","../../src/app/components/body/row/inline-action/inline-action.component.html","../../src/app/pipes/action-label.ts","../../src/app/components/body/row/menu-action/menu-action.component.ts","../../src/app/components/body/row/menu-action/menu-action.component.html","../../src/app/components/body/row/actions/actions.component.ts","../../src/app/components/body/row/actions/actions.component.html","../../src/app/components/body/row/row.component.ts","../../src/app/components/body/row/row.component.html","../../src/app/directives/draggable-row/draggable-row.directive.ts","../../src/app/components/body/body.component.ts","../../src/app/components/body/body.component.html","../../src/app/components/customize-cols/customize-cols.component.ts","../../src/app/components/customize-cols/customize-cols.component.html","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.ts","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.html","../../src/app/components/footer/footer-row/footer-row.component.ts","../../src/app/components/footer/footer-row/footer-row.component.html","../../src/app/components/footer/footer.component.ts","../../src/app/components/footer/footer.component.html","../../src/app/components/head/head-cell/head-cell.component.ts","../../src/app/components/head/head-cell/head-cell.component.html","../../src/app/classes/selection-controller.ts","../../src/app/components/head/head.component.ts","../../src/app/components/head/head.component.html","../../src/app/models/styleConfig.model.ts","../../src/app/models/column.model.ts","../../src/app/enums/page-change-type.enum.ts","../../src/app/enums/state.enum.ts","../../src/app/classes/columns-controller.ts","../../src/app/enums/row-type.enum.ts","../../src/app/models/row/base-row.ts","../../src/app/models/row/group-row.ts","../../src/app/models/row/child-row.ts","../../src/app/models/row/simple-row.ts","../../src/app/models/row/group-footer-row.ts","../../src/app/models/row.ts","../../src/app/classes/data-controller.ts","../../src/app/classes/external-params-controller.ts","../../src/app/classes/actions-controller.ts","../../src/app/enums/pagination-strategy.enum.ts","../../src/app/classes/pagination-controller.ts","../../src/app/models/column-async-attribute.ts","../../src/app/models/column-attributes.ts","../../src/app/classes/sorting-controller.ts","../../src/app/classes/list-controller.ts","../../src/app/classes/persistance-controller.ts","../../src/app/directives/heading/heading.directive.ts","../../src/app/directives/subheading/subheading.directive.ts","../../src/app/directives/heading-container/heading-container.directive.ts","../../src/app/directives/header/header.directive.ts","../../src/app/directives/cell/cell.directive.ts","../../src/app/directives/footer/footer.directive.ts","../../src/app/directives/group-header/group-header.directive.ts","../../src/app/directives/group-footer/group-footer.directive.ts","../../src/app/services/group-expand-notifier.service.ts","../../src/app/directives/group-expand-trigger/group-expand-trigger.directive.ts","../../src/app/directives/column/column.directive.ts","../../src/app/directives/empty-state/empty-state.directive.ts","../../src/app/fs-list.providers.ts","../../src/app/components/saved-filters/saved-filters.component.ts","../../src/app/components/saved-filters/saved-filters.component.html","../../src/app/components/status/status.component.ts","../../src/app/components/status/status.component.html","../../src/app/components/loader/loader.component.ts","../../src/app/components/loader/loader.component.html","../../src/app/components/pagination/pagination.component.ts","../../src/app/components/pagination/pagination.component.html","../../src/app/directives/content-init/content-init.directive.ts","../../src/app/components/list/list.component.ts","../../src/app/components/list/list.component.html","../../src/app/components/manage-saved-filters/manage-saved-filters.component.ts","../../src/app/components/manage-saved-filters/manage-saved-filters.component.html","../../src/app/directives/content/content.directive.ts","../../src/app/fs-list.module.ts","../../src/public_api.ts","../../src/firestitch-list.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n FsListReorderConfig,\n FsListReorderDoneCallback,\n FsListReorderMovedCallback,\n FsListReorderMoveInGroupCallback\n} from '../interfaces';\n\nimport { DataController } from './data-controller';\nimport { ActionsController } from './actions-controller';\nimport { SelectionController } from './selection-controller';\n\nexport enum ReorderPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum ReorderStrategy {\n Always = 'always',\n Manual = 'manual',\n Custom = 'custom',\n}\n\n@Injectable()\nexport class ReorderController implements OnDestroy {\n\n public startCallback: () => void | Observable<void>;\n public movedCallback: FsListReorderMovedCallback;\n public doneCallback: FsListReorderDoneCallback;\n public moveDropCallback: FsListReorderMoveInGroupCallback;\n\n public status: boolean;\n public label: string;\n public menu: boolean;\n public multiple: boolean;\n\n private _dataController: DataController;\n private _actionsController: ActionsController;\n private _selectionController: SelectionController;\n\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _manualReorderActivated$ = new BehaviorSubject(false);\n private _reorderDisabled$ = new BehaviorSubject(false);\n private _position = new BehaviorSubject<ReorderPosition | null>(null);\n private _strategy = new BehaviorSubject<ReorderStrategy | null>(null);\n\n private _destroy$ = new Subject();\n\n constructor() {}\n\n public get enabled() {\n return this._enabled$.getValue();\n }\n\n public set enabled(value) {\n this._enabled$.next(value);\n\n this._manualReorderActivated$.next(this.enabled && this.strategy === ReorderStrategy.Manual);\n }\n\n public get strategy(): ReorderStrategy | null {\n return this._strategy.getValue();\n }\n\n public get position(): ReorderPosition | null {\n return this._position.getValue();\n }\n\n public get dataController() {\n return this._dataController;\n }\n\n public get selectionController(): SelectionController {\n return this._selectionController;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$.asObservable();\n }\n\n public get position$(): Observable<ReorderPosition> {\n return this._position.asObservable();\n }\n\n public get strategy$(): Observable<ReorderStrategy> {\n return this._strategy.asObservable();\n }\n\n public get manualReorderActivated(): boolean {\n return this._manualReorderActivated$.getValue();\n }\n\n public get reorderDisabled$(): Observable<boolean> {\n return this._reorderDisabled$.asObservable();\n }\n\n public get reorderDisabled(): boolean {\n return this._reorderDisabled$.getValue();\n }\n\n public initWithConfig(\n data: FsListReorderConfig,\n dataController: DataController,\n actionsController: ActionsController,\n selectionController: SelectionController,\n ) {\n if (!data) { return }\n\n this.menu = data.menu ?? false;\n this._setPosition(data.position ?? ReorderPosition.Left);\n\n if (!data.disabled) {\n this._setStrategy(ReorderStrategy.Always);\n }\n\n if (data.toggle) {\n this._setStrategy(ReorderStrategy.Manual);\n }\n // this.strategy = data.strategy ?? ReorderStrategy.Manual;\n this.label = data.label;\n this.multiple = data.multiple;\n this.status = data.status ?? true;\n\n this.startCallback = data.start;\n this.movedCallback = data.moved;\n this.doneCallback = data.done;\n this.moveDropCallback = data.moveDrop;\n\n this._dataController = dataController;\n this._actionsController = actionsController;\n this._selectionController = selectionController;\n\n if (this.strategy === ReorderStrategy.Always) {\n this.enableReorder();\n } else if (this.strategy === ReorderStrategy.Manual) {\n actionsController.addReorderAction(\n {\n label: this.label || 'Reorder',\n menu: this.menu,\n primary: false,\n click: () => {\n this.enableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n }\n }\n );\n\n actionsController.addReorderDoneAction({\n label: 'Done',\n primary: false,\n click: () => {\n this.disableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n }\n )\n }\n }\n\n public enableReorder() {\n if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {\n const returnedValue = this.startCallback();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = true;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = true;\n }\n\n public disableReorder() {\n if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {\n const returnedValue = this.reorderFinished();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = false;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = false;\n }\n\n /**\n * Exec end callback\n */\n public reorderFinished() {\n if (this.doneCallback) {\n return this.doneCallback(this._dataController.reorderData);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Enable reorder action and update filter actions state\n */\n public enableReorderAction() {\n this._reorderDisabled$.next(false);\n this._actionsController.updateDisabledState();\n }\n\n /**\n * Disable reorder action and update filter actions state\n */\n public disableReorderAction() {\n this._reorderDisabled$.next(true);\n this._actionsController.updateDisabledState();\n }\n\n private _setPosition(value: ReorderPosition): void {\n this._position.next(value);\n }\n\n private _setStrategy(value: ReorderStrategy): void {\n this._strategy.next(value);\n }\n\n}\n","export enum ActionType {\r\n Basic = 'basic',\r\n Raised = 'raised',\r\n Icon = 'icon',\r\n Fab = 'fab',\r\n MiniFab = 'mini-fab'\r\n}\r\n","import { ActionType } from '../enums/button-type.enum';\nimport {\n FsListRowActionFile,\n FsListRowActionLink,\n FsListRowActionLinkFn,\n} from '../interfaces';\n\n\nexport class RowAction {\n\n public icon: string;\n public menu: boolean;\n public remove: { title: string; template: string };\n public className: string;\n public type: ActionType;\n public show: Function;\n public restore: boolean;\n public rowActions: RowAction[];\n public label = '';\n public routerLink: FsListRowActionLink;\n public classArray: string[] = [];\n public isShown = true;\n public click: Function;\n\n public fileConfig: FsListRowActionFile;\n\n private _linkFn: FsListRowActionLinkFn;\n private readonly _isGroup: boolean = false;\n\n constructor(config: any = {}) {\n this._init(config);\n\n if (Array.isArray(this.rowActions)) {\n this._isGroup = true;\n }\n }\n\n public get isGroup() {\n return this._isGroup;\n }\n\n public _init(value: any) {\n this.icon = value.icon;\n this.menu = value.menu ?? true;\n this.remove = value.remove;\n this.className = value.className;\n this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : value.type ?? ActionType.Basic;\n this.show = value.show;\n this.restore = value.restore;\n this.rowActions = value.rowActions\n ?.map((action) => new RowAction(action));\n\n\n // Re-assign click function\n const clickFn = value.click;\n this.click = (row, event, index, rowActionsRef = null) => {\n return this._clickEvent(row, event, index, rowActionsRef, clickFn);\n };\n\n this._linkFn = value.link;\n\n if (value.file) {\n this.fileConfig = { ...value.file };\n\n if (this.fileConfig.select) {\n const selectFn = this.fileConfig.select;\n this.fileConfig.select = (selection, row, index) => {\n selectFn(selection, row, index);\n };\n }\n }\n\n this.label = value.label;\n\n if (this.className) {\n this.classArray = this.className.split(' ').reduce((acc, elem) => {\n acc.push(elem);\n\n return acc;\n }, []);\n }\n }\n\n public checkShowStatus(row, index) {\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(row, index);\n });\n\n const groupVisible = !this.show || this.show(row, index);\n\n this.isShown = groupVisible && this.rowActions.some((action) => action.isShown);\n } else if (this.show) {\n this.isShown = this.show(row, index);\n }\n }\n\n public updateLink(row) {\n if (!this.isShown) {\n return;\n }\n\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.updateLink(row);\n });\n } else if (this._linkFn) {\n this.routerLink = this._linkFn(row);\n\n if (this.routerLink && !this.routerLink.target) {\n this.routerLink.target = null;\n }\n }\n }\n\n private _clickEvent(row, event, index, rowActionsRef, clickFn) {\n // Stop event propagation for parent\n event.stopPropagation();\n\n // Close menu\n if (rowActionsRef) {\n rowActionsRef.closeMenu();\n }\n\n if (clickFn) {\n // Fire passed callback\n return clickFn(row, event, index);\n }\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';\nimport { FsListDragChildRowElement } from '../../interfaces/draggable-list.interface';\nimport { Row } from '../../models/row';\nimport { FsListDraggableRowDirective } from '../draggable-row/draggable-row.directive';\n\n\n@Directive({\n selector: '[fsListDraggableList]',\n})\nexport class FsListDraggableListDirective {\n // Draggable Element\n private _draggableElement: HTMLElement;\n private _draggableElementPreview: HTMLElement;\n private _multipleDraggableElementPreview: HTMLElement;\n private _draggableElementHeight: number;\n private _draggableElementIndex: number;\n private _draggableElementStartIndex: number;\n\n // Handlers\n private _dragToHandler = this.dragTo.bind(this);\n private _dragEndHandler = this.dragEnd.bind(this);\n private _windowTouchMoveHandler = () => { };\n\n private _dragInProgress = false;\n\n private _childRowElements: FsListDragChildRowElement[];\n private _dragStart$ = new Subject<void>();\n private _dragEnd$ = new Subject<void>();\n\n @Input('rows')\n private _rows: Row[];\n private _draggableChildrenDirectives: FsListDraggableRowDirective[] = [];\n private _selectedRowsDirectives: FsListDraggableRowDirective[] = [];\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _zone: NgZone,\n private _containerElement: ElementRef,\n private _reorderController: ReorderController,\n private _renderer: Renderer2,\n ) { }\n\n public get dragStart$(): Observable<void> {\n return this._dragStart$.pipe(takeUntil(this._destroy$));\n }\n\n public get dragEnd$(): Observable<void> {\n return this._dragEnd$.pipe(takeUntil(this._destroy$));\n }\n\n public get draggableItem(): Row {\n return this._rows[this._draggableElementIndex];\n }\n\n private get _isMultipleDrag(): boolean {\n return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;\n }\n\n public addDraggableDirective(dir: FsListDraggableRowDirective): void {\n this._draggableChildrenDirectives.push(dir);\n }\n\n public removeDraggableDirective(dir: FsListDraggableRowDirective): void {\n const idx = this._draggableChildrenDirectives.indexOf(dir);\n\n if (idx !== -1) {\n this._draggableChildrenDirectives.splice(idx, 1);\n }\n }\n\n /**\n * Prepare draggable elements and add events\n *\n * @param draggableElement\n */\n public dragStart(draggableElement: HTMLElement) {\n if (this._dragInProgress) {\n return;\n }\n\n if (\n this._reorderController.startCallback\n && this._reorderController.strategy === ReorderStrategy.Always\n ) {\n this._reorderController.startCallback();\n }\n\n this._dragInProgress = true;\n\n window.document.body.classList.add('reorder-in-progress');\n\n this._draggableElement = draggableElement;\n\n this._detectSelectedRows();\n this.prepareElements();\n this.initDraggableElement();\n\n this._draggableElementStartIndex = this._draggableElementIndex;\n this._draggableElement.classList.add('draggable-elem');\n\n this._zone.runOutsideAngular(() => {\n window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });\n window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });\n window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });\n });\n\n window.document.addEventListener('mouseup', this._dragEndHandler);\n window.document.addEventListener('touchend', this._dragEndHandler);\n window.document.addEventListener('touchcancel', this._dragEndHandler);\n\n this._dragStart$.next();\n }\n\n\n /**\n * Move draggable elements and swap items\n *\n * @param event\n */\n public dragTo(event) {\n this.touchFix(event);\n const elemIndex = this.lookupElementUnder(event);\n const targetRow = this._rows[elemIndex];\n\n if (this._multipleDraggableElementPreview) {\n this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;\n this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;\n }\n\n // Can not drag before first group and after last group\n const swapWithBoundaryGroupElement =\n (elemIndex === 0 || elemIndex === this._rows.length - 1)\n && targetRow.isGroup\n // TODO fix isChild & all\n && (this.draggableItem as any).isChild;\n\n\n if (!swapWithBoundaryGroupElement) {\n if (elemIndex !== null) {\n if (targetRow.readyToSwap) {\n this.swapWithIndex(elemIndex);\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.remove('fs-list-no-drop');\n }\n } else {\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.add('fs-list-no-drop');\n }\n }\n }\n\n // FIXME\n if (this._draggableElementPreview) {\n const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);\n this._draggableElementPreview.style.top = `${topOffset}px`;\n }\n }\n }\n\n /**\n * Remove events and classes after drag finish\n */\n public dragEnd() {\n this._dragInProgress = false;\n this._reorderController.dataController.finishReorder();\n\n if (this._reorderController.movedCallback\n && this._draggableElementStartIndex !== this._draggableElementIndex) {\n\n this._reorderController.movedCallback(\n this._reorderController.dataController.reorderData,\n );\n }\n\n if (this._reorderController.strategy === ReorderStrategy.Always) {\n this._zone.run(() => {\n if (this._reorderController.doneCallback) {\n const result = this._reorderController.doneCallback(\n this._reorderController.dataController.reorderData,\n );\n\n this._waitUntilIsNotDone(result);\n }\n });\n }\n\n // this._reorderController.dataController.updateOrderByRows(this._rows);\n ///\n this._containerElement.nativeElement.classList.remove('drag-hidden');\n this._draggableElement.classList.remove('draggable-elem');\n window.document.body.classList.remove('reorder-in-progress');\n this._draggableElement = null;\n\n if (this._draggableElementPreview) {\n this._draggableElementPreview.remove();\n\n this._draggableElementPreview = null;\n } else {\n this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);\n this._multipleDraggableElementPreview = null;\n }\n\n this._draggableElementHeight = null;\n this._draggableElementIndex = null;\n this._draggableElementStartIndex = null;\n this._selectedRowsDirectives = [];\n\n window.removeEventListener('touchmove', this._windowTouchMoveHandler);\n window.document.removeEventListener('mousemove', this._dragToHandler);\n window.document.removeEventListener('touchmove', this._dragToHandler);\n window.document.removeEventListener('mouseup', this._dragEndHandler);\n window.document.removeEventListener('touchend', this._dragEndHandler);\n window.document.removeEventListener('touchcancel', this._dragEndHandler);\n\n this._dragEnd$.next();\n }\n\n /**\n * looking row elements and save their dims\n */\n private prepareElements() {\n this.lookupChildElements();\n this.calcElementsDimensions();\n }\n\n /**\n * Store child rows\n */\n private lookupChildElements() {\n this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))\n .reduce((acc: any[], rowElement, index) => {\n const element: any = { target: rowElement };\n\n if (rowElement === this._draggableElement) {\n this._draggableElementIndex = index;\n element.active = true;\n }\n\n acc.push(element);\n\n return acc;\n }, []) as FsListDragChildRowElement[];\n }\n\n /**\n * Calc child rows sizes/offsets\n */\n private calcElementsDimensions() {\n this._childRowElements.forEach((el: any, index) => {\n const dims = el.target.getBoundingClientRect();\n el.top = dims.top;\n el.height = dims.height;\n el.center = dims.top + (dims.height / 2);\n el.index = index;\n });\n }\n\n /**\n * Init draggable element\n */\n private initDraggableElement() {\n const el = this._draggableElement.cloneNode(true) as HTMLElement;\n const data = this._draggableElement.getBoundingClientRect();\n\n if (!(this._isMultipleDrag)) {\n el.style.width = `${data.width}px`;\n el.style.left = `${data.left}px`;\n el.style.top = `${data.top}px`;\n el.classList.add('draggable');\n\n this._containerElement.nativeElement.insertAdjacentElement('afterbegin', el);\n\n this._draggableElementPreview = el;\n this._draggableElementHeight = data.height;\n\n this.updateDraggableDims();\n } else {\n // Create preview DIV\n this._containerElement.nativeElement.classList.add('drag-hidden');\n\n const selectedCount = this._selectedRowsDirectives?.length;\n const previewBlock = this._renderer.createElement('div');\n previewBlock.style.left = `${data.left}px`;\n previewBlock.style.top = `${data.top}px`;\n\n const text = this._renderer.createText(`${selectedCount} selected items`);\n\n this._renderer.appendChild(previewBlock, text);\n this._renderer.addClass(previewBlock, 'fs-list-preview-block');\n this._renderer.appendChild(document.body, previewBlock);\n this._multipleDraggableElementPreview = previewBlock;\n }\n\n }\n\n /**\n * Looking by stored row elements for overlapped row\n *\n * @param event\n */\n private lookupElementUnder(event) {\n const top = event.y || event.clientY;\n const bottom = event.y || event.clientY;\n let elemIndex = null;\n\n for (let i = 0; i < this._childRowElements.length; i++) {\n const el = this._childRowElements[i];\n\n if (!el.active) {\n if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex\n || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {\n elemIndex = i;\n }\n }\n }\n\n return elemIndex;\n }\n\n /**\n * Swap rows\n *\n * @param index\n */\n private swapWithIndex(index) {\n const activeIndex = this._draggableElementIndex;\n const selectedRows = this._selectedRowsDirectives\n .map((d) => d.row)\n .filter((d) => d.readyToSwap);\n\n // Swap rows in global rows stack\n this._reorderController\n .dataController\n .swapRows(\n this._rows[activeIndex],\n this._rows[index],\n selectedRows,\n this._isMultipleDrag,\n );\n\n // Swap visible rows\n if (!this._isMultipleDrag) {\n const activeRow = this._rows[activeIndex];\n this._rows[activeIndex] = this._rows[index];\n this._rows[index] = activeRow;\n\n const activeElement = this._childRowElements[activeIndex].target;\n this._childRowElements[activeIndex].active = false;\n\n this._childRowElements[activeIndex].target = this._childRowElements[index].target;\n this._childRowElements[index].target = activeElement;\n this._childRowElements[index].active = true;\n }\n\n this._draggableElementIndex = index;\n this._cdRef.detectChanges();\n }\n\n /**\n * Update cell width for draggable elem\n */\n private updateDraggableDims() {\n const draggableCells: any = Array.from(this._draggableElementPreview.querySelectorAll('td'));\n\n Array.from(\n this._draggableElementPreview.querySelectorAll('td'),\n ).forEach((elem: any, index) => {\n const dims = elem.getBoundingClientRect();\n draggableCells[index].style.width = `${dims.width}px`;\n });\n }\n\n private _waitUntilIsNotDone(doneResult: unknown): void {\n if (doneResult instanceof Observable) {\n this._reorderController.disableReorderAction();\n\n doneResult\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._reorderController.enableReorderAction();\n });\n }\n }\n\n private _detectSelectedRows(): void {\n this._draggableChildrenDirectives\n .forEach((dir: FsListDraggableRowDirective) => {\n const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);\n\n if (isRowSelected && !dir.row.isGroup) {\n this._selectedRowsDirectives.push(dir);\n }\n });\n }\n\n /**\n * Fix background when mobile\n *\n * @param e\n */\n private touchFix(e) {\n if (!('clientX' in e) && !('clientY' in e)) {\n const touches = e.touches || e.originalEvent.touches;\n if (touches && touches.length) {\n e.clientX = touches[0].clientX;\n e.clientY = touches[0].clientY;\n }\n\n e.preventDefault();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DoCheck,\n HostBinding,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Column } from '../../../../models/column.model';\n\n\n@Component({\n selector: '[fs-cell]',\n templateUrl: './cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsCellComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\n\n @HostBinding('class.fs-list-col') public isColl = true;\n\n @HostBinding('attr.role') public role = 'gridcell';\n\n @Input() public column: Column;\n @Input() public row: any; // tmp\n @Input() public rowIndex: number;\n\n public cellContext: any = {};\n public cellTemplate: TemplateRef<any>;\n\n private _destroy$ = new Subject<void>();\n\n public ngOnInit() {\n this._listenGroupOpen();\n }\n\n public ngDoCheck() {\n // TODO fixme remove or improve\n if (this.row) {\n this.cellContext.groupIndex = this.row.index;\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.rowIndex?.currentValue !== changes.rowIndex?.previousValue) {\n this.cellContext.index = this.rowIndex;\n this.cellContext.groupIndex = this.row.index;\n }\n\n if (changes.column?.currentValue !== changes.column?.previousValue) {\n this._initCellContext();\n this._initCellTemplate();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initCellContext() {\n this.cellContext.index = this.rowIndex;\n\n if (this.row) {\n if (this.row.isGroup) {\n this.cellContext.groupIndex = this.row.index;\n } else if (this.row.isChild || this.row.isGroupFooter) {\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupRow = this.row.parent.data;\n this.cellContext.group = this.row.parent.data;\n }\n\n if (this.row.isGroup) {\n this.cellContext.group = this.row.data;\n this.cellContext.groupChildren = this.row.children\n .map((child) => child.data);\n } else if (this.row.isGroupFooter) {\n this.cellContext.group = this.row.parent.data;\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupChildren = this.row.parent.children\n .map((child) => child.data);\n }\n }\n\n this.cellContext.column = this.column;\n if (this.row) {\n this.cellContext.$implicit = this.row.data;\n this.cellContext.row = this.row.data;\n this.cellContext.value = this.row.data[this.column.name];\n this.cellContext.expanded = this.row.expanded;\n }\n }\n\n private _initCellTemplate() {\n if (this.row?.isGroup) {\n this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;\n } else if (this.row?.isGroupFooter) {\n this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;\n } else {\n this.cellTemplate = this.column.cellTemplate;\n }\n }\n\n private _listenGroupOpen() {\n if (this.row && this.row.isGroup) {\n this.row.expanded$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n this.cellContext.expanded = status;\n });\n }\n }\n}\n","<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-inline-action',\n templateUrl: './inline-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowInlineActionComponent {\n\n @Input()\n public action: RowAction;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event) {\n this.clicked.emit(event);\n }\n\n public fileSelected(event): void {\n this.fileSelect.emit(event);\n }\n}\n","<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Row } from '../models/row';\n\n\n\n@Pipe({ name: 'actionLabel' })\nexport class ActionLabelPipe implements PipeTransform {\n public transform(label, row: Row) {\n if (typeof label === 'function') {\n return label(row.data);\n }\n\n return label;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, EventEmitter,\n Input, Output,\n} from '@angular/core';\n\nimport { FsMenuComponent } from '@firestitch/menu';\n\nimport { FsListRowActionFile } from '../../../../interfaces/listconfig.interface';\nimport { Row } from '../../../../models/row';\n\n\n@Component({\n selector: 'fs-list-row-menu-action',\n templateUrl: './menu-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowMenuActionComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public icon: string;\n\n @Input()\n public label: string;\n\n @Input()\n public file: FsListRowActionFile;\n\n @Output()\n public fileSelect = new EventEmitter();\n\n @Output()\n public fileError = new EventEmitter();\n\n constructor(\n private _menu: FsMenuComponent,\n ) { }\n\n public selectFile(event): void {\n this.fileSelect.emit(event);\n this.closeMenu();\n }\n\n public errorFile(event): void {\n this.fileError.emit(event);\n this.closeMenu();\n }\n\n public closeMenu(): void {\n this._menu.closeMenu();\n }\n}\n","<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n} from '@angular/core';\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\n\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowActionsComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public index: number;\n\n @Input()\n public restoreMode = false;\n\n @Input()\n public rowActions: RowAction[] = [];\n\n @Input()\n public rowRemoved: EventEmitter<any>;\n\n @Input()\n public menuRowActions: RowAction[] = [];\n\n @Input()\n public inlineRowActions: RowAction[] = [];\n\n @Input()\n public restoreAction: RowAction;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _prompt: FsPrompt,\n ) { }\n\n public actionClick(action: RowAction, row: any, event: any, menuRef?) {\n if (action.remove) {\n if (typeof action.remove === 'boolean') {\n this._removeAction(action, row.data, event, this.index);\n } else {\n this._prompt.confirm({\n title: action.remove.title,\n template: action.remove.template,\n autofocus: true,\n })\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._removeAction(action, row.data, event, this.index);\n });\n }\n } else {\n action.click(row.data, event, this.index, menuRef);\n }\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Emit that some row must be removed\n *\n * @param action\n * @param row\n * @param event\n * @param index\n */\n private _removeAction(action, row, event, index) {\n const removeObservable = action.click(row, event, index);\n\n if (removeObservable && removeObservable instanceof Observable) {\n removeObservable\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.rowRemoved.emit(row);\n });\n }\n }\n}\n","<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action \n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu \n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template \n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChildren,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../../classes/reorder-controller';\nimport { SelectionController } from '../../../classes/selection-controller';\nimport { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';\nimport { FsListRowClassOptions } from '../../../interfaces';\nimport { Column } from '../../../models/column.model';\nimport { Row } from '../../../models/row';\nimport { RowAction } from '../../../models/row-action.model';\n\n\n@Component({\n selector: '[fs-list-row]',\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowComponent implements OnInit, DoCheck, OnDestroy {\n\n @HostBinding('attr.role')\n public role = 'row';\n\n @Input() public row: Row;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public hasRowActions = false;\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public restoreMode = false;\n @Input() public rowIndex: number;\n @Input() public columns: Column[];\n @Input() public selection: SelectionController;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n\n @Input()\n @HostBinding('class.drag-row')\n public reorderEnabled: boolean;\n\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n\n @ViewChildren('td')\n public cellRefs;\n\n public readonly ReorderPosition = ReorderPosition;\n public readonly ReorderStrategy = ReorderStrategy;\n public rowActions: RowAction[] = [];\n public menuRowActions: RowAction[] = [];\n public inlineRowActions: RowAction[] = [];\n public restoreAction: RowAction;\n public selected = false;\n public indeterminateSelected: boolean | 'indeterminate' = false;\n\n private _rowDiffer: KeyValueDiffer<any, any>;\n private _eventListeners = [];\n private _destroy$ = new Subject();\n\n constructor(\n public el: ElementRef,\n private _cdRef: ChangeDetectorRef,\n private _differs: KeyValueDiffers,\n private _renderer: Renderer2,\n private _draggableList: FsListDraggableListDirective,\n ) {\n this._rowDiffer = _differs.find({}).create();\n }\n\n public get isGroupRow(): boolean {\n return this.row.isGroup;\n }\n\n public get isGroupChildRow(): boolean {\n return this.row.isGroupChild;\n }\n\n public get isGroupFooterRow(): boolean {\n return this.row.isGroupFooter;\n }\n\n public get isDragDisabled(): boolean {\n return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;\n }\n\n @HostBinding('class.multiple-selection')\n public get isMultipleSelection() {\n const multiple = this.reorderMultiple;\n\n return multiple && this.selected;\n }\n\n @HostBinding('class')\n public get rowCssClass() {\n let classes = ['fs-list-row'];\n\n if (this.rowIndex % 2 !== 0) {\n classes.push('fs-list-row-odd');\n }\n if (this.rowIndex % 2 === 0) {\n classes.push('fs-list-row-even');\n }\n\n if (this.row?.isGroup) {\n classes.push('fs-list-row-group');\n } else if ((this.row as any)?.isChild) { // TODO fix isChild & all\n classes.push('fs-list-row-group-child');\n } else if (this.row?.isGroupFooter) {\n classes.push('fs-list-row-group-footer');\n } else {\n classes.push('fs-list-row-body');\n }\n\n if (this.rowClass) {\n classes = [\n ...classes,\n ...this._getRowClasses(this.rowClass),\n ];\n }\n\n return classes.join(' ');\n }\n\n public get dragCellVisible(): boolean {\n return !this.row.isGroup;\n }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initRowEvents();\n this._initSelection();\n\n if (this.row && this.row.isGroup) {\n if (this.row && this.row.isGroup && this.groupActionsRaw) {\n this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n } else if (this.rowActionsRaw) {\n this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n }\n\n public ngDoCheck() {\n if (this._rowDiffer.diff(this.row)) {\n if (this.rowActions) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(this.row.data, this.rowIndex);\n action.updateLink(this.row.data);\n });\n this._filterActionsByCategories();\n }\n\n this._cdRef.markForCheck();\n }\n }\n\n public ngOnDestroy() {\n this._eventListeners.forEach((listener) => {\n listener();\n });\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select row by checkbox\n *\n * @param event\n */\n public selectRow(event: MatCheckboxChange) {\n this.selection.rowSelectionChange(this.row, event.checked);\n this._cdRef.markForCheck();\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n public dragStart(event) {\n if (this.reorderEnabled && !this.isDragDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n this._draggableList.dragStart(this.el.nativeElement);\n }\n }\n\n /**\n * Set event listeners for row\n */\n private _initRowEvents() {\n Object.keys(this.rowEvents)\n .forEach((event) => {\n if (this.rowEvents.hasOwnProperty(event)) {\n const listener = this._renderer\n .listen(this.el.nativeElement, event, (evt) => {\n if (!this.reorderEnabled) {\n this.rowEvents[event]({\n event: evt,\n row: this.row.data,\n rowIndex: this.rowIndex,\n });\n }\n });\n\n this._eventListeners.push(listener);\n }\n });\n }\n\n private _getRowClasses(rowClass): string[] {\n const classes = [];\n const options: FsListRowClassOptions = {\n index: this.rowIndex,\n type: this.row.type,\n };\n\n if (this.row.isGroup) {\n options.groupIndex = this.row.index;\n } else if ((this.row as any).isChild || this.row.isGroupFooter) { // TODO fix isChild & all\n options.groupIndex = this.row.parent.index;\n }\n\n const resultClass = rowClass(this.row.data, options);\n if(resultClass) {\n if (typeof resultClass === 'string') {\n classes.push(resultClass);\n } else if (typeof resultClass === 'object') {\n const keys = Object.keys(resultClass);\n for (const k of keys) {\n if (resultClass[k] === true) {\n classes.push(k);\n }\n }\n }\n }\n\n return classes;\n }\n\n /**\n * Subscribe to selection change events\n */\n private _initSelection() {\n if (this.selection) {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n this.selection.selectionChange$\n .pipe(\n // // Would like to respond only when checkbox on top is changed\n // // or was clicked \"Select All\" in selection dialog\n // filter(({type}) => {\n // return type === SelectionChangeType.AllVisibleSelectionChange\n // || type === SelectionChangeType.SelectedAll;\n // }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n if (this.row?.isGroup) {\n const groupSelection = this.selection.isGroupSelected(this.row);\n\n if (groupSelection === 'indeterminate') {\n this.selected = true;\n this.indeterminateSelected = true;\n } else {\n this.selected = groupSelection;\n this.indeterminateSelected = false;\n }\n }\n\n this._cdRef.markForCheck();\n });\n }\n }\n\n private _filterActionsByCategories() {\n this.menuRowActions = [];\n this.inlineRowActions = [];\n this.restoreAction = null;\n\n this.rowActions.forEach((action) => {\n\n if (!action.isShown) {\n return;\n }\n\n if (action.menu && !action.restore) {\n this.menuRowActions.push(action);\n } else if (!action.menu && !action.restore) {\n this.inlineRowActions.push(action);\n } else if (action.restore) {\n this.restoreAction = action;\n }\n });\n }\n}\n","<!-- Drag -->\n<ng-container *ngIf=\"leftDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox \n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"rightDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions\n [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td \n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { Row } from '../../models/row';\nimport { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';\n\n\n@Directive({\n selector: '[fsListDraggableRow]',\n})\nexport class FsListDraggableRowDirective implements OnInit, OnDestroy {\n\n @Input()\n public row: Row;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _reorderController: ReorderController,\n private _draggableList: FsListDraggableListDirective,\n ) { }\n\n public get elRef(): ElementRef {\n return this._el;\n }\n\n public ngOnInit(): void {\n if (this._reorderController.moveDropCallback) {\n this._listenDragEvents();\n }\n this._draggableList.addDraggableDirective(this);\n }\n\n public ngOnDestroy(): void {\n this._draggableList.removeDraggableDirective(this);\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public dragHide(): void {\n this._el.nativeElement.classList.add('drag-hidden');\n }\n\n private _listenDragEvents() {\n this._draggableList\n .dragStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._markReadyToSwapRows();\n });\n\n this._draggableList\n .dragEnd$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._unmarkRows();\n });\n }\n\n private _markReadyToSwapRows() {\n const currentEl = this.row;\n const targetEl = this._draggableList.draggableItem;\n\n this.row.readyToSwap = this._reorderController.moveDropCallback(\n {\n row1: currentEl?.data,\n row2: targetEl?.data,\n group1: currentEl?.parent?.data,\n group2: targetEl?.parent?.data,\n },\n );\n\n if (!this.row.readyToSwap) {\n this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n\n private _unmarkRows() {\n if (!this.row.readyToSwap) {\n this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\nimport { Row } from '../../models/row';\n\nimport { FsRowComponent } from './row/row.component';\n\n\n@Component({\n selector: '[fs-list-body]',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsBodyComponent {\n\n @Input() public rows: Row[];\n @Input() public columns: Column[] = [];\n @Input() public hasFooter = false;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public hasRowActions = false;\n @Input() public selection: SelectionController;\n @Input() public restoreMode = false;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n @ContentChild(FsRowComponent, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n}\n","<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy } from '@angular/core';\r\n\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n templateUrl: './customize-cols.component.html',\r\n styleUrls: ['./customize-cols.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomizeColsDialogComponent implements OnDestroy {\r\n\r\n public columns = [];\r\n public saveDisabled = false;\r\n private _changeFn;\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) data,\r\n private _dialog: MatDialogRef<any>,\r\n ) {\r\n this.columns = data.columns;\r\n this._changeFn = data.changeFn;\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public visibilityChange(event, column) {\r\n column.show = event.checked;\r\n }\r\n\r\n public save() {\r\n const data = this.columns\r\n .filter((column) => !!column.name)\r\n .map((column) => {\r\n return {\r\n name: column.name,\r\n show: column.show,\r\n };\r\n });\r\n\r\n this.saveDisabled = true;\r\n const changed = this._changeFn(data);\r\n\r\n if (changed instanceof Observable) {\r\n changed\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe({\r\n next: () => {\r\n this._dialog.close(this.columns);\r\n },\r\n error: () => {\r\n this.saveDisabled = false;\r\n },\r\n });\r\n } else {\r\n this._dialog.close(this.columns);\r\n }\r\n }\r\n\r\n public cancel() {\r\n this._dialog.close();\r\n }\r\n}\r\n","<h1 matDialogTitle>Customize Columns</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\r\n <ng-container *ngIf=\"!column.title; else titleLable\">\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n </ng-container>\r\n <ng-template #titleLable>\r\n {{ column.title }}\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"column.tooltip\">\r\n <mat-icon [matTooltip]=\"column.tooltip\">\r\n help\r\n </mat-icon>\r\n </ng-container>\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-list-footer-cell]',\r\n templateUrl: './footer-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsFooterCellComponent extends FsCellComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n KeyValueDiffers,\n Renderer2,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';\nimport { FsRowComponent } from '../../body/row/row.component';\n\n\n@Component({\n selector: '[fs-list-footer-row]',\n templateUrl: './footer-row.component.html',\n styleUrls: ['./footer-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterRowComponent extends FsRowComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n constructor(\n el: ElementRef,\n cdRef: ChangeDetectorRef,\n differs: KeyValueDiffers,\n renderer: Renderer2,\n ) {\n super(el, cdRef, differs, renderer, null);\n }\n\n}\n","<td *ngIf=\"leftDragDropEnabled\" class=\"fs-list-col drag-col\"></td>\n\n<td *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\"></td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td \n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n\n<!-- Drag -->\n<td *ngIf=\"rightDragDropEnabled\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\n\n@Component({\n selector: '[fs-list-footer]',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public columns: Column[] = [];\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n}\n","<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DoCheck,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n} from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-head-cell]',\r\n templateUrl: './head-cell.component.html',\r\n styleUrls: ['./head-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsHeadCellComponent extends FsCellComponent implements DoCheck {\r\n\r\n public cellContext: any = {};\r\n\r\n private _columnDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n private _differs: KeyValueDiffers,\r\n ) {\r\n super();\r\n this._columnDiffer = this._differs.find({}).create();\r\n }\r\n\r\n public ngDoCheck() {\r\n if (this._columnDiffer.diff(this.column)) {\r\n this._cdRef.markForCheck();\r\n }\r\n }\r\n\r\n public initCellContext() {\r\n this.cellContext.value = this.column.title;\r\n }\r\n}\r\n","<div class=\"wrap\">\n <span class=\"title\">\n <ng-template [ngIf]=\"!column.headerTemplate\">{{column.title}}</ng-template>\n <ng-template\n [ngIf]=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n </span>\n <div class=\"direction\" *ngIf=\"column.ordered\" [ngSwitch]=\"column.sortingDirection$ | async\">\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_downward\" *ngSwitchCase=\"'asc'\">arrow_downward</mat-icon>\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_upward\" *ngSwitchCase=\"'desc'\">arrow_upward</mat-icon>\n </div>\n</div>\n","import { SelectionDialog, SelectionRef } from '@firestitch/selection';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { get as _get } from 'lodash-es';\n\nimport { FsListSelectionConfig } from '../interfaces';\nimport { Row } from '../models/row';\n\nexport enum SelectionChangeType {\n AllVisibleSelectionChange = 'AllVisibleSelectionChange',\n RowSelectionChange = 'RowSelectionChange',\n SelectedAll = 'SelectedAll',\n}\n\n\nexport class SelectionController {\n\n // Options from passed config\n public actions = [];\n public selectAll = true;\n public selectionChangedFn;\n public actionSelectedFn;\n public allSelectedFn;\n\n public cancelledFn;\n\n // Store for selected visible rows\n public selectedRows = new Map();\n public selectedGroups = new Map();\n\n // Reference to selection dialog\n private _selectionDialogRef: SelectionRef = null;\n\n private _getRows: () => any[];\n private _selectionChange = new Subject<{ type: SelectionChangeType; payload: any }>();\n\n // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)\n private _selectedAllVisible = false;\n\n // Selected all rows when was clicked \"Select All\" in selection dialog\n // or count of visible records is equal to total and all visible rows was selected\n private _selectedAll = false;\n\n private _selectedRecords = 0;\n private _visibleRecordsCount = 0;\n private _totalRecordsCount = 0;\n\n private _destroy$ = new Subject();\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: FsListSelectionConfig = {},\n private _trackBy: string,\n private _selectionDialog: SelectionDialog,\n ) {\n this.actions = config.actions ? [...config.actions] : [];\n this.actionSelectedFn = config.actionSelected;\n this.allSelectedFn = config.allSelected;\n this.cancelledFn = config.cancelled;\n this.selectionChangedFn = config.selectionChanged;\n this.selectAll = config.selectAll;\n this._disabled$.next(!!config.disabled);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public get selectedAll() {\n return this._selectedAll;\n }\n\n public get selectionChange$() {\n return this._selectionChange.pipe(takeUntil(this._destroy$));\n }\n\n public setRowsCallback(data: () => any[]) {\n this._getRows = data;\n }\n\n /**\n * Trigger when row was selected\n *\n * @param row\n * @param checked\n */\n public rowSelectionChange(row: Row, checked: boolean) {\n if (row) {\n if (checked) {\n this._selectRow(row);\n this.openDialog();\n } else {\n if (this._selectedAll) {\n this._selectedAll = false;\n }\n\n this._deselectRow(row);\n }\n }\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n\n /**\n * Do check or uncheck of visible rows\n *\n * @param checked\n */\n public selectAllVisibleRows(checked) {\n this.openDialog();\n\n this._selectedAllVisible = checked;\n this._selectedRecords = 0;\n\n const rows = this._getRows();\n\n if (checked) {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, row.children.length);\n } else {\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n });\n } else {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, 0);\n } else {\n this.selectedRows.delete(identifier);\n }\n });\n\n this._selectedAll = false;\n this._selectedRecords = 0;\n }\n\n // Fire an event that all visible selection was changed\n this._visibleRowsSelectionChanged();\n this._updateSelectionRefSelected();\n }\n\n public isRowSelected(rowData) {\n return this.selectedRows.has(this._rowIdentifier(rowData))\n || this.selectedGroups.has(this._rowIdentifier(rowData))\n || this.selectedAll;\n }\n\n public isGroupSelected(row): boolean | 'indeterminate' {\n const identifier = this._rowIdentifier(row.data);\n\n if (\n this.selectedGroups.has(identifier)\n && row.children?.length > this.selectedGroups.get(identifier)\n ) {\n return 'indeterminate';\n }\n\n return this.selectedGroups.has(identifier) || this.selectedAll;\n\n }\n\n /**\n * Open selection dialog and create reference\n */\n public openDialog() {\n if (!this._selectionDialogRef) {\n this._selectionDialogRef = this._selectionDialog.open({\n selectAll: this.selectAll,\n allCount: this._totalRecordsCount,\n actions: [...this.actions],\n // selectAll: this.sele\n });\n\n this._subscribeToSelection();\n }\n }\n\n /**\n * Update count of visible elements\n *\n * @param count\n */\n public updateVisibleRecordsCount(count: number) {\n this._visibleRecordsCount = count;\n }\n\n /**\n * Update count of total available elemenets\n *\n * @param count\n */\n public updateTotalRecordsCount(count: number) {\n this._totalRecordsCount = count;\n\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateAllCount(this._totalRecordsCount);\n }\n }\n\n public pageChanged(infinityScrollEnabled) {\n if (this._selectedAll) {\n if (!infinityScrollEnabled) {\n this._resetSelection();\n }\n } else {\n this._selectedRecords = 0;\n this._getRows()\n .map((row) => row.data)\n .forEach((rowData) => {\n const identified = this._rowIdentifier(rowData);\n\n if (this.selectedRows.has(identified)) {\n this._selectedRecords++;\n }\n });\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n }\n\n public enableSelection() {\n this._disabled$.next(false);\n }\n\n public disableSelection() {\n this._disabled$.next(true);\n }\n\n /**\n * Method will be called from List for remove row if it was selected\n *\n * BUT methods for update visible and etc. will be called a bit later\n *\n * @param row\n */\n public removeRow(row) {\n this.selectedRows.delete(this._rowIdentifier(row));\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n }\n\n /**\n * Intersection of selected and passed rows to remove rows that we dont need more\n *\n * @param rows\n */\n public selectedRowsIntersection(rows) {\n const rowsIndentifiers = rows.map((row) => this._rowIdentifier(row));\n\n this.selectedRows.forEach((selectedRow, identifier) => {\n if (rowsIndentifiers.indexOf(identifier) === -1) {\n this.removeRow(selectedRow);\n }\n });\n }\n\n public updateConfig({\n actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll,\n }: FsListSelectionConfig) {\n this.actions = actions ? [...actions] : this.actions;\n this.actionSelectedFn = actionSelected ?? this.actionSelectedFn;\n this.allSelectedFn = allSelected ?? this.allSelectedFn;\n this.cancelledFn = cancelled ?? this.cancelledFn;\n this.selectionChangedFn = selectionChanged ?? this.selectionChangedFn;\n this.selectAll = selectAll ?? this.selectAll;\n }\n\n // Reset actions to default set\n public resetActions() {\n this._selectionDialogRef?.resetActions();\n }\n\n public closeSelectionDialog() {\n this._selectionDialogRef?.close();\n }\n\n public destroy() {\n this._resetSelection();\n\n this.actions = null;\n this.actionSelectedFn = null;\n this.allSelectedFn = null;\n this.cancelledFn = null;\n\n this.closeSelectionDialog();\n this._selectionDialogRef = null;\n\n this._destroy$.next();\n this._destroy$.complete();\n\n this._selectionChange.complete();\n }\n\n /**\n * Subscribe to selectionRef events\n */\n private _subscribeToSelection() {\n this._selectionDialogRef.actionSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onActionActions(data);\n });\n\n this._selectionDialogRef.cancelled$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => this._onCancelActions());\n\n this._selectionDialogRef.allSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onSelectAllActions(data);\n });\n }\n\n /**\n * If some action was clicked on selection ref dialog\n *\n * @param data\n */\n private _onActionActions(data) {\n if (!this.actionSelectedFn) {\n return;\n }\n\n // Execute callback\n const result = this.actionSelectedFn({\n selected: Array.from(this.selectedRows.values()).map((row) => {\n return { ...row };\n }),\n ...data,\n });\n\n // If result is observable\n if (result instanceof Observable) {\n\n // Subscribe and whait why it resolved\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: () => {\n\n // Close dialog\n this.closeSelectionDialog();\n\n // Uncheck all visible rows\n this.selectAllVisibleRows(false);\n },\n error: () => { },\n });\n }\n }\n\n /**\n * If cancel was clicked on selection ref dialog\n */\n private _onCancelActions() {\n this.selectAllVisibleRows(false);\n\n if (this.cancelledFn) {\n this.cancelledFn();\n }\n\n this._selectionDialogRef = null;\n }\n\n /**\n * If \"Select All\" action was clicked on selection ref dialog\n *\n * @param flag\n */\n private _onSelectAllActions(flag) {\n this._selectedAll = flag;\n\n this.selectAllVisibleRows(flag);\n\n this._selectionDialogRef.updateSelected(this._totalRecordsCount);\n\n this._selectionChangeEvent(SelectionChangeType.SelectedAll, this._selectedAll);\n this._updateSelectionRefSelectedAll();\n\n if (!this.allSelectedFn) {\n return;\n }\n\n this.allSelectedFn(flag);\n }\n\n private _selectionChangedActions() {\n // Remove actions if no rows selected\n // otherwise it will \"blink\" when user select any action\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.updateActions([]);\n\n return;\n }\n\n if (this.selectionChangedFn) {\n const result = this.selectionChangedFn(\n Array.from(this.selectedRows.values()),\n this.selectedAll,\n this._selectionDialogRef,\n );\n\n if (result) {\n if (result instanceof Observable) {\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (actions) => {\n this._selectionDialogRef.updateActions(actions);\n },\n });\n } else if (Array.isArray(result)) {\n this._selectionDialogRef.updateActions(result);\n }\n }\n }\n }\n\n /**\n * Update in Dialog Ref how much rows was selected\n */\n private _updateSelectionRefSelected() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelected(this.selectedRows.size);\n\n // S-T1268\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.close();\n }\n\n this._selectionChangedActions();\n }\n }\n\n /**\n * Update in Dialog Ref selected all status\n *\n * Ex.: Was clicked \"Select All\" in Dialog and after that some checkbox was unchecked\n * Dialog Ref must know about it\n *\n */\n private _updateSelectionRefSelectedAll() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelectedAllStatus(this._selectedAll);\n }\n }\n\n /**\n * Check if all visible rows was checked and send event to main header checkbox\n */\n private _updateSelectedVisibleStatus() {\n this._selectedAllVisible = this._selectedRecords !== 0 && this._selectedRecords === this._visibleRecordsCount;\n\n this._selectionChangeEvent(\n SelectionChangeType.RowSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * If select all checkbox in header was changed\n */\n private _visibleRowsSelectionChanged() {\n this._selectionChangeEvent(\n SelectionChangeType.AllVisibleSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * Method constructor for events\n *\n * @param type\n * @param payload\n */\n private _selectionChangeEvent(type: SelectionChangeType, payload) {\n this._selectionChange.next({\n type,\n payload,\n });\n }\n\n /**\n * Get row identified by trackBy path\n *\n * @param row\n */\n private _rowIdentifier(row) {\n const identifier = _get(row, this._trackBy, undefined);\n\n if (identifier === undefined) {\n console.warn('Selection can not recognize track by field for row. ' +\n 'Please check if you had configured trackBy function.');\n }\n\n return identifier;\n }\n\n private _selectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n row.children.forEach((childRow) => {\n this._selectRow(childRow);\n });\n } else {\n if (row.isChild) {\n this._selectChildRow(row);\n }\n\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n }\n\n private _deselectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this.selectedGroups.delete(identifier);\n\n row.children.forEach((childRow) => {\n this._deselectRow(childRow);\n });\n } else {\n if (row.isChild && this.selectedRows.has(identifier)) {\n this._deselectChildRow(row);\n }\n\n this.selectedRows.delete(identifier);\n this._selectedRecords--;\n }\n }\n\n private _selectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber + 1);\n }\n\n private _deselectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n if (selectedChildrenNumber > 1) {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber - 1);\n } else {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, 0);\n }\n }\n\n private _setNumberOfSelectedChildrenInGroup(identifier: string, n: number) {\n if (n === 0) {\n this.selectedGroups.delete(identifier);\n\n return;\n }\n\n this.selectedGroups.set(identifier, n);\n }\n\n /**\n * Reset selection\n */\n private _resetSelection() {\n this._selectedAll = false;\n this._selectedAllVisible = false;\n this._visibleRecordsCount = 0;\n this._selectedRecords = 0;\n this.selectedRows.clear();\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n this._visibleRowsSelectionChanged();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../classes/reorder-controller';\nimport { SelectionChangeType, SelectionController } from '../../classes/selection-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { Column } from '../../models/column.model';\n\n\n@Component({\n selector: '[fs-list-head]',\n templateUrl: './head.component.html',\n styleUrls: ['./head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHeadComponent implements OnInit, OnDestroy {\n\n @Input() public sorting: SortingController;\n @Input() public columns: Column[];\n @Input() public hasRowActions: boolean;\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n public selectedAll = false;\n public readonly ReorderStrategyEnum = ReorderStrategy;\n\n private _destroy$ = new Subject();\n\n constructor(private _cdRef: ChangeDetectorRef) { }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initSorting();\n this._initSelection();\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select All Visible Rows\n *\n * @param event\n */\n public selectAll(event: MatCheckboxChange) {\n this.selection.selectAllVisibleRows(event.checked);\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Subscribe to sorting change\n */\n private _initSorting() {\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.detectChanges();\n });\n }\n\n /**\n * Subscribe to selection change\n */\n private _initSelection() {\n if (this.selection) {\n this.selection.selectionChange$\n .pipe(\n filter(\n ({ type }) => (\n type === SelectionChangeType.AllVisibleSelectionChange\n || type === SelectionChangeType.SelectedAll\n || type === SelectionChangeType.RowSelectionChange\n ),\n ),\n takeUntil(this._destroy$),\n )\n .subscribe(({ type, payload: status }) => {\n this.selectedAll = status;\n\n this._cdRef.markForCheck();\n });\n }\n }\n}\n","<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n","import { isString } from 'lodash-es';\n\nexport class StyleConfig {\n public colspan;\n public align: string; // Can't be used in tempaltes!\n public className: string | string[] = []; // Can't be used in tempaltes!\n\n public classesArray = []; // Can be used in tempaltes\n public classesString = '';\n\n constructor(config = {}) {\n this._init(config);\n }\n\n /**\n * Create static array of styles for using in templates\n */\n public updateClasesArray() {\n this.classesArray = [].concat(this.className, this.align);\n this.classesString = [].concat(this.className, this.align).join(' ');\n }\n\n /**\n * Prioritized merge for align options\n * @param prior1\n * @param prior2\n */\n public mergeAlignByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = this.align;\n\n if (targetValue === void 0) {\n if (prior1 && prior1.align !== void 0) {\n targetValue = prior1.align;\n } else if (prior2 && prior2.align !== void 0) {\n targetValue = prior2.align;\n } else {\n targetValue = 'left';\n }\n }\n\n this.align = targetValue;\n }\n\n /**\n * Prioritized merge for class options\n * @param prior1\n * @param prior2\n */\n public mergeClassByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = [];\n\n if (Array.isArray(this.className)) {\n targetValue = targetValue.concat(this.className);\n } else if (isString(this.className)) {\n targetValue.push(this.className);\n }\n\n if (prior1 && prior1.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior1.className);\n } else if (prior2 && prior2.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior2.className);\n }\n\n this.className = targetValue;\n }\n\n private _init(config) {\n this.colspan = config.colspan;\n this.align = config.align;\n this.className = config.className;\n }\n\n /**\n * Merge params into array\n * @param to\n * @param from\n */\n private mergeAnythingIntoArray(to: string[], from: string | string[]) {\n if (isString(from)) {\n to.push(from as string);\n } else if (Array.isArray(from)) {\n to.push(...from)\n }\n }\n}\n","import { QueryList, TemplateRef } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { isBoolean, isObject } from 'lodash-es';\n\nimport { FsListGroupExpandTriggerDirective } from '../directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListColumnConfig } from '../interfaces/column-config.interface';\n\nimport { ColumnAttributes } from './column-attributes';\nimport { StyleConfig } from './styleConfig.model';\n\nexport enum SortingDirection {\n asc = 'asc',\n desc = 'desc'\n}\n\nconst ALLOWED_DEFAULTS = [\n 'title',\n 'sortable',\n 'align',\n 'class',\n];\n\nexport class Column {\n\n public headerTemplate: TemplateRef<any>;\n public groupHeaderTemplate: TemplateRef<any>;\n public groupFooterTemplate: TemplateRef<any>;\n public cellTemplate: TemplateRef<any>;\n public footerTemplate: TemplateRef<any>;\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n public headerConfigs: StyleConfig = new StyleConfig();\n\n public groupHeaderConfigs: StyleConfig = new StyleConfig();\n public groupFooterConfigs: StyleConfig = new StyleConfig();\n\n public cellConfigs: StyleConfig = new StyleConfig();\n\n public footerConfigs: StyleConfig = new StyleConfig();\n\n public colStyles: StyleConfig;\n\n public headerColspanned = false;\n public groupHeaderColspanned = false;\n public groupFooterColspanned = false;\n public cellColspanned = false;\n public footerColspanned = false;\n\n private _attributes: ColumnAttributes;\n\n private _ordered = false;\n\n constructor(colConfig: FsListColumnConfig, colDefaults: any = false) {\n this._parseConfig(colConfig);\n\n this.colStyles = new StyleConfig({\n className: this._attributes.className,\n align: this._attributes.align,\n });\n\n this.mergeWithColumnDefaults(colDefaults);\n }\n\n public set title(value: string) {\n this._attributes.title = value;\n }\n\n public get title(): string {\n return this._attributes.title;\n }\n\n public get name(): string {\n return this._attributes.name;\n }\n\n public get customize(): boolean {\n return this._attributes.customize;\n }\n\n public get width(): string {\n return this._attributes.width;\n }\n\n public set sortable(value: boolean) {\n this._attributes.sortable = value;\n }\n\n public get sortable(): boolean {\n return this._attributes.sortable;\n }\n\n public get sortableDefault(): boolean {\n return this._attributes.sortableDefault;\n }\n\n public set sortingDirection(value: 'asc' | 'desc') {\n this._attributes.direction = value;\n }\n\n public get sortingDirection(): 'asc' | 'desc' {\n return this._attributes.direction;\n }\n\n public get sortingDirection$(): Observable<'asc' | 'desc'> {\n return this._attributes.direction$;\n }\n\n public get visible(): boolean {\n return this._attributes.visible;\n }\n\n public get visible$(): Observable<boolean> {\n return this._attributes.visible$;\n }\n\n public get direction() {\n return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';\n }\n\n public get fullNameDirection() {\n return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';\n }\n\n public get ordered() {\n return this._ordered;\n }\n\n public set ordered(value) {\n this._ordered = value;\n\n if (value && !this.sortingDirection) {\n this.sortingDirection = SortingDirection.asc;\n }\n }\n\n /**\n * Merge with defaults with existing config\n *\n * @param defaults\n */\n public mergeWithColumnDefaults(defaults) {\n if (!isObject(defaults)) {\n defaults = {};\n }\n\n ALLOWED_DEFAULTS.forEach((key) => {\n switch (key) {\n case 'title': {\n this.title = this.title || defaults.title;\n } break;\n\n case 'sortable': {\n if (isBoolean(defaults.sortable)) {\n if (this.sortable === void 0) {\n this.sortable = defaults.sortable;\n }\n }\n } break;\n\n case 'class': {\n this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);\n } break;\n\n case 'align': {\n this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);\n } break;\n }\n });\n\n this.headerConfigs.updateClasesArray();\n this.groupHeaderConfigs.updateClasesArray();\n this.groupFooterConfigs.updateClasesArray();\n this.cellConfigs.updateClasesArray();\n this.footerConfigs.updateClasesArray();\n }\n\n /**\n * Change sorting direction\n */\n public changeDirection() {\n this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;\n }\n\n public updateVisibility(value: boolean) {\n this._attributes.visible = value;\n }\n\n private _parseConfig(config: FsListColumnConfig) {\n this._attributes = config.attributes;\n\n this.headerTemplate = config.headerTemplate;\n this.groupHeaderTemplate = config.groupHeaderTemplate;\n this.groupFooterTemplate = config.groupFooterTemplate;\n this.cellTemplate = config.cellTemplate;\n this.footerTemplate = config.footerTemplate;\n this.headerConfigs = new StyleConfig(config.headerConfigs);\n this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);\n this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);\n this.cellConfigs = new StyleConfig(config.cellConfigs);\n this.footerConfigs = new StyleConfig(config.footerConfigs);\n this.expandTrigger = config.expandTrigger;\n }\n}\n","export enum PageChangeType {\r\n Default = 0,\r\n LimitChanged = 1\r\n}\r\n","export enum FsListState {\r\n Idle,\r\n Load,\r\n Reload,\r\n Filter,\r\n Sort,\r\n PageChange,\r\n LoadMore,\r\n}\r\n","import { isNumber } from 'lodash-es';\nimport { BehaviorSubject, merge, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil, tap } from 'rxjs/operators';\n\nimport { Column } from '../models/column.model';\nimport {\n FsListColumnChangeFn,\n FsListColumnConfig,\n FsListColumnDisabledFn,\n FsListColumnLoadFn,\n FsListColumnTitleFn,\n FsListColumnTooltipFn,\n} from '../interfaces/listconfig.interface';\n\n\nexport class ColumnsController {\n\n private _visibleColumns$ = new BehaviorSubject<Column[]>([]);\n private _visibleColumnsShared$ = this._visibleColumns$.pipe();\n private _theadClass = '';\n private _loadFn: FsListColumnLoadFn;\n private _changeFn: FsListColumnChangeFn;\n private _customizeFieldTitleFn: FsListColumnTitleFn;\n private _customizeFieldDisabledFn: FsListColumnDisabledFn;\n private _columnTooltipFn: FsListColumnTooltipFn;\n\n private _isConfigured = false;\n private _loadFnConfigured = false;\n private _changeFnConfigured = false;\n private _columnsFetched = false;\n private _hasHeader = false;\n private _hasFooter = false;\n private _columns: Column[] = [];\n private _defaultConfigs;\n\n private _columnsUpdated$ = new Subject<void>();\n private _destroy$ = new Subject<void>();\n\n constructor() {}\n\n public get columns() {\n return this._columns.slice();\n }\n\n public get visibleColumns(): Column[] {\n return this._visibleColumns$.getValue();\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this._visibleColumnsShared$;\n }\n\n public get columnsForDialog() {\n const hasCustomTitle = !!this._customizeFieldTitleFn;\n const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;\n const hasCustomTooltip = !!this._columnTooltipFn;\n\n return this._columns\n .filter((column) => column.customize && !!column.name)\n .map((column) => {\n const title = hasCustomTitle\n ? this._customizeFieldTitleFn(column.name, column.title)\n : column.name;\n\n const disabled = hasCustomDisabledStatus\n ? this._customizeFieldDisabledFn(column.name)\n : false;\n\n const tooltip = hasCustomTooltip\n ? this._columnTooltipFn(column.name, column.visible, disabled)\n : void 0;\n\n return {\n template: column.headerTemplate,\n name: column.name,\n show: column.visible,\n title: title,\n disabled: disabled,\n tooltip: tooltip,\n }\n });\n }\n\n public get columnsFetched() {\n return this._columnsFetched;\n }\n\n public get hasHeader() {\n return this._hasHeader;\n }\n\n public get hasFooter() {\n return this._hasFooter;\n }\n\n public get theadClass() {\n return this._theadClass;\n }\n\n public get configured() {\n return this._isConfigured;\n }\n\n public get loadFnConfigured() {\n return this._loadFnConfigured;\n }\n\n public get changeFnConfigured() {\n return this._changeFnConfigured;\n }\n\n public get changeFn() {\n return this._changeFn;\n }\n\n public get visibleColumnsNames() {\n return this.visibleColumns\n .map((column) => column.name)\n .filter((name) => !!name);\n }\n\n public setDefaults(defaults) {\n this._defaultConfigs = defaults;\n }\n\n /**\n * Set data from list config\n * @param config\n */\n public initConfig(config: FsListColumnConfig) {\n if (config) {\n if (config.load) {\n this._loadFn = config.load;\n this._loadFnConfigured = true;\n }\n\n if (config.change) {\n this._changeFn = config.change;\n this._changeFnConfigured = true;\n }\n\n if (config.title) {\n this._customizeFieldTitleFn = config.title;\n }\n\n if (config.disabled) {\n this._customizeFieldDisabledFn = config.disabled;\n }\n\n if (config.tooltip) {\n this._columnTooltipFn = config.tooltip;\n }\n\n this._isConfigured = true;\n }\n }\n\n /**\n * Base initialization for columns\n * @param templates\n */\n public initializeColumns(templates) {\n this._columns = [];\n\n templates.forEach((column) => {\n const col = new Column(column, this._defaultConfigs);\n\n\n if (col.headerTemplate || col.title) {\n this._hasHeader = true;\n }\n if (col.footerTemplate) {\n this._hasFooter = true;\n }\n\n this._columns.push(col);\n });\n\n this._theadClass = this.hasHeader ? 'has-header' : '';\n\n this._updateColspans('headerConfigs', 'headerColspanned');\n this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');\n this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');\n this._updateColspans('cellConfigs', 'cellColspanned');\n this._updateColspans('footerConfigs', 'footerColspanned');\n\n this.updateVisibleColumns();\n this._listenColumnVisibilityUpdates();\n }\n\n /**\n * Load visiblity config for columns from remote\n */\n public loadRemoteColumnConfigs() {\n return this._loadFn()\n .pipe(\n takeUntil(this._destroy$),\n tap((columnConfigs) => {\n this._columnsFetched = true;\n this.updateVisibilityForCols(columnConfigs);\n })\n )\n }\n\n /**\n * Set visible columns based on current columns show status\n */\n public updateVisibleColumns() {\n this._visibleColumns$.next(\n this._columns.filter((column) => column.visible) || []\n );\n }\n\n /**\n * Update visibility based on passed config\n * @param columnsConfig\n */\n public updateVisibilityForCols(columnsConfig) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateVisibility(columnConfig.show);\n }\n });\n\n this.updateVisibleColumns();\n }\n\n public destroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._columnsUpdated$.complete();\n\n this._columns = void 0;\n this._visibleColumns$ = void 0;\n this._defaultConfigs = void 0;\n\n this._loadFn = void 0;\n this._changeFn = void 0;\n }\n\n private _listenColumnVisibilityUpdates() {\n this._columnsUpdated$.next();\n\n const columnsVisibility = this._columns.map((column) => {\n return column.visible$.pipe(skip(1))\n });\n\n merge(...columnsVisibility)\n .pipe(\n takeUntil(this._columnsUpdated$),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateVisibleColumns();\n })\n }\n\n private _updateColspans(config, updateFlag) {\n this._columns.forEach((col, index) => {\n\n if (col[config].colspan !== void 0) {\n const spanTo = index + +col[config].colspan;\n\n if (!isNumber(spanTo)) {\n return;\n }\n this._columns[index][updateFlag] = false;\n\n for (let i = index + 1; i < spanTo; i++) {\n if (this._columns[i]) {\n this._columns[i][updateFlag] = true;\n }\n }\n }\n })\n }\n\n}\n","export enum RowType {\n Simple = 'simple',\n Group = 'group',\n GroupFooter = 'groupFooter',\n GroupChild = 'groupChild',\n}\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\nexport abstract class BaseRow {\r\n\r\n public index: number;\r\n public readyToSwap = true;\r\n\r\n protected readonly _rowType: RowType;\r\n\r\n private readonly _data: any = {};\r\n\r\n constructor(\r\n data: any = {},\r\n rowType = RowType.Simple,\r\n ) {\r\n this._data = data;\r\n this._rowType = rowType;\r\n }\r\n\r\n public get data() {\r\n return this._data;\r\n }\r\n\r\n public get type() {\r\n return this._rowType;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: null,\r\n }\r\n }\r\n\r\n public abstract destroy();\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\nimport { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { ChildRow } from './child-row';\nimport { GroupFooterRow } from './group-footer-row';\n\nexport class GroupRow extends BaseRow {\n\n public children: (ChildRow | GroupFooterRow)[] = [];\n\n private readonly _expanded = new BehaviorSubject<boolean>(false);\n\n constructor(\n data: any = {},\n initialExpand = false,\n ) {\n super(data, RowType.Group);\n\n if (initialExpand) {\n this._expanded.next(initialExpand);\n }\n }\n\n public get childrenData() {\n return this.children\n .map((child) => child.data);\n }\n\n public get isGroup(): boolean {\n return true;\n }\n\n public get expanded() {\n return this._expanded.getValue();\n }\n\n public get expanded$() {\n return this._expanded.asObservable();\n }\n\n public updateChildrenIndexes() {\n this.children.forEach((row, index) => {\n row.index = index;\n });\n }\n\n public updateChildrenVisibility() {\n this.children.forEach((row) => {\n row.visible = this.expanded;\n })\n }\n\n public toggleRowExpandStatus() {\n this._expanded.next(!this.expanded);\n\n this.updateChildrenVisibility();\n }\n\n public destroy() {\n this.children.forEach((child) => child.destroy());\n this._expanded.complete();\n }\n}\n","import { BaseRow } from './base-row';\r\nimport { RowType } from '../../enums/row-type.enum';\r\nimport { GroupRow } from './group-row';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\n\r\nexport class ChildRow extends BaseRow {\r\n\r\n public visible = true;\r\n private readonly _parent: GroupRow;\r\n\r\n constructor(\r\n data: any = {},\r\n parent: GroupRow = null,\r\n ) {\r\n super(data, RowType.GroupChild);\r\n\r\n this._parent = parent;\r\n\r\n if (this.parent) {\r\n this.visible = this._parent.expanded;\r\n this.index = this.parent.children.length;\r\n }\r\n }\r\n\r\n public get parent(): GroupRow {\r\n return this._parent;\r\n }\r\n\r\n public get isChild(): boolean {\r\n return true;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: this.parent.getReorderData(),\r\n }\r\n }\r\n\r\n public destroy() {}\r\n}\r\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { BaseRow } from './base-row';\r\n\r\nexport class SimpleRow extends BaseRow {\r\n\r\n constructor(\r\n data: any = {},\r\n ) {\r\n super(data, RowType.Simple);\r\n }\r\n\r\n\r\n public destroy(): void {\r\n }\r\n}\r\n","import { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { GroupRow } from './group-row';\n\n\nexport class GroupFooterRow extends BaseRow {\n\n public visible = true;\n private readonly _parent: GroupRow;\n\n constructor(\n data: any = {},\n parent: GroupRow = null,\n ) {\n super(data, RowType.GroupFooter);\n\n this._parent = parent;\n\n if (this.parent) {\n this.visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n public get parent(): GroupRow {\n return this._parent;\n }\n\n public get isGroupFooter(): boolean {\n return true;\n }\n\n public destroy() {}\n}\n","import { RowType } from '../enums/row-type.enum';\nimport { ChildRow } from './row/child-row';\nimport { GroupRow } from './row/group-row';\nimport { SimpleRow } from './row/simple-row';\nimport { FsListReorderData } from '../interfaces';\nimport { GroupFooterRow } from './row/group-footer-row';\n\nexport class Row {\n\n private _row: (SimpleRow | ChildRow | GroupRow);\n\n constructor(\n data: any = {},\n rowType: RowType = RowType.Simple,\n { parent, initialExpand }: { parent?: GroupRow, initialExpand?: boolean } = {},\n ) {\n switch (rowType) {\n case RowType.Simple: {\n this._row = new SimpleRow(data);\n } break;\n\n case RowType.Group: {\n this._row = new GroupRow(data, initialExpand);\n } break;\n\n case RowType.GroupChild: {\n this._row = new ChildRow(data, parent);\n } break;\n }\n }\n\n public get index(): number {\n return this._row.index;\n }\n\n public set index(value: number) {\n this._row.index = value;\n }\n\n public get readyToSwap(): boolean {\n return this._row.readyToSwap;\n }\n\n public get visible(): boolean {\n return (this._row as ChildRow).visible;\n }\n\n public set readyToSwap(value: boolean) {\n this._row.readyToSwap = value;\n }\n\n public get data(): any {\n return this._row.data;\n }\n\n public get type(): RowType {\n return this._row.type;\n }\n\n public get isGroup(): boolean {\n return this._row instanceof GroupRow;\n }\n\n public get isGroupChild(): boolean {\n return this._row instanceof ChildRow;\n }\n\n public get isGroupFooter(): boolean {\n return this._row instanceof GroupFooterRow;\n }\n\n public get parent(): GroupRow {\n return (this._row as ChildRow).parent;\n }\n\n public get children(): (ChildRow | GroupFooterRow)[] {\n return (this._row as GroupRow).children;\n }\n\n public get expanded() {\n return (this._row as GroupRow).expanded;\n }\n\n public get expanded$() {\n return (this._row as GroupRow).expanded$;\n }\n\n public updateChildrenIndexes() {\n (this._row as GroupRow).updateChildrenIndexes();\n }\n\n public toggleRowExpandStatus() {\n (this._row as GroupRow).toggleRowExpandStatus();\n }\n\n public getReorderData(): FsListReorderData {\n return this._row.getReorderData();\n }\n\n public destroy() {\n this._row.destroy();\n }\n}\n","import { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { isFunction, isObject } from 'lodash-es';\n\nimport { FsListState } from '../enums/state.enum';\nimport { RowType } from '../enums/row-type.enum';\nimport {\n FsListAbstractRow,\n FsListGroupConfig,\n FsListTrackByTargetRowFn\n} from '../interfaces/listconfig.interface';\nimport { GroupRow } from '../models/row/group-row';\nimport { ChildRow } from '../models/row/child-row';\nimport { Row } from '../models/row';\nimport { GroupFooterRow } from '../models/row/group-footer-row';\n\n\nexport class DataController {\n\n private readonly _visibleRows$ = new BehaviorSubject<Row[]>([]);\n private readonly _rowsRemoved$ = new Subject<Row[]>();\n private readonly _remoteRowsChange$ = new Subject<void>();\n\n private _store = new Map();\n private _rowsStack: Row[] = [];\n private _operation: FsListState;\n\n private _groupByFn: (row) => any[];\n private _footerRowFn: (\n row: { [key: string]: any },\n group: {\n [key: string]: any,\n children: {\n [key: string]: any\n }[],\n }\n ) => boolean;\n private _compareByFn: (group) => any;\n private _initialExpand = true;\n private _groupEnabled = false;\n\n private _infinityScrollEnabled: boolean;\n private _loadMoreEnabled: boolean;\n\n private _hasData = false;\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor() {}\n\n get visibleRows$() {\n return this._visibleRows$;\n }\n\n get visibleRows() {\n return this._visibleRows$.getValue();\n }\n\n get visibleRowsData() {\n return this.visibleRows.map((row) => row.data);\n }\n\n get rowsStack() {\n return this._rowsStack.slice();\n }\n\n get groupEnabled() {\n return this._groupEnabled;\n }\n\n set groupEnabled(value: boolean) {\n this._groupEnabled = value;\n }\n\n get remoteRowsChange$() {\n return this._remoteRowsChange$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get rowsRemoved$() {\n return this._rowsRemoved$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get hasData() {\n return this._hasData;\n }\n\n get operation() {\n return this._operation;\n }\n\n set visibleRows(value: any[]) {\n this._visibleRows$.next(value);\n this._hasData = this.visibleRows.length > 0;\n }\n\n get visibleRowsCount() {\n return this.visibleRows.length;\n }\n\n get hasGroups() {\n return this._compareByFn && this._groupByFn;\n }\n\n get reorderData() {\n return this._rowsStack\n .map((row) => row.getReorderData());\n }\n\n public setGroupConfig(group: FsListGroupConfig) {\n if (group) {\n this._groupByFn = group.groupBy;\n this._compareByFn = group.compareBy;\n this._footerRowFn = group.footer || (() => false);\n this._initialExpand = group.initialExpand ?? true;\n\n // group mode enabled by default\n this._groupEnabled = (group.enabled !== void 0)\n ? group.enabled\n : true;\n }\n }\n\n public setAdditionalConfigs(configs: { scrollable: boolean, loadMoreEnabled: boolean }) {\n this._infinityScrollEnabled = configs.scrollable;\n this._loadMoreEnabled = configs.loadMoreEnabled;\n }\n\n /**\n * Rows what was received from fetch function\n * @param rows\n */\n public setRowsFromResponse(rows: any[]) {\n if (this._infinityScrollEnabled) {\n switch (this._operation) {\n case FsListState.Filter:\n case FsListState.Reload:\n case FsListState.Sort: {\n this._updateRowsStack(rows);\n } break;\n\n default: {\n this._extendRowsStack(rows);\n }\n }\n\n this._remoteRowsChange$.next();\n } else {\n if (\n this._operation === FsListState.LoadMore ||\n (this._operation === FsListState.PageChange && this._loadMoreEnabled)\n ) {\n this._extendRowsStack(rows);\n } else {\n this._updateRowsStack(rows);\n }\n }\n\n this._operation = FsListState.Idle;\n\n this._updateVisibleRows();\n }\n\n /**\n * Set current operation for list data flow\n * @param value\n */\n public setOperation(value: FsListState) {\n this._operation = value;\n }\n\n /**\n * Remove rows from visible\n */\n public clearRows() {\n this.visibleRows = [];\n }\n\n /**\n * Replace data for specified row\n * @param targetRow\n * @param trackBy\n */\n public replaceData(\n targetRow: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n const rowIndex = this._rowsStack.findIndex((listRow) => {\n return trackBy(listRow.data, targetRow);\n });\n\n if (rowIndex > -1) {\n this._rowsStack[rowIndex] = new Row(\n targetRow,\n RowType.Simple,\n { initialExpand: this._initialExpand }\n );\n\n this._updateVisibleRows();\n\n return true;\n } else {\n return false;\n }\n\n }\n\n /**\n * Update data for specified row\n * @param rows\n * @param trackBy\n */\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n if (Array.isArray(rows)) {\n let updateSuccess = false;\n\n rows.forEach((item) => {\n if (this.updateRow(item, trackBy)) {\n updateSuccess = true;\n }\n });\n\n this._updateVisibleRows();\n\n return updateSuccess;\n } else {\n const updated = this.updateRow(rows, trackBy);\n\n this._updateVisibleRows();\n\n return updated;\n }\n }\n\n /**\n * Remove data for specified row\n * @param data\n */\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n const removedRows = [];\n\n const defaultTrackBy = (row, target) => {\n return row === target;\n };\n\n if (Array.isArray(data)) {\n //\n data.forEach((item) => {\n removedRows.push(...this.removeRow(item, defaultTrackBy));\n });\n } else if (isFunction(data)) {\n removedRows.push(...this.removeRow(null, (data as FsListTrackByTargetRowFn)));\n } else if (isObject(data)) {\n removedRows.push(...this.removeRow(data, defaultTrackBy));\n }\n\n if (removedRows.length > 0) {\n this._updateVisibleRows();\n\n this._rowsRemoved$.next(removedRows)\n }\n\n return !!removedRows.length;\n }\n\n public swapRows(row1, row2, selectedRows?: Row[], isMultipleDrag = false) {\n let tmpEl;\n const rowsStack = this._rowsStack;\n const row1GlobalIndex = rowsStack.indexOf(row1);\n const row2GlobalIndex = rowsStack.indexOf(row2);\n\n tmpEl = rowsStack[row1GlobalIndex];\n rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];\n rowsStack[row2GlobalIndex] = tmpEl;\n\n if (isMultipleDrag && Array.isArray(selectedRows)) {\n if (!selectedRows.includes(row1)) {\n selectedRows = [row1, ...selectedRows];\n }\n\n selectedRows\n .filter((selectedRow) => {\n return selectedRow !== row1;\n })\n .forEach((selectedRow) => {\n const idx = rowsStack.indexOf(selectedRow);\n rowsStack.splice(idx, 1);\n });\n\n const indexToInsertAfter = rowsStack.indexOf(tmpEl);\n\n rowsStack.splice(indexToInsertAfter, 1);\n\n selectedRows.forEach((selectedRow, offset) => {\n rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);\n });\n }\n\n this._rowsStack = [ ...rowsStack ];\n }\n\n public destroy() {\n this._destroyRowsStack();\n this._store.clear();\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public toggleRowGroup(rowData) {\n const row = this.visibleRows.find((visibleRow) => visibleRow.data === rowData );\n row.toggleRowExpandStatus();\n\n this._updateVisibleRows();\n }\n\n public finishReorder(): void {\n // TODO fixme remove or improve\n if (this.groupEnabled) {\n let group;\n this._rowsStack\n .forEach((row, index) => {\n if (row.isGroup && row !== group) {\n group = row;\n } else {\n row.index = index - this._rowsStack.indexOf(group) - 1;\n }\n });\n }\n\n this._updateVisibleRows();\n }\n\n private _updateRowsStack(rows) {\n this._destroyRowsStack();\n\n if (this.groupEnabled) {\n this._store.clear();\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...rows];\n }\n }\n\n private _extendRowsStack(rows) {\n if (this.groupEnabled) {\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...this._rowsStack, ...rows];\n }\n }\n\n private _destroyRowsStack() {\n this._rowsStack.forEach((row) => row.destroy());\n }\n\n private _updateVisibleRows() {\n this.visibleRows = this._rowsStack\n .filter((row, index) => {\n return (!(row as any).isChild && !row.isGroupFooter) || row.visible;\n });\n }\n\n private updateRow(\n targetRow: FsListAbstractRow,\n trackBy?: (listRow: FsListAbstractRow, targetRow?: FsListAbstractRow) => boolean) {\n\n if (trackBy === void 0) {\n trackBy = (row, target) => {\n return row === target;\n }\n }\n\n const targetIndex = this._rowsStack.findIndex((listRow) => trackBy(listRow.data, targetRow));\n\n if (targetIndex !== -1) {\n const updateTarget = this._rowsStack[targetIndex];\n const updatedData = Object.assign({}, updateTarget.data, targetRow);\n\n this._rowsStack[targetIndex] = new Row(\n updatedData,\n updateTarget.type,\n {\n parent: updateTarget.parent,\n initialExpand: updateTarget.expanded,\n }\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Remove row from\n * @param targetRow\n * @param trackBy\n */\n private removeRow(\n targetRow: FsListAbstractRow | null,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n\n const rows = this._rowsStack;\n const removedRows = [];\n\n rows.forEach((listRow, index) => {\n if (trackBy(listRow.data, targetRow)) {\n const removedRow = rows.splice(index, 1);\n\n removedRows.push(removedRow);\n }\n });\n\n return removedRows;\n }\n\n /**\n * Split existing rows by groups and store them for future use\n */\n private groupRowsBy(rows) {\n if (!this._groupByFn || !this._compareByFn) { return rows }\n\n let groupRows: GroupRow[] = [];\n const footerRows = new Map();\n\n rows.forEach((row) => {\n const mainGroup = this._groupByFn(row);\n const mainGroupKey = this._compareByFn(mainGroup);\n\n if (!this._store.has(mainGroupKey)) {\n const group = new GroupRow(\n mainGroup,\n this._initialExpand,\n );\n\n group.index = groupRows.length;\n groupRows.push(group);\n\n const childRow = new ChildRow(row, group);\n\n this._store.set(mainGroupKey, group);\n group.children.push(childRow);\n } else {\n const group = this._store.get(mainGroupKey);\n const childRow = new ChildRow(row, group);\n\n group.children.push(childRow);\n }\n });\n\n groupRows.forEach((groupRow) => {\n const footerIndex = groupRow.children\n .findIndex((row) => {\n return this._footerRowFn(row.data, {\n ...groupRow.data,\n children: groupRow.childrenData,\n });\n });\n\n if (footerIndex !== -1) {\n const footerRow = groupRow.children.splice(footerIndex, footerIndex + 1)[0];\n groupRow.children.push(new GroupFooterRow(footerRow.data, groupRow));\n }\n });\n\n return Array.from(this._store.values())\n .reduce((acc, item) => {\n if (item.isGroup) {\n acc.push(item, ...item.children);\n } else {\n acc.push(item);\n }\n\n return acc;\n }, []);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PaginationController } from '../classes/pagination-controller';\nimport { SortingController } from '../classes/sorting-controller';\nimport { FsListSortConfig } from '../interfaces';\nimport {\n ExternalParams,\n ExternalQueryPagination,\n ExternalQuerySorting,\n} from '../interfaces/external-params.interface';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ExternalParamsController {\n\n private _externalParams: ExternalParams = {\n page: null,\n limit: null,\n sortName: null,\n sortDirection: null,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _paginator: PaginationController,\n private _sorting: SortingController,\n private _queryParamsEnabled: boolean,\n ) {\n this.initialize();\n }\n\n public get externalSorting(): FsListSortConfig {\n if (!this._enabled || !this._sortName || !this._sortDirection) {\n return null;\n }\n\n return {\n value: this._sortName,\n direction: this._sortDirection,\n };\n }\n\n private get _enabled(): boolean {\n return this._queryParamsEnabled || this._persistance.enabled;\n }\n\n private get _page(): number {\n return this._externalParams.page;\n }\n\n private get _limit(): number {\n return this._externalParams.limit;\n }\n\n private get _sortName(): string {\n return this._externalParams.sortName;\n }\n\n private get _sortDirection(): 'asc' | 'desc' {\n return this._externalParams.sortDirection;\n }\n\n public initialize() {\n\n // Restore from localStorage parameters if persistance enabled\n if (this._persistance.enabled) {\n this._restorePaginationParams(this._persistance.getDataFromScope('paging'));\n this._restoreSortingParams(this._persistance.getDataFromScope('sorting'));\n }\n\n // Restore from queryParams and override if persistance already had values for those params\n if (this._queryParamsEnabled) {\n this._restorePaginationParams(this._route.snapshot.queryParams as ExternalQueryPagination);\n this._restoreSortingParams(this._route.snapshot.queryParams as ExternalQuerySorting);\n }\n\n // Set initial pagination params\n // The same initial, but for sorting placed in list-controller \"tranformTemplatesToColumns\" method\n if (this._paginator.enabled && !this._paginator.infinityScrollEnabled) {\n if (this._limit) {\n this._paginator.setLimit(this._limit);\n }\n\n if (this._page) {\n this._paginator.goToPage(this._page);\n\n }\n }\n\n // Update pagination in stores\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n\n this._listenPaginatorChanges();\n this._listenSortingChanges();\n }\n\n public clearSortingParams() {\n this._updateSortingParams(null, null);\n }\n\n public destroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _restorePaginationParams(values: ExternalQueryPagination) {\n if (values?.page) {\n this._externalParams.page = +values.page;\n }\n\n if (values?.limit) {\n this._externalParams.limit = +values.limit;\n }\n }\n\n private _restoreSortingParams(values: ExternalQuerySorting) {\n if (values?.sortName) {\n this._externalParams.sortName = values.sortName;\n }\n\n if (values?.sortDirection) {\n this._externalParams.sortDirection = values.sortDirection;\n }\n }\n\n private _listenPaginatorChanges() {\n merge(\n this._paginator.pageChanged$,\n this._paginator.pages$,\n this._paginator.pageReset$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n });\n }\n\n private _listenSortingChanges() {\n merge(\n this._sorting.initialized$,\n this._sorting.sortingChanged$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const sorting = this._sorting.value;\n\n if (sorting) {\n this._updateSortingParams(sorting.value, sorting.direction);\n } else {\n this.clearSortingParams();\n }\n });\n }\n\n private _updateSortingParams(name: string, direction: string) {\n if (this._queryParamsEnabled) {\n this._replaceState({\n sortName: name,\n sortDirection: direction,\n });\n }\n\n if (this._persistance.enabled) {\n if (name && direction) {\n this._persistance.saveDataToScope('sorting', { sortName: name, sortDirection: direction });\n } else {\n this._persistance.saveDataToScope('sorting', null);\n }\n }\n }\n\n private _updatePaginationParams(params) {\n if (this._queryParamsEnabled) {\n this._replaceState(params);\n }\n\n if (this._persistance.enabled) {\n this._persistance.saveDataToScope('paging', params);\n }\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .filter((name) => data[name] !== undefined && data[name] !== null)\n .forEach((name) => {\n url.searchParams.set(name,data[name]);\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { Observable, Subject } from 'rxjs';\r\n\r\nimport { FilterComponent } from '@firestitch/filter';\r\nimport { FsListAction } from '../interfaces/listconfig.interface';\r\n\r\n\r\nexport class ActionsController {\r\n\r\n private _filterRef: FilterComponent;\r\n\r\n private _actions: FsListAction[] = [];\r\n private _reorderAction: FsListAction;\r\n private _doneAction: FsListAction;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor() {}\r\n\r\n public get destroy$(): Observable<void> {\r\n return this._destroy$.asObservable();\r\n }\r\n\r\n public get actions(): FsListAction[] {\r\n return this._actions;\r\n }\r\n\r\n public get hasActions(): boolean {\r\n return this._actions.length > 0;\r\n }\r\n\r\n public setFilterRef(ref: FilterComponent) {\r\n this._filterRef = ref;\r\n }\r\n\r\n public setActions(actions: FsListAction[]) {\r\n this.clearActions();\r\n this._actions = actions;\r\n\r\n if (this._reorderAction) {\r\n this._actions.unshift(this._reorderAction);\r\n }\r\n }\r\n\r\n public addReorderAction(action: FsListAction) {\r\n const actionClickFn = action.click;\r\n this._actions.unshift(action);\r\n\r\n action.click = () => {\r\n this._filterRef.updateActions([this._doneAction]);\r\n this._filterRef.hideKeywordField();\r\n this._filterRef.hideFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n\r\n this._reorderAction = action;\r\n }\r\n\r\n public addReorderDoneAction(action: FsListAction) {\r\n this._doneAction = action;\r\n const actionClickFn = action.click;\r\n\r\n this._doneAction.click = () => {\r\n this._filterRef.updateActions(this._actions);\r\n this._filterRef.showKeywordField();\r\n this._filterRef.showFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n }\r\n\r\n public clearActions() {\r\n this._actions = [];\r\n this._destroy$.next();\r\n }\r\n\r\n public updateDisabledState(): void {\r\n this._filterRef.updateDisabledState();\r\n }\r\n}\r\n","export enum PaginationStrategy {\r\n Page = 'page',\r\n Offset = 'offset',\r\n None = 'none',\r\n}\r\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { isObject } from 'lodash-es';\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { PaginationStrategy } from '../enums/pagination-strategy.enum';\nimport {\n FsListLoadMoreConfig,\n FsPaging,\n PageChange,\n QueryOffsetStrategy,\n QueryPageStrategy,\n} from '../interfaces';\n\nexport class PaginationController {\n\n public limit = 25;\n public records: number;\n public manual = false;\n\n public page = 1; // Active page\n public offset = 0;\n\n // public pagesArray = [];\n public displayed = 0;\n\n private _pages$ = new BehaviorSubject<number>(0); // Total pages\n\n private _strategy: PaginationStrategy = PaginationStrategy.None;\n private _removedRows = 0;\n\n private _pageChanged$ = new Subject<PageChange>();\n private _pageReset$ = new Subject<void>();\n private _onDestroy$ = new Subject();\n\n private _loadMoreEnabled = false;\n private _infinityScrollEnabled = false;\n private _loadMoreText = 'Load More';\n private _limits = [10, 25, 50, 100, 200];\n\n constructor() {}\n\n // Total pages\n public set pages(value: number) {\n this._pages$.next(value);\n }\n\n public get pages(): number {\n return this._pages$.getValue();\n }\n\n public get pages$(): Observable<number> {\n return this._pages$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n /**\n * Fire if page was changed\n */\n public get pageChanged$(): Observable<PageChange> {\n return this._pageChanged$.pipe(takeUntil(this._onDestroy$));\n }\n\n public get pageReset$(): Observable<void> {\n return this._pageReset$.asObservable();\n }\n\n /**\n * Get enabled\n */\n public get enabled(): boolean {\n return !this.hasNoneStrategy;\n }\n\n /**\n * Get Limits\n */\n public get limits(): number[] {\n return this._limits;\n }\n\n /**\n * Set limits, update pages array and set new limit per page\n *\n * @param value\n */\n public set limits(value) {\n this._limits = value;\n\n if (this.limits.length > 0 && this.limits.indexOf(this.limit) === -1) {\n this.limit = this.limits[0];\n } else if (this.limits.length === 0) {\n this.limit = this.records;\n }\n }\n\n /**\n * Get query for request\n */\n public get query() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.queryPageStrategy;\n case PaginationStrategy.Offset:\n return this.queryOffsetStrategy;\n }\n\n return {};\n }\n\n public get loadMoreQuery() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.query;\n case PaginationStrategy.Offset:\n const query = this.queryOffsetStrategy;\n\n query.limit = query.offset + query.limit;\n query.offset = 0;\n\n return query;\n }\n\n return {};\n }\n\n /**\n * Query for Page Strategy\n */\n public get queryPageStrategy(): QueryPageStrategy {\n return this.hasNoneStrategy\n ? {}\n : {\n page: this.page || 1,\n limit: this.limit || 10,\n };\n }\n\n /**\n * Query for Offset Strategy\n */\n public get queryOffsetStrategy(): QueryOffsetStrategy {\n const page = this.page - 1 || 0;\n const limit = this.limit || 5;\n\n return {\n offset: page * limit,\n limit,\n };\n }\n\n /**\n * Get query for load only count of deleted rows\n */\n public get loadDeletedOffsetQuery() {\n const paginationOffset = this.limit * this.page;\n const actualOffset = Math.min(this.records, paginationOffset);\n const offset = Math.max(0, actualOffset - this._removedRows);\n\n return {\n offset,\n limit: this._removedRows,\n };\n }\n\n public get initialized() {\n return !!this.pages;\n }\n\n public get strategy() {\n return this._strategy;\n }\n\n public set strategy(strategy: PaginationStrategy) {\n this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;\n }\n\n /**\n * Check if pagination in Page Strategy Mode\n */\n public get hasPageStrategy() {\n return this.strategy === PaginationStrategy.Page;\n }\n\n /**\n * Check if pagination in Offset Strategy Mode\n */\n public get hasOffsetStrategy() {\n return this.strategy === PaginationStrategy.Offset;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasNoneStrategy(): boolean {\n return this.strategy === PaginationStrategy.None;\n }\n\n /**\n * If prev page can be activated\n *\n */\n public get hasPrevPage(): boolean {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasPrevPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasPrevPageOffsetStrategy;\n }\n\n return false;\n }\n\n /**\n * If next page can be activated\n */\n public get hasNextPage(): boolean { // Need to check if pages === page && page === 1\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasNextPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasNextPageOffsetStrategy;\n }\n\n return false;\n }\n\n public get loadMoreEnabled(): boolean {\n return this._loadMoreEnabled;\n }\n\n public get loadMoreText(): string {\n return this._loadMoreText;\n }\n\n public get infinityScrollEnabled() {\n return this._infinityScrollEnabled;\n }\n\n /**\n * SP-T1974\n * Showing 26-50 of 333 results sorted by Name, Ascending\n * Showing 0 results sorted by Name, Ascending\n */\n public get statusLabel(): string {\n const current = (this.page - 1) * this.limit;\n const from = current + 1;\n const to = Math.min(this.records, current + this.limit);\n\n return `${from}-${to}`;\n }\n\n public initWithConfig(\n config: FsPaging | false,\n loadMore: FsListLoadMoreConfig | boolean,\n infinityScrollEnabled = false,\n ) {\n\n if (config) {\n if (config.limits) {\n this.limits = config.limits;\n }\n\n if (config.limit) {\n this.limit = config.limit;\n }\n\n this.strategy = config.strategy;\n }\n\n if (loadMore) {\n this.setLoadMore(loadMore);\n }\n\n this._infinityScrollEnabled = infinityScrollEnabled;\n }\n\n /**\n * If pagination has prev page when Page Strategy\n */\n private get _hasPrevPagePageStrategy(): boolean {\n return this.page > 1 && this.pages > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageOffsetStrategy(): boolean {\n return this.offset >= this.limit && this.records > 1;\n }\n\n /**\n * If pagination has next page when Page Strategy\n */\n private get _hasNextPagePageStrategy(): boolean {\n return this.page < this.pages && this.pages > 1;\n }\n\n /**\n * If pagination has next page when Offset Strategy\n */\n private get _hasNextPageOffsetStrategy(): boolean {\n return (this.offset + this.limit) < this.records && this.records > 1;\n }\n\n /**\n * Update paging config and all related fields\n *\n * @param config\n * @param displayedRecords\n * @param loadMoreOperation\n */\n public updatePaging(config, displayedRecords = 0, loadMoreOperation = false) {\n if (!loadMoreOperation) {\n this._fromParams(config);\n this.displayed = displayedRecords;\n } else {\n this.records = config.records;\n\n if (this.records < this.displayed) {\n this.displayed = this.records;\n }\n\n this._removedRows = 0;\n }\n\n this._updateTotalPages();\n }\n\n // /**\n // * Update paging when data source not remove\n // * @param {any[]} rows\n // */\n /*public updatePagingManual(rows: any[]) {\n if (Array.isArray(rows) && rows.length > 0) {\n this.records = rows.length;\n this.pages = Math.ceil(rows.length / this.limit);\n }\n\n this.updatePagesArray();\n this.updateDisplayed();\n }*/\n\n /**\n * Update pages array with new pages count\n */\n // public updatePagesArray() {\n // const MIDDLE = 2;\n // const pagesArr = [];\n\n // let from = 0;\n // let to = 0;\n // if (this.page < MIDDLE) {\n // from = MIDDLE - 1;\n // to = MIDDLE + 1;\n // } else if (this.page >= MIDDLE && this.page <= this.pages - MIDDLE + 1) {\n // from = this.page - 1;\n // to = this.page + 1;\n // } else if (this.page > this.pages - MIDDLE + 1) {\n // from = this.pages - MIDDLE - 1;\n // to = this.pages;\n // }\n\n // if (!this.pages || this.pages < 5) {\n // from = 1;\n // to = this.pages || 0;\n // }\n\n // for (let i = from; i <= to; i++) {\n // pagesArr.push(i);\n // }\n\n // this.pagesArray = Object.assign([], pagesArr);\n // }\n\n public setLoadMore(config: FsListLoadMoreConfig | boolean) {\n this._loadMoreEnabled = !!config;\n\n if (this._loadMoreEnabled && isObject(config) && (config as FsListLoadMoreConfig).label) {\n this._loadMoreText = (config as FsListLoadMoreConfig).label;\n }\n }\n\n /**\n * Update dispayed records counter\n */\n // public updateDisplayed() {\n // this.displayed = this.getVisibleRecords();\n // }\n\n /**\n * Return count of records that could be shown on page\n */\n // public getVisibleRecords() {\n // const diff = this.hasOffsetStrategy\n // ? this.records - this.offset\n // : this.limit;\n //\n // return diff < this.limit\n // ? diff\n // : this.displayed;\n // }\n\n public getVisibleRecords() {\n return this.displayed;\n }\n\n /**\n * Set new limit\n *\n * @param limit\n */\n public setLimit(limit) {\n this.limit = limit;\n this.resetPaging();\n\n this._pageChanged$.next({\n type: PageChangeType.LimitChanged,\n payload: limit,\n });\n }\n\n /**\n * If page is activate page\n *\n * @param page\n */\n public isActive(page): boolean {\n return page === this.page;\n }\n\n /**\n * Go to page\n *\n * @param page\n */\n public goToPage(page) {\n if (page >= 1 && this.page !== page) {\n this.page = page;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: page,\n });\n }\n }\n\n /**\n * Reset paging like it was just initialized\n */\n public resetPaging() {\n this.page = 1;\n this.offset = 0;\n }\n\n /**\n * Go to next page\n */\n public goNext() {\n if (this.hasNextPage) {\n this.page++;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to first page\n */\n public goFirst() {\n if (this.page > 1) {\n this.page = 1;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to prev page\n */\n public goPrev() {\n if (this.page > 1) {\n this.page--;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to last page\n */\n public goLast() {\n if (this.page !== this.pages) {\n this.page = this.pages;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Update count of deleted rows. This count will be applied for offset calc\n *\n * @param count\n */\n public removeRows(count: number) {\n this._removedRows += count;\n }\n\n public updatePagination() {\n this._updateTotalPages();\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Update paging state\n *\n * @param params\n */\n private _fromParams(params): void {\n if (!this.loadMoreEnabled) {\n this.limit = params.limit ?? 25;\n }\n\n this.records = params.records;\n this.manual = params.manual;\n\n this.pages = params.pages || 0;\n }\n\n /**\n * Calc and update offset\n */\n private _updateOffset() {\n this.offset = this.limit * (this.page - 1);\n }\n\n /**\n * Calc and update total count of pages\n */\n private _updateTotalPages() {\n this.pages = Math.ceil(this.records / this.limit);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class ColumnAsyncAttribute<T> extends BehaviorSubject<T> {\n\n constructor(value: T) {\n super(Object.freeze(value));\n }\n\n public next(value: T): void {\n const newValue = value;\n const oldValue = this.getValue();\n\n if (newValue !== oldValue) {\n super.next(Object.freeze(value));\n }\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ColumnAsyncAttribute } from './column-async-attribute';\n\nexport class ColumnAttributes {\n\n private _title: string;\n private _name: string;\n private _customize = true;\n private _sortable: boolean;\n private _sortableDefault: boolean;\n private _direction$ = new ColumnAsyncAttribute(null);\n private _align: string;\n private _width: string;\n private _className: string | string[];\n private _visible$ = new ColumnAsyncAttribute(true);\n\n constructor(attrs: { [key: string]: any } = {}) {\n this._init(attrs);\n }\n\n // title\n public set title(value: string) {\n this._title = value;\n }\n\n public get title(): string {\n return this._title;\n }\n\n // name\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n // customize\n public set customize(value: boolean) {\n this._customize = value;\n }\n\n public get customize(): boolean {\n return this._customize;\n }\n\n // sortable\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n\n // sortableDefault\n public set sortableDefault(value: boolean) {\n this._sortableDefault = value;\n\n if (this.sortableDefault) {\n this.sortable = true;\n }\n }\n\n public get sortableDefault(): boolean {\n return this._sortableDefault;\n }\n\n // direction\n public set direction(value: 'asc' | 'desc') {\n this._direction$.next(value);\n }\n\n public get direction(): 'asc' | 'desc' {\n return this._direction$.value;\n }\n\n public get direction$(): Observable<'asc' | 'desc'> {\n return this._direction$.asObservable();\n }\n\n // align\n public set align(value: string) {\n this._align = value;\n }\n\n public get align(): string {\n return this._align;\n }\n\n // width\n public set width(value: string) {\n this._width = value;\n }\n\n public get width(): string {\n return this._width;\n }\n\n // className\n public set className(value: string | string[]) {\n this._className = value;\n }\n\n public get className(): string | string[] {\n return this._className;\n }\n\n // visibility\n public set visible(value: boolean) {\n this._visible$.next(value);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n private _init(attrs: { [key: string]: any }) {\n Object.keys(attrs)\n .forEach((key) => {\n switch (key) {\n case 'title': { this.title = attrs[key]; } break;\n case 'name': { this.name = attrs[key]; } break;\n case 'align': { this.align = attrs[key]; } break;\n case 'direction': { this.direction = attrs[key]; } break;\n case 'sortable': { this.sortable = attrs[key]; } break;\n case 'show': { this.visible = attrs[key]; } break;\n case 'visible': { this.visible = attrs[key]; } break;\n }\n });\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsListSortConfig, SortingChangeEvent } from '../interfaces';\nimport { ColumnAttributes } from '../models/column-attributes';\nimport { Column, SortingDirection } from '../models/column.model';\n\nimport { List } from './list-controller';\n\n\nexport class SortingController {\n public config: List;\n\n public sortingColumns: Column[] = [];\n public fakeSortingColumns: Column[] = [];\n public sortingColumn: Column;\n\n private _initialized = new BehaviorSubject<boolean>(false);\n private _sortingChanged$ = new Subject<SortingChangeEvent>();\n private _onDestroy = new Subject();\n\n constructor() {}\n\n public get sortingChanged$(): Observable<SortingChangeEvent> {\n return this._sortingChanged$.pipe(takeUntil(this._onDestroy));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized.pipe(takeUntil(this._onDestroy));\n }\n\n public get value(): FsListSortConfig | undefined {\n if (this.sortingColumn) {\n return {\n value: this.sortingColumn.name,\n direction: this.sortingColumn.direction,\n };\n }\n\n return undefined;\n }\n\n public get initialization(): boolean {\n return !this._initialized.getValue();\n }\n\n public get isDefined(): boolean {\n return !!this.sortingColumn;\n }\n\n private set _initialization(value: boolean) {\n this._initialized.next(!value);\n }\n\n public addSortableColumn(column: Column) {\n this.sortingColumns.push(column);\n }\n\n public clearSortableColumns(): void {\n this.sortingColumns = [];\n }\n\n /**\n * Set Sortable Direction\n *\n * @param direction\n */\n public sortDirection(direction) {\n if (this.sortingColumn && this.sortingColumn.sortingDirection !== direction) {\n this._setSortingDirection(direction);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Sort By\n *\n * @param column\n */\n public sortBy(column: Column) {\n if (column.sortable) {\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Same as sortBy, but need only column name as parameter for sort\n *\n * @param name\n */\n public sortByColumnWithName(name: string) {\n const column = this.getColumn(name);\n\n if (!column) {\n return;\n }\n\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n\n /**\n * Init fake columns for sorting\n *\n * @param columns\n */\n public initFakeColumns(columns) {\n columns.forEach((column) => {\n const attributes = new ColumnAttributes({\n title: column.name,\n name: column.value,\n sortable: true,\n direction: column.direction,\n });\n\n const fakeColumn = new Column({\n attributes,\n });\n\n this.fakeSortingColumns.push(fakeColumn);\n });\n }\n\n /**\n * Set initial sorting\n *\n * @param sort\n */\n public initialSortBy(sort: FsListSortConfig) {\n this._initialization = true;\n\n if (!sort) {\n this._trySortByDefaultSortableColumn();\n\n if (!this.sortingColumn) {\n this.sortByFirstSortbale();\n }\n\n this._initialization = false;\n\n return;\n }\n\n if (!this.getColumn(sort.value)) {\n this.sortByFirstSortbale();\n\n console.warn(`\n Not possible to do initial sort by \"${sort.value}\" column.\n Column with name \"${sort.value}\" does not exists.\n Check your lister configuration.\n `);\n } else {\n this.sortByColumnWithName(sort.value);\n\n const direction = (sort.direction === undefined || sort.direction === 'asc')\n ? SortingDirection.asc\n : SortingDirection.desc;\n this._setSortingDirection(direction);\n }\n\n this._initialization = false;\n }\n\n /**\n * Sort by first of available sorting columns\n */\n public sortByFirstSortbale() {\n const column =\n this.sortingColumns.find((col) => col.sortable);\n\n if (!column) {\n return;\n }\n\n this.sortBy(column);\n this.sortDirection(column.direction || SortingDirection.asc);\n }\n\n public getColumn(name: string): Column {\n return [...this.sortingColumns, ...this.fakeSortingColumns]\n .find((col) => col.name === name && col.sortable);\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private _setSortingColumn(column: Column) {\n // Can't do sort by non sortable column\n if (!column.sortable) {\n return false;\n }\n\n // Column was ordered before\n if (column.ordered) {\n column.changeDirection();\n } else {\n [...this.fakeSortingColumns, ...this.sortingColumns]\n .filter((col) => col.ordered)\n .forEach((col) => col.ordered = false);\n\n column.ordered = true;\n }\n\n this.sortingColumn = column;\n }\n\n private _setSortingDirection(direction) {\n this.sortingColumn.sortingDirection = direction;\n }\n\n private _notifySortChanged() {\n if (this.initialization) {\n return;\n }\n\n this._sortingChanged$.next({\n sortBy: this.sortingColumn.name,\n sortDirection: this.sortingColumn.direction,\n });\n }\n\n private _trySortByDefaultSortableColumn(): void {\n const sortableDefault = this.sortingColumns\n .find((column) => column.sortableDefault);\n\n if (sortableDefault) {\n this.sortByColumnWithName(sortableDefault.name);\n }\n }\n}\n","import { ElementRef, TemplateRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ChangeFn, FilterConfig, IFilterSavedFiltersConfig, ItemType } from '@firestitch/filter';\nimport { FsScrollInstance, FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { BehaviorSubject, combineLatest, EMPTY, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, debounceTime, map, mapTo, shareReplay, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { cloneDeep } from 'lodash-es';\n\nimport { SortingDirection } from '../models/column.model';\n\n// Interfaces\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport {\n FsListAfterContentInitFn,\n FsListAfterFetchFn,\n FsListAfterInitFn,\n FsListBeforeFetchFn,\n FsListConfig,\n FsListEmptyStateConfig,\n FsListFetchFn,\n FsListFetchOptions,\n FsListFetchSubscription,\n FsListGroupConfig,\n FsListLoadMoreConfig,\n FsListNoResultsConfig,\n FsListPersitance,\n FsListRestoreConfig,\n FsListScrollableConfig,\n FsListSelectionConfig,\n FsListTrackByFn,\n FsPaging,\n PageChange,\n} from '../interfaces';\nimport { RowAction } from '../models/row-action.model';\nimport { StyleConfig } from '../models/styleConfig.model';\n\nimport { ColumnsController } from './columns-controller';\nimport { DataController } from './data-controller';\nimport { ExternalParamsController } from './external-params-controller';\nimport { ActionsController } from './index';\nimport { PaginationController } from './pagination-controller';\nimport { PersistanceController } from './persistance-controller';\nimport { SelectionController } from './selection-controller';\nimport { SortingController } from './sorting-controller';\n\nconst SHOW_DELETED_FILTERS_KEY = '_showDeleted_';\n\n\nexport class List {\n\n public heading: string;\n public trackBy: string;\n public subheading: string;\n public autoFocus: boolean;\n public rowHighlight: boolean;\n public rowActionsRaw: any[];\n public groupActionsRaw: any[];\n public rowClass;\n public rowEvents: any;\n public restore: FsListRestoreConfig;\n public persist: FsListPersitance;\n public filters = [];\n public filterInitCb: ChangeFn;\n public filterChangeCb: ChangeFn;\n public savedFilters: IFilterSavedFiltersConfig;\n public scrollable: FsListScrollableConfig;\n public noResults: FsListNoResultsConfig;\n public emptyState: FsListEmptyStateConfig;\n public fetchFn: FsListFetchFn;\n public beforeFetchFn: FsListBeforeFetchFn;\n public afterFetchFn: FsListAfterFetchFn;\n public afterContentInit: FsListAfterContentInitFn;\n public afterInit: FsListAfterInitFn;\n public style;\n public initialized$ = new BehaviorSubject(false);\n public loading$ = new BehaviorSubject(false);\n public hasRowActions;\n public paging = new PaginationController();\n public columns = new ColumnsController();\n public actions = new ActionsController();\n public dataController = new DataController();\n public sorting = new SortingController();\n public externalParams: ExternalParamsController;\n public selection: SelectionController;\n public filterConfig: FilterConfig = null;\n public fetch$ = new Subject<FsListFetchSubscription | void>();\n public fetchComplete$ = new Subject<void>();\n public filtersReady$ = new Subject<void>();\n public status = true;\n public chips = false;\n public filterInput = true;\n public queryParam = false;\n public restoreMode = false;\n\n public initialFetch = true;\n\n // Empty state\n public emptyStateEnabled = false;\n public emptyStateTemplate: TemplateRef<any>;\n\n public fsScrollInstance: FsScrollInstance;\n\n public onDestroy$ = new Subject();\n\n private readonly _filtersQuery = new BehaviorSubject<Record<string, any>>(null);\n private readonly _activeFiltersCount$ = this._filtersQuery\n .pipe(map((v) => Object.keys(v).length), shareReplay());\n\n private readonly _headerConfig: StyleConfig;\n private readonly _groupCellConfig: StyleConfig;\n private readonly _cellConfig: StyleConfig;\n private readonly _footerConfig: StyleConfig;\n\n private _fsScrollSubscription: Subscription;\n\n constructor(\n private _el: ElementRef,\n private config: FsListConfig = {},\n private fsScroll: FsScrollService,\n private selectionDialog: SelectionDialog,\n private router: Router,\n private route: ActivatedRoute,\n private persistance: PersistanceController,\n private inDialog: boolean,\n ) {\n this.initialize(config);\n this._headerConfig = new StyleConfig(config.header);\n this._groupCellConfig = new StyleConfig(config.cell);\n this._cellConfig = new StyleConfig(config.cell);\n this._footerConfig = new StyleConfig(config.footer);\n this.initialized$.next(true);\n this.subscribe();\n\n if (this.initialFetch) {\n this.dataController.setOperation(FsListState.Load);\n this.fetch$.next();\n }\n\n }\n\n public get hasSavedFilters(): boolean {\n return !!this.filterConfig.savedFilters;\n }\n\n public get filtersQuery(): Record<string, any> {\n return this._filtersQuery.getValue();\n }\n\n public get activeFiltersCount$(): Observable<number> {\n return this._activeFiltersCount$;\n }\n\n public fetchRemote(query) {\n const options: FsListFetchOptions = {\n state: this.dataController.operation,\n };\n\n const result: any = this.fetchFn(query, options);\n\n return result instanceof Promise ? from(result) : result;\n }\n\n // public loadLocal() {\n // this.paging.updatePagingManual(this._rows);\n // const from = (this.paging.page - 1) * this.paging.limit;\n // const to = (this.paging.page === 1) ? this.paging.limit : this.paging.limit * this.paging.page;\n // const sliceOfRows = this._rows.slice(from, to);\n // this.data$.next(sliceOfRows);\n // }\n\n /**\n * Transform templates for using\n *\n * @param templates\n */\n public tranformTemplatesToColumns(templates) {\n const defaultConfigs = {\n header: this._headerConfig,\n groupCell: this._groupCellConfig,\n cell: this._cellConfig,\n footer: this._footerConfig,\n };\n\n this.columns.setDefaults(defaultConfigs);\n this.columns.initializeColumns(templates);\n\n // Set sortBy default column\n this._updateSortingColumns();\n\n // Default sort by\n const externalSorting = this.externalParams.externalSorting;\n const initialSortConfig = externalSorting || this.config.sort;\n this.sorting.initialSortBy(initialSortConfig);\n\n if (externalSorting && !this.sorting.isDefined) {\n this.externalParams.clearSortingParams();\n\n console.warn('Not able to restore persisted sorting params.', externalSorting);\n }\n\n this._initFilters();\n this.initInfinityScroll();\n }\n\n public reload() {\n this.loading$.next(true);\n\n this.dataController.setOperation(FsListState.Reload);\n\n if (this.fsScrollInstance) {\n this.paging.resetPaging();\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n }\n\n /**\n * Watch page changes\n */\n public subscribe() {\n this.paging.pageChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((event: PageChange) => {\n this.dataController.setOperation(FsListState.PageChange);\n\n // Remove all rows if limits was changed\n if (event.type === PageChangeType.LimitChanged && this.paging.hasPageStrategy) {\n this.dataController.clearRows();\n }\n\n if (this.paging.hasOffsetStrategy) {\n this.paging.updatePagination();\n\n if (this.selection) {\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n this.selection.pageChanged(this.scrollable);\n }\n }\n\n if (!this.scrollable && !this.paging.loadMoreEnabled) {\n\n const contains = [].slice.call(document.querySelectorAll('.cdk-overlay-container')).some((overlay) => {\n return this._el.nativeElement.contains(overlay);\n });\n\n let el = this._el.nativeElement;\n\n if (!contains) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n if ((rect.top + window.pageYOffset) < window.innerHeight) {\n el = document.body;\n }\n }\n\n this.fetchComplete$.asObservable()\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n el.scrollIntoView({ behavior: 'smooth' });\n });\n }\n\n this.fetch$.next();\n });\n\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this.dataController.setOperation(FsListState.Sort);\n this.paging.page = 1;\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n });\n\n this._listenVisibleColumnChanges();\n this.listenRowsRemove();\n this.listenFetch();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n let rowsData = this.dataController\n .visibleRowsData;\n\n if (trackBy) {\n rowsData = rowsData\n .filter(trackBy);\n }\n\n return rowsData\n .map((data) => {\n return cloneDeep(data);\n });\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.dataController.visibleRowsData.some(trackBy);\n }\n\n /**\n * Toggle group mode status\n *\n * @param value\n */\n public groupEnabled(value: boolean) {\n if (this.dataController.groupEnabled !== value) {\n this.dataController.groupEnabled = value;\n\n // Commented out because Ray wants to change group status in fetch map pipe\n // and it triggers extra requests\n // this.reload();\n }\n }\n\n public destroy() {\n if (this._fsScrollSubscription) {\n this._fsScrollSubscription.unsubscribe();\n }\n\n if (this.paging) {\n this.paging.destroy();\n }\n\n if (this.sorting) {\n this.sorting.destroy();\n }\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.filterConfig) {\n this.filterConfig = null;\n }\n\n if (this.externalParams) {\n this.externalParams.destroy();\n }\n\n this.columns.destroy();\n\n this.onDestroy$.next();\n this.onDestroy$.complete();\n\n this.dataController.destroy();\n }\n\n /**\n * Do initialization of table\n *\n * @param config\n */\n private initialize(config: FsListConfig) {\n this.autoFocus = config.autoFocus;\n this.rowHighlight = config.rowHighlight ?? true;\n this.heading = config.heading;\n this.trackBy = config.trackBy;\n this.subheading = config.subheading;\n this.rowActionsRaw = config.rowActions;\n this.rowClass = config.rowClass;\n this.rowEvents = config.rowEvents;\n this.restore = config.restore;\n this.persist = config.persist;\n this.filters = config.filters ?? [];\n this.filterInitCb = config.filterInit;\n this.filterChangeCb = config.filterChange;\n this.savedFilters = config.savedFilters;\n this.scrollable = config.scrollable;\n this.noResults = config.noResults;\n this.emptyState = config.emptyState;\n this.fetchFn = config.fetch;\n this.afterFetchFn = config.afterFetch;\n this.beforeFetchFn = config.beforeFetch;\n this.afterInit = config.afterInit;\n this.style = config.style;\n\n this.columns.initConfig(config.column);\n this.initDefaultOptions(config);\n this.initRestore();\n this.initActions(config.actions);\n this.initPaging(config.paging, config.loadMore);\n this.initSelection(config.selection, this.selectionDialog);\n this.initGroups(config.group);\n this.initExternalParamsController();\n\n this.initializeData();\n }\n\n /**\n * Just init options by default it it wasn't specified\n *\n * @param config\n */\n private initDefaultOptions(config) {\n // We should prevent initial fetch in cases when it will be fetched in any case\n // As ex. scrollable or filter will do fetch in any cases\n if (config.initialFetch === false || config.scrollable) { // TODO fixme after tsmodel version update\n this.initialFetch = false;\n }\n if (config.status === false) {\n this.status = false;\n }\n if (config.chips) {\n this.chips = config.chips;\n }\n if (config.filterInput === false) {\n this.filterInput = false;\n }\n\n if (this.inDialog) {\n this.queryParam = false;\n } else {\n this.queryParam = (config.queryParam === void 0)\n ? true\n : config.queryParam;\n }\n\n if (config.sorts) {\n this.sorting.initFakeColumns(config.sorts);\n }\n if (!config.trackBy) {\n this.trackBy = 'id';\n }\n\n if (config.afterContentInit) {\n this.afterContentInit = () => {\n config.afterContentInit(this.paging.query, this.dataController.visibleRows);\n };\n }\n }\n\n /**\n * Init restore row action and append Show Deleted option into filters\n */\n private initRestore() {\n if (this.restore) {\n const restoreAction = new RowAction({\n label: this.restore.menuLabel || 'Restore',\n menu: true,\n click: (row) => {\n this.restoreClick(this.restore.click, row);\n }, // TODO fix me, move to special file\n restore: true,\n });\n\n if (!this.rowActionsRaw) {\n this.rowActionsRaw = [];\n }\n\n this.rowActionsRaw.push(restoreAction);\n\n if (!this.filters) {\n this.filters = [];\n }\n\n if (this.restore.filter !== false) {\n this.filters.push({\n name: SHOW_DELETED_FILTERS_KEY,\n type: ItemType.Checkbox,\n label: this.restore.filterLabel || 'Show Deleted',\n });\n }\n }\n\n }\n\n /**\n * Init paging\n *\n * @param pagingConfig\n * @param loadMore\n */\n private initPaging(pagingConfig: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean) {\n this.paging.initWithConfig(pagingConfig, loadMore, !!this.scrollable);\n }\n\n /**\n * Split actions by categories\n */\n private initActions(actions) {\n if (actions) {\n this.actions.setActions(actions);\n }\n\n this.hasRowActions =\n (this.rowActionsRaw && this.rowActionsRaw.length > 0)\n || (this.groupActionsRaw && this.groupActionsRaw.length > 0);\n }\n\n private initSelection(\n selectionConfig: FsListSelectionConfig,\n selectionDialog: SelectionDialog,\n ) {\n if (selectionConfig) {\n this.selection = new SelectionController(selectionConfig, this.trackBy, selectionDialog);\n this.selection.setRowsCallback(() => this.dataController.visibleRows);\n }\n }\n\n private initializeData() {\n this.dataController.setAdditionalConfigs({\n scrollable: !!this.scrollable,\n loadMoreEnabled: this.paging.loadMoreEnabled,\n });\n }\n\n private initGroups(groupConfig: FsListGroupConfig) {\n if (groupConfig) {\n this.dataController.setGroupConfig(groupConfig);\n this.groupActionsRaw = groupConfig.actions;\n }\n }\n\n private initExternalParamsController() {\n this.externalParams = new ExternalParamsController(\n this.router,\n this.route,\n this.persistance,\n this.paging,\n this.sorting,\n this.queryParam,\n );\n }\n\n /**\n * Subscribe to fetch$ event with debounce\n */\n private listenFetch() {\n let fetch$ = this.fetch$.asObservable();\n\n // Should wait until saved filters not loaded\n if (!!this.filters) {\n fetch$ = combineLatest([fetch$, this.filtersReady$])\n .pipe(\n map(([params]) => params),\n );\n }\n\n fetch$\n .pipe(\n debounceTime(50),\n tap(() => {\n this.loading$.next(true);\n }),\n tap(() => {\n this.selection?.closeSelectionDialog();\n }),\n map((params: FsListFetchSubscription) => {\n let query = { ...this.filtersQuery };\n\n if (this.paging.hasOffsetStrategy && params && params.loadOffset) {\n query = Object.assign(query, this.paging.loadDeletedOffsetQuery);\n } else {\n const allRecordsRangeNeeded = (this.initialFetch\n || this.dataController.operation === FsListState.Reload\n ) && this.paging.loadMoreEnabled;\n\n query = allRecordsRangeNeeded ? Object.assign(query, this.paging.loadMoreQuery) : Object.assign(query, this.paging.query);\n }\n\n if (this.sorting.sortingColumn) {\n Object.assign(\n query,\n {\n order: `${this.sorting.sortingColumn.name},${this.sorting.sortingColumn.direction}`,\n },\n );\n }\n\n if (this.columns.configured) {\n query = {\n ...query,\n columns: this.columns.visibleColumnsNames,\n };\n }\n\n return query;\n }),\n switchMap((query) => {\n if (this.columns.loadFnConfigured && !this.columns.columnsFetched) {\n return this.columns.loadRemoteColumnConfigs()\n .pipe(\n mapTo(query),\n );\n }\n\n return of(query);\n }),\n switchMap((query) => {\n if (this.beforeFetchFn) {\n return this.beforeFetchFn(query)\n .pipe(\n catchError((error, source$) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n }\n\n return of(query);\n }),\n switchMap((query) => {\n const remoteFetch = this.fetchRemote(query)\n .pipe(\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n\n return combineLatest([of(query), remoteFetch]);\n }),\n catchError((error, source$) => {\n console.error(error);\n\n return EMPTY;\n }),\n takeUntil(this.onDestroy$),\n )\n .subscribe((response) => {\n this.initialFetch = false;\n\n this.completeFetch(response);\n }, () => { }, () => {\n });\n }\n\n private listenRowsRemove() {\n this.dataController.rowsRemoved$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((rows: any[]) => {\n if (this.paging.enabled) {\n\n const removedCount = rows.length;\n\n if (this.paging.hasPageStrategy) {\n this.noDataPaginationUpdate(removedCount);\n } else {\n // Fetch more if has something for fetch\n if (this.dataController.hasData || this.paging.hasNextPage) {\n this.dataController.setOperation(FsListState.LoadMore);\n\n this.paging.removeRows(removedCount);\n this.fetch$.next({ loadOffset: true });\n } else {\n this.noDataPaginationUpdate(removedCount);\n }\n }\n }\n\n // Remove from selection\n if (this.selection) {\n rows.forEach((row) => {\n this.selection.removeRow(row.data);\n });\n }\n });\n }\n\n /**\n * Lister may have originally hidden columns, but visibility of those columns\n * can be changed programmaticaly in any time\n */\n private _listenVisibleColumnChanges(): void {\n this.columns.visibleColumns$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this._updateSortingColumns();\n });\n }\n\n private initInfinityScroll() {\n if (this.fsScrollInstance) {\n return;\n }\n\n if (this.scrollable) {\n // Scrollable status by default\n if (this.scrollable.status === void 0) {\n this.scrollable.status = true;\n }\n\n\n this.fsScroll\n .component(this.scrollable.name)\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((fsScrollInstance: FsScrollInstance) => {\n this.fsScrollInstance = fsScrollInstance;\n this._fsScrollSubscription = fsScrollInstance\n .subscribe(() => {\n let startLoading = false;\n const operation = this.dataController.operation;\n\n // Initial loading if initialFetch equals false\n if (!this.initialFetch\n && !this.paging.initialized\n && operation !== FsListState.Reload\n ) {\n\n this.dataController.setOperation(FsListState.Load);\n startLoading = true;\n\n } else if (\n operation === FsListState.Reload ||\n operation === FsListState.Filter ||\n operation === FsListState.Sort\n ) {\n startLoading = true;\n } else if (this.paging.initialized && this.paging.hasNextPage) {\n // Loading if content has been scrolled\n startLoading = true;\n this.dataController.setOperation(FsListState.Load);\n this.paging.goNext();\n }\n\n if (startLoading) {\n this.fetch$.next();\n fsScrollInstance.loading();\n }\n });\n\n this.dataController.remoteRowsChange$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n fsScrollInstance.loaded();\n });\n });\n }\n }\n\n /**\n * Update and watch filter changes\n */\n private _initFilters() {\n if (this.filterConfig) {\n return;\n }\n\n // Merge sorting and fake sorting cols\n // Fake sorting cols it's cols which don't represented in table cols, like abstract cols\n const sortValues =\n [\n ...this.sorting.sortingColumns,\n ...this.sorting.fakeSortingColumns,\n ].reduce((acc, column) => {\n\n const sortingItem = {\n name: column.title,\n value: column.name,\n default: this.sorting.sortingColumn && this.sorting.sortingColumn.name === column.name,\n };\n\n acc.push(sortingItem);\n\n return acc;\n }, []);\n\n const sortConfig = this.sorting.sortingColumn\n ? { value: this.sorting.sortingColumn.name, direction: this.sorting.sortingColumn.direction }\n : null;\n\n // Config\n this.filterConfig = {\n persist: this.persist,\n items: this.filters || [],\n savedFilters: this.savedFilters,\n // inline: this.inlineFilters,\n actions: this.actions.actions,\n queryParam: this.queryParam,\n autofocus: this.autoFocus,\n sorts: sortValues,\n sort: sortConfig,\n chips: this.chips,\n init: this.filterInit.bind(this),\n change: this.filterChange.bind(this),\n reload: (this.config.reload ?? true) ? this.reload.bind(this) : null,\n sortChange: this.filterSort.bind(this),\n };\n }\n\n /**\n * Callback when Filter has been initialized\n *\n * @param filters\n */\n private filterInit(filters) {\n if (this.filterInitCb) {\n this.filterInitCb(filters);\n }\n\n this._filtersQuery.next(filters);\n\n this.checkRestoreFilter();\n }\n\n /**\n * Callback when Filter has been changed\n *\n * @param filterQuery\n * @param filterSort\n */\n private filterChange(filterQuery, filterSort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(filterQuery, filterSort);\n }\n\n this._filtersQuery.next(filterQuery);\n\n this.restoreMode = false;\n\n // Restore option\n this.checkRestoreFilter();\n\n if (this.restore && this.restore.reload) {\n this.reload();\n }\n\n this.dataController.setOperation(FsListState.Filter);\n\n // Reset paging for request with correct offset\n this.paging.resetPaging();\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this.fetch$.next();\n }\n }\n\n private checkRestoreFilter() {\n // Restore option\n if (this.restore && this.filtersQuery[SHOW_DELETED_FILTERS_KEY]) {\n delete this.filtersQuery[SHOW_DELETED_FILTERS_KEY];\n\n Object.assign(this.filtersQuery, this.restore.query);\n\n this.restoreMode = true;\n }\n }\n\n // Callback when Filter sort has been changed\n private filterSort(filterQuery, filterSort) {\n if (filterSort) {\n this.sorting.sortByColumnWithName(filterSort.value);\n\n const sortDirection = filterSort.direction === 'asc' ? SortingDirection.asc : SortingDirection.desc;\n this.sorting.sortDirection(sortDirection);\n } else {\n // FIXME need to be refactored...\n this.sorting.sortingColumn = void 0;\n this.reload();\n }\n }\n\n private completeFetch([query, response]) {\n if (!this.paging.page) {\n this.paging.page = 1;\n }\n\n if (response.paging) {\n const displayed = (Array.isArray(response.data) && response.data.length) || 0;\n this.paging.updatePaging(\n response.paging,\n displayed,\n this.dataController.operation === FsListState.LoadMore,\n );\n } else if (this.paging.enabled) {\n console.log(\n '%c FsList Warning ',\n 'color: white; background-color: #ffcc0b',\n 'Pagination does not configured properly. ' +\n 'Pagination is enabled, but http response does not contain \"paging\" field. ' +\n 'You have to set \"paging: false\" in config or add \"paging\" field to response.',\n );\n }\n\n /// must be before selection, because seletion use records\n this.dataController.setRowsFromResponse(response.data);\n ///\n\n // Update selection params\n if (this.selection) {\n\n if (this.paging.enabled) {\n this.selection.pageChanged(this.scrollable);\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n } else {\n const count = response.paging && response.paging.records\n || Array.isArray(response.data) && response.data.length;\n\n this.selection.updateVisibleRecordsCount(count);\n this.selection.updateTotalRecordsCount(count);\n }\n\n this.selection.selectedRowsIntersection(this.dataController.visibleRowsData);\n }\n\n if (this.emptyState?.validate && this.emptyStateTemplate) {\n this.emptyStateEnabled = this.emptyState.validate(query, cloneDeep(this.dataController.visibleRowsData));\n }\n\n if (this.afterFetchFn) {\n this.afterFetchFn(query, this.dataController.visibleRowsData);\n }\n\n // case when have removed all results from last page\n if (this.dataController.visibleRows.length === 0\n && this.paging.page > 1\n && this.paging.page > this.paging.pages\n ) {\n this.paging.goLast();\n }\n\n this.fetchComplete$.next();\n this.loading$.next(false);\n }\n\n /**\n * Will do some actions if you removed item and item was last on his own page\n *\n * Ex: if list has 3 pages and on third page you have only one item. And you just deleted this item.\n * You must go to second page, but if it was last page and you can't go back -> just reload\n *\n * @param deletedCount\n */\n private noDataPaginationUpdate(deletedCount) {\n if (!this.dataController.hasData) {\n if (this.paging.page > 1) {\n this.paging.goToPage(this.paging.page - 1 || 1);\n } else {\n this.reload();\n }\n }\n\n this.paging.records -= deletedCount;\n this.paging.updatePagination();\n\n if (this.dataController.hasData && this.selection) {\n this.selection.updateVisibleRecordsCount(this.dataController.visibleRowsCount);\n this.selection.updateTotalRecordsCount(this.paging.records);\n }\n }\n\n /**\n * Temporary solution, will do auto subscribe if was returned Observable.\n *\n * TODO: MOVE THIS PEACE OF CODE TO SPECIAL PLACE\n *\n * @param restoreClickCallback\n * @param row\n */\n private restoreClick(restoreClickCallback, row) {\n const restoreClickResult = restoreClickCallback(row);\n\n if (restoreClickResult instanceof Observable) {\n restoreClickResult\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe({\n next: () => this.reload(),\n error: () => { },\n });\n }\n }\n\n private _updateSortingColumns(): void {\n this.sorting.clearSortableColumns();\n this.columns.columns\n .filter((column) => column.sortable && column.visible)\n .forEach((column) => {\n this.sorting.addSortableColumn(column);\n });\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { FsPersistanceStore, FsStore } from '@firestitch/store';\r\nimport { FsListPersitance } from '../interfaces';\r\n\r\nconst FILTER_STORE_KEY = 'fs-list-persist';\r\n\r\n@Injectable()\r\nexport class PersistanceController extends FsPersistanceStore<FsListPersitance> {\r\n\r\n protected STORE_KEY = FILTER_STORE_KEY;\r\n\r\n constructor(\r\n _store: FsStore,\r\n _route: ActivatedRoute,\r\n ) {\r\n super(_store, _route);\r\n }\r\n\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading],[fsListHeading]' \r\n})\r\nexport class FsListHeadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-subheading],[fsListSubheading]' \r\n})\r\nexport class FsListSubheadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading-container],[fsListHeadingContainer]' \r\n})\r\nexport class FsListHeadingContainerDirective {\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-header]' })\r\nexport class FsListHeaderDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-cell]' })\r\nexport class FsListCellDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-footer]' })\r\nexport class FsListFooterDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-cell],[fs-list-group-header]'\n})\nexport class FsListGroupHeaderDirective extends FsListCellDirective {}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-footer]'\n})\nexport class FsListGroupFooterDirective extends FsListCellDirective {}\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Injectable()\r\nexport class GroupExpandNotifierService implements OnDestroy {\r\n\r\n private _expandStatusChanged$ = new Subject();\r\n private _destroy$ = new Subject();\r\n\r\n get expandStatusChange$() {\r\n return this._expandStatusChanged$.pipe(\r\n takeUntil(this._destroy$)\r\n )\r\n }\r\n public toggleExpandStatus(rowData: any) {\r\n this._expandStatusChanged$.next(rowData);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\r\n\r\n\r\n@Directive({ selector: '[fsListGroupExpandTrigger]' })\r\nexport class FsListGroupExpandTriggerDirective {\r\n\r\n @HostListener('click', ['$event'])\r\n public click(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._expandNotifier.toggleExpandStatus(this.row);\r\n }\r\n\r\n @Input()\r\n public row;\r\n\r\n constructor(private _expandNotifier: GroupExpandNotifierService) {}\r\n}\r\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n QueryList,\n TemplateRef\n} from '@angular/core';\n\n// Directives\nimport { FsListHeaderDirective } from '../header/header.directive';\nimport { FsListCellDirective } from '../cell/cell.directive';\nimport { FsListFooterDirective } from '../footer/footer.directive';\n\nimport { CellConfig } from '../../interfaces';\nimport { FsListGroupHeaderDirective } from '../group-header/group-header.directive';\nimport { FsListGroupFooterDirective } from '../group-footer/group-footer.directive';\nimport { FsListGroupExpandTriggerDirective } from '../group-expand-trigger/group-expand-trigger.directive';\nimport { ColumnAttributes } from '../../models/column-attributes';\n\n\n@Directive({\n selector: 'fs-list-column'\n})\nexport class FsListColumnDirective {\n\n // Header\n @ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeaderDirective, { static: true })\n public headerConfigs: CellConfig;\n\n // Group\n @ContentChild(FsListGroupHeaderDirective, { read: TemplateRef, static: true })\n public groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupHeaderDirective, { static: true })\n public groupHeaderConfigs: CellConfig;\n\n // Group Footer\n @ContentChild(FsListGroupFooterDirective, { read: TemplateRef, static: true })\n public groupFooterTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupFooterDirective, { static: true })\n public groupFooterConfigs: CellConfig;\n\n // Trigger\n @ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true })\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n // Cell\n @ContentChild(FsListCellDirective, { read: TemplateRef, static: true })\n public cellTemplate: TemplateRef<any>;\n\n @ContentChild(FsListCellDirective, { static: true })\n public cellConfigs: CellConfig;\n\n // Footer\n @ContentChild(FsListFooterDirective, { read: TemplateRef, static: true })\n public footerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListFooterDirective, { static: true })\n public footerConfigs: CellConfig;\n\n private readonly _columnAttributes = new ColumnAttributes();\n\n constructor() {}\n\n public get attributes(): ColumnAttributes {\n return this._columnAttributes;\n }\n\n @Input('show')\n public set visible(value: boolean) {\n this._columnAttributes.visible = value;\n }\n\n @Input()\n public set title(value: string) {\n this._columnAttributes.title = value;\n }\n\n @Input()\n public set name(value: string) {\n this._columnAttributes.name = value;\n }\n\n @Input()\n public set customize(value: boolean) {\n this._columnAttributes.customize = value;\n }\n\n @Input()\n public set sortable(value: boolean) {\n this._columnAttributes.sortable = value;\n }\n\n @Input()\n public set sortableDefault(value: boolean) {\n this._columnAttributes.sortableDefault = value;\n }\n\n @Input()\n public set direction(value: 'asc' | 'desc') {\n this._columnAttributes.direction = value;\n }\n\n @Input()\n public set align(value: string) {\n this._columnAttributes.align = value;\n }\n\n @Input()\n public set width(value: string) {\n this._columnAttributes.width = value;\n }\n\n @Input('class')\n public set className(value: string | string[]) {\n this._columnAttributes.className = value;\n }\n\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-empty-state]',\r\n})\r\nexport class FsListEmptyStateDirective {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n\r\nexport const FS_LIST_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-list.default-config');\r\nexport const FS_LIST_CONFIG = new InjectionToken<any[]>('fs-list.config');\r\n","import { Component, ViewContainerRef } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ExternalParamsController } from '@firestitch/filter';\n\nimport { Observable } from 'rxjs';\n\n\n@Component({\n selector: 'fs-list-saved-filters',\n templateUrl: './saved-filters.component.html',\n})\nexport class FsListSavedFiltersComponent {\n constructor(\n private _dialog: MatDialog,\n private _externalParams: ExternalParamsController,\n private _vcRef: ViewContainerRef,\n ) { }\n\n public get savedFiltersEnabled$(): Observable<boolean> {\n return this._externalParams.savedFiltersController.enabled$;\n }\n\n public showManageDialog(): void {\n // this._dialog.open(FsListManageSavedFiltersComponent, {\n // viewContainerRef: this._vcRef,\n // });\n }\n}\n","<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\r\n -->, saved filter\r\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\r\n</ng-container>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\nimport { SortingController } from '../../classes/sorting-controller';\r\nimport { SortingDirection } from '../../models/column.model';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: true,\r\n})\r\nexport class FsStatusComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public paging: PaginationController;\r\n @Input() public sorting: SortingController;\r\n @Input() public rows;\r\n @Input() public scrollable;\r\n\r\n @Input()\r\n @HostBinding('class.first-load')\r\n @HostBinding('class.fs-skeleton-placeholder')\r\n public firstLoad: boolean;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor(private _cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n public ngOnInit() {\r\n this.sorting.sortingChanged$\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public toggleDirection() {\r\n if (this.sorting.sortingColumn.direction === 'asc') {\r\n this.sorting.sortDirection(SortingDirection.desc);\r\n } else {\r\n this.sorting.sortDirection(SortingDirection.asc);\r\n }\r\n }\r\n\r\n public setSortableColumn(column) {\r\n if (this.sorting.sortingColumn !== column) {\r\n this.sorting.sortBy(column);\r\n }\r\n }\r\n\r\n public setLimit(limit) {\r\n this.paging.setLimit(limit);\r\n }\r\n}\r\n","<div class=\"status\">\r\n <small>\r\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\r\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\r\n </ng-container>\r\n <ng-template #emptyResults>\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><ng-container *ngIf=\"(!paging.enabled || scrollable) && paging.displayed > 0\">\r\n <ng-container *ngIf=\"!scrollable; else scrollable\">\r\n Showing\r\n <span *ngIf=\"paging.displayed == 1\">{{ paging.displayed }} result </span>\r\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\r\n </ng-container>\r\n\r\n <ng-template #scrollable>\r\n <span *ngIf=\"paging.records == 1\">{{ paging.records }} result </span>\r\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\r\n\r\n <fs-menu [hidden]=\"!paging.enabled || scrollable\" #limitsMenu>\r\n <ng-template\r\n ngFor\r\n let-limit\r\n [ngForOf]=\"paging.limits\">\r\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\r\n {{ limit }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\r\n <!-- Real sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.sortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\r\n {{ column.title }}\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- Fake sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.fakeSortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n {{ column.title }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <ng-template #sortedBy>\r\n <ng-container *ngIf=\"sorting.sortingColumn\">\r\n sorted by\r\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\r\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\r\n </a>,\r\n </ng-template>\r\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\r\n --></ng-container><!--\r\n --></ng-template>\r\n </small> \r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\nimport { random } from 'lodash-es';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsListLoaderComponent implements OnInit, OnChanges {\r\n\r\n public placeholderWidths = [[], [], []];\r\n public widths = [];\r\n\r\n @Input() public columns;\r\n\r\n @Input()\r\n public loaderLines: number;\r\n\r\n public cols = [];\r\n public rows = [];\r\n\r\n public ngOnInit() {\r\n\r\n this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;\r\n const length = this.cols.length;\r\n for (let w = length; w >= 0; w--) {\r\n this.widths[w] = w ? random(15, 100 / length, false) : 0;\r\n }\r\n\r\n for (let r = 0; r < 3; r++) {\r\n for (let c = 0; c < length; c++) {\r\n this.placeholderWidths[r].push(random(50, 90));\r\n }\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.loaderLines) {\r\n this.rows = new Array(this.loaderLines);\r\n }\r\n }\r\n}\r\n","<table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of rows; let index=index\">\r\n <td *ngFor=\"let col of cols; let column = index\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { merge, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\n\r\n@Component({\r\n selector: 'fs-list-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsPaginationComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public pagination: PaginationController;\r\n @Input() public rows;\r\n\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n public ngOnInit(): void {\r\n merge(\r\n this.pagination.pageChanged$,\r\n this.pagination.pages$,\r\n )\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n","import { AfterViewInit, Directive, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[fsListContentInit]'\n})\nexport class FsListContentInitDirective implements AfterViewInit {\n\n @Input('fsListContentInit')\n public contentInitCallback: Function;\n\n constructor() {}\n\n public ngAfterViewInit() {\n if (this.contentInitCallback) {\n this.contentInitCallback();\n }\n }\n}\n","import { Location } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FilterComponent } from '@firestitch/filter';\nimport { FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, mergeWith } from 'lodash-es';\n\nimport { List } from '../../classes/list-controller';\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';\nimport { FsListColumnDirective } from '../../directives/column/column.directive';\nimport { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';\nimport { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';\nimport {\n FsListAbstractRow,\n FsListAction,\n FsListConfig, FsListPersitance, FsListSelectionConfig,\n FsListTrackByFn,\n FsListTrackByTargetRowFn,\n} from '../../interfaces';\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\nimport { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';\n\n\n@Component({\n selector: 'fs-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n GroupExpandNotifierService,\n PersistanceController,\n ReorderController,\n ],\n})\nexport class FsListComponent implements OnInit, OnDestroy, AfterContentInit {\n\n @HostBinding('class.fs-list') public classFsList = true;\n\n @HostBinding('class.fs-list-no-highlight')\n public noRowsHighlight: boolean;\n\n @Input('config')\n public set config(config: FsListConfig) {\n this._initWithConfig(config);\n }\n\n @Input()\n public loaderLines = 3;\n\n @Output()\n public filtersReady = new EventEmitter<void>();\n\n @ContentChild(FsListHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeadingContainerDirective, { read: TemplateRef })\n public headingContainerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListSubheadingDirective, { read: TemplateRef })\n public subheadingTemplate: TemplateRef<any>;\n\n public list: List;\n public keywordVisible = true;\n\n // Event will fired if action remove: true will clicked\n public rowRemoved = new EventEmitter();\n public firstLoad = true;\n\n private _listColumnDirectives: QueryList<FsListColumnDirective>;\n private _filterRef: FilterComponent;\n private _filterParamsReady = false;\n private _inDialog = !!this._dialogRef || !!this._drawerRef;\n\n private _destroy = new Subject();\n\n @ViewChild(FilterComponent)\n public set filterReference(component) {\n this._filterRef = component;\n this.list.actions.setFilterRef(component);\n\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Set columns to config\n * Create Column Model instances\n */\n @ContentChildren(FsListColumnDirective)\n public set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>) {\n this._listColumnDirectives = listColumnDirectives;\n if (this.list) {\n this.list.tranformTemplatesToColumns(listColumnDirectives);\n }\n }\n\n @ContentChild(FsListEmptyStateDirective, { read: TemplateRef })\n private set _emptyStateTemplate(template: TemplateRef<any>) {\n if (this.list) {\n this.list.emptyStateTemplate = template;\n }\n }\n\n constructor(\n public reorderController: ReorderController,\n @Optional() @Inject(FS_LIST_DEFAULT_CONFIG) private _defaultOptions: FsListConfig,\n @Optional() private _scroll: FsScrollService,\n @Optional() private _dialogRef: MatDialogRef<any>,\n @Optional() private _drawerRef: DrawerRef<any>,\n private _el: ElementRef,\n private _selectionDialog: SelectionDialog,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _groupExpandNotifier: GroupExpandNotifierService,\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _location: Location,\n ) { }\n\n /**\n * Return reference for filter\n */\n public get filterRef(): FilterComponent {\n return this._filterRef;\n }\n\n public set groupEnabled(value: boolean) {\n this.list.groupEnabled(value);\n }\n\n public get groupEnabled() {\n return this.list.dataController.groupEnabled;\n }\n\n public get hasFilterKeyword(): boolean {\n return this.list.filterInput && this.keywordVisible;\n }\n\n public get hasStatus() {\n return this.list.status &&\n (this.list.sorting.isDefined || this.list.paging.enabled) &&\n (\n !this.reorderController.enabled ||\n (this.reorderController.enabled && this.reorderController.status)\n ) &&\n ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);\n }\n\n public get paginatorVisible(): boolean {\n return this.list.paging.enabled\n && !this.firstLoad\n && !this.list.scrollable\n && !this.list.emptyStateEnabled\n && this.list.dataController.visibleRowsCount > 0\n && this.list.paging.pages > 1;\n }\n\n public get filtersQuery(): Record<string, unknown> {\n return this.list.filtersQuery;\n }\n\n public ngAfterContentInit(): void {\n if (this.list.afterInit) {\n this.list.afterInit(this);\n }\n }\n\n public ngOnInit() {\n this._subscribeToRemoveRow();\n this._subscribeToGroupExpandStatusChange();\n }\n\n public ngOnDestroy() {\n if (this.list) {\n this.list.destroy();\n }\n\n this._destroy.next();\n this._destroy.complete();\n }\n\n public nextPage() {\n this.list.paging.goNext();\n }\n\n public prevPage() {\n this.list.paging.goPrev();\n }\n\n public firstPage() {\n this.list.paging.goFirst();\n }\n\n public lastPage() {\n this.list.paging.goLast();\n }\n\n public reload() {\n this.list.reload();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n return this.list.getData(trackBy);\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.list.hasData(trackBy);\n }\n\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.updateData(rows, trackBy);\n }\n\n public replaceRow(\n row: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.replaceData(row, trackBy);\n }\n\n public updateSelectionConfig(config: FsListSelectionConfig) {\n this.list.selection.updateConfig(config);\n }\n\n public resetSelectionActions() {\n this.list.selection.resetActions();\n }\n\n public enableSelection() {\n this.list.selection.enableSelection();\n }\n\n public disableSelection() {\n this.list.selection.disableSelection();\n }\n\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n return this.list.dataController.removeData(data);\n }\n\n public setHeading(heading: string) {\n this.list.heading = heading;\n }\n\n public setSubheading(subheading: string) {\n this.list.subheading = subheading;\n }\n\n public reorderStart() {\n this.reorderController.enableReorder();\n }\n\n public reorderFinish() {\n this.reorderController.disableReorder();\n }\n\n public setActions(actions: FsListAction[]) {\n if (actions) {\n this.list.actions.clearActions();\n this.list.actions.setActions(actions);\n }\n }\n\n public filterReady() {\n this.list.filtersReady$.next();\n this._filterParamsReady = true;\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Update visibility for specific column\n */\n public columnVisibility(name: string, show: boolean) {\n this.columnsVisibility([{ name, show }]);\n }\n\n /**\n * Update visibility for list of specific columns\n */\n public columnsVisibility(columns: { name: string; show: boolean }[]) {\n this.list.columns.updateVisibilityForCols(columns);\n }\n\n private _emitFiltersReadyEvent(): void {\n if (!!this.filterRef && this._filterParamsReady) {\n this.filtersReady.emit();\n\n this.keywordVisible = this.filterRef.hasKeyword;\n this._cdRef.markForCheck();\n }\n }\n\n /**\n * Initialize config for list\n *\n * @param config\n */\n private _initWithConfig(config: FsListConfig) {\n if (this.list) {\n this.list.destroy();\n }\n\n const defaultOpts = this._defaultOptions\n ? cloneDeep(this._defaultOptions)\n : {};\n const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);\n\n if (listConfig.persist !== false) {\n this._restorePersistance(listConfig.persist);\n }\n\n this._updateCustomizeAction(listConfig.actions);\n\n this.list = new List(\n this._el,\n listConfig,\n this._scroll,\n this._selectionDialog,\n this._router,\n this._route,\n this._persistance,\n this._inDialog,\n );\n\n this.noRowsHighlight = !this.list.rowHighlight;\n\n this._waitFirstLoad();\n\n this.reorderController.initWithConfig(\n config.reorder,\n this.list.dataController,\n this.list.actions,\n this.list.selection,\n );\n\n if (this._listColumnDirectives) {\n this.list.tranformTemplatesToColumns(this._listColumnDirectives);\n }\n this._listenSortingChange();\n }\n\n /**\n * Find action with customize flag and re-declare click function for CustomizeColsDialog\n *\n * @param actions\n */\n private _updateCustomizeAction(actions: FsListAction[]) {\n const customizeAction = actions?.find((action) => action.customize);\n\n if (customizeAction) {\n const actionClickFn = customizeAction.click;\n\n customizeAction.click = () => {\n if (actionClickFn) {\n actionClickFn(null);\n }\n\n this._dialog.open(CustomizeColsDialogComponent, {\n data: {\n columns: this.list.columns.columnsForDialog,\n changeFn: this.list.columns.changeFn,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((data) => {\n if (data) {\n this.list.columns.updateVisibilityForCols(data);\n\n this._cdRef.markForCheck();\n }\n });\n };\n }\n }\n\n /**\n * Update sorting in filter\n */\n private _listenSortingChange() {\n this.list.sorting\n .sortingChanged$\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((sort) => {\n this._filterRef.updateSort(sort);\n });\n }\n\n private _subscribeToRemoveRow() {\n this.rowRemoved\n .pipe(takeUntil(this._destroy))\n .subscribe((row) => {\n this.list.dataController.removeData(row);\n });\n }\n\n private _subscribeToGroupExpandStatusChange() {\n if (this.list.dataController.hasGroups) {\n this._groupExpandNotifier.expandStatusChange$\n .pipe(\n takeUntil(this._destroy),\n )\n .subscribe((row) => {\n this.list.dataController.toggleRowGroup(row);\n });\n }\n }\n\n private _waitFirstLoad() {\n this.list.loading$\n .pipe(\n skip(1),\n filter((value) => !value),\n take(1),\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe(() => {\n this.firstLoad = false;\n this._cdRef.markForCheck();\n });\n }\n\n private _configMergeCustomizer(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue;\n }\n }\n\n private _restorePersistance(persistConfig: FsListPersitance) {\n const namespace = getNormalizedPath(this._location);\n this._persistance.setConfig(persistConfig, namespace, this._inDialog);\n }\n}\n","<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-line': list.style ?? 'line' === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport {\n ExternalParamsController,\n IFilterSavedFilter,\n SavedFiltersController,\n} from '@firestitch/filter';\n\nimport { map, tap } from 'rxjs/operators';\n\nimport { ReorderPosition } from '../../classes/reorder-controller';\nimport { FsListConfig } from '../../interfaces/listconfig.interface';\n\n\n@Component({\n templateUrl: './manage-saved-filters.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsListManageSavedFiltersComponent {\n\n public config: FsListConfig;\n\n private _reorderReady = true;\n\n constructor(\n private _externalParams: ExternalParamsController,\n ) {\n this._initList();\n }\n\n private get savedFiltersController(): SavedFiltersController {\n return this._externalParams.savedFiltersController;\n }\n\n private _initList(): void {\n this.config = {\n status: false,\n filterInput: false,\n queryParam: false,\n persist: false,\n paging: false,\n reorder: {\n position: ReorderPosition.Left,\n moveDrop: () => {\n return this._reorderReady;\n },\n done: (reorderData) => {\n this._reorderReady = false;\n\n const filterData = reorderData.map((data) => data.data);\n this.savedFiltersController.order(filterData)\n .pipe(\n tap(() => {\n this._reorderReady = true;\n }),\n )\n .subscribe(() => { });\n },\n },\n rowActions: [\n {\n label: 'Apply',\n click: (filter: IFilterSavedFilter) => {\n this._externalParams.setActiveSavedFilter(filter);\n },\n },\n {\n label: 'Delete',\n remove: {\n title: 'Confirm',\n template: 'Are you sure you want to delete this filter?',\n },\n click: (savedFilter) => {\n return this.savedFiltersController.delete(savedFilter);\n },\n },\n ],\n fetch: (query) => {\n return this.savedFiltersController.load()\n .pipe(\n map((response) => {\n return { data: response };\n }),\n );\n },\n\n };\n }\n}\n","<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fs-list-content]',\n})\nexport class FsListContentDirective { }\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterModule } from '@firestitch/filter';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPromptModule } from '@firestitch/prompt';\nimport { FsScrollModule } from '@firestitch/scroll';\n\nimport { merge } from 'lodash-es';\n\nimport { FsBodyComponent } from './components/body/body.component';\nimport { FsRowActionsComponent } from './components/body/row/actions/actions.component';\nimport { FsCellComponent } from './components/body/row/cell/cell.component';\nimport { FsRowInlineActionComponent } from './components/body/row/inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from './components/body/row/menu-action/menu-action.component';\nimport { FsRowComponent } from './components/body/row/row.component';\nimport { CustomizeColsDialogComponent } from './components/customize-cols/customize-cols.component';\nimport { FsFooterCellComponent } from './components/footer/footer-row/footer-cell/footer-cell.component';\nimport { FsFooterRowComponent } from './components/footer/footer-row/footer-row.component';\nimport { FsFooterComponent } from './components/footer/footer.component';\nimport { FsHeadCellComponent } from './components/head/head-cell/head-cell.component';\nimport { FsHeadComponent } from './components/head/head.component';\nimport { FsListComponent } from './components/list/list.component';\nimport { FsListLoaderComponent } from './components/loader/loader.component';\nimport { FsListManageSavedFiltersComponent } from './components/manage-saved-filters/manage-saved-filters.component';\nimport { FsPaginationComponent } from './components/pagination/pagination.component';\nimport { FsListSavedFiltersComponent } from './components/saved-filters/saved-filters.component';\nimport { FsStatusComponent } from './components/status/status.component';\nimport {\n FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective,\n} from './directives';\nimport { FsListCellDirective } from './directives/cell/cell.directive';\nimport { FsListColumnDirective } from './directives/column/column.directive';\nimport { FsListContentInitDirective } from './directives/content-init/content-init.directive';\nimport { FsListContentDirective } from './directives/content/content.directive';\nimport { FsListDraggableListDirective } from './directives/draggable-list/draggable-list.directive';\nimport { FsListDraggableRowDirective } from './directives/draggable-row/draggable-row.directive';\nimport { FsListEmptyStateDirective } from './directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from './directives/footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from './directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from './directives/group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from './directives/group-header/group-header.directive';\nimport { FsListHeaderDirective } from './directives/header/header.directive';\nimport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './fs-list.providers';\nimport { FsListConfig } from './interfaces';\nimport { ActionLabelPipe } from './pipes';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatRippleModule,\n FsFilterModule,\n FsMenuModule,\n FsScrollModule,\n FsPromptModule,\n MatDialogModule,\n MatTooltipModule,\n FsFileModule,\n FsCommonModule,\n ],\n declarations: [\n // Components\n FsListComponent,\n FsRowComponent,\n FsRowActionsComponent,\n FsRowInlineActionComponent,\n FsRowMenuActionComponent,\n FsCellComponent,\n FsFooterRowComponent,\n FsFooterCellComponent,\n FsStatusComponent,\n FsListLoaderComponent,\n FsListSavedFiltersComponent,\n FsListManageSavedFiltersComponent,\n\n // Internal Components\n FsHeadComponent,\n FsHeadCellComponent,\n FsBodyComponent,\n FsFooterComponent,\n FsPaginationComponent,\n\n // Directives\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListDraggableListDirective,\n FsListDraggableRowDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListContentInitDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n\n // Dialog\n CustomizeColsDialogComponent,\n\n //Pipes\n ActionLabelPipe,\n ],\n exports: [\n FsListComponent,\n FsRowComponent,\n FsCellComponent,\n FsListLoaderComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n ],\n})\nexport class FsListModule {\n public static forRoot(config: FsListConfig = {}): ModuleWithProviders<FsListModule> {\n return {\n ngModule: FsListModule,\n providers: [\n { provide: FS_LIST_CONFIG, useValue: config },\n {\n provide: FS_LIST_DEFAULT_CONFIG,\n useFactory: fsListConfigFactory,\n deps: [FS_LIST_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function fsListConfigFactory(config: FsListConfig) {\n return merge({\n noResults: {\n message: 'No Results Found',\n },\n } as FsListConfig, config);\n}\n","/*\n * Public API Surface of fs-menu\n */\n\n// Modules\nexport { FsListModule } from './app/fs-list.module';\n\n// Providers\nexport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './app/fs-list.providers';\n\n// Components\nexport { FsBodyComponent } from './app/components/body/body.component';\nexport { FsCellComponent } from './app/components/body/row/cell/cell.component';\nexport { FsRowComponent } from './app/components/body/row/row.component';\nexport {\n FsFooterCellComponent,\n} from './app/components/footer/footer-row/footer-cell/footer-cell.component';\nexport { FsFooterRowComponent } from './app/components/footer/footer-row/footer-row.component';\nexport { FsFooterComponent } from './app/components/footer/footer.component';\nexport { FsHeadCellComponent } from './app/components/head/head-cell/head-cell.component';\nexport { FsHeadComponent } from './app/components/head/head.component';\nexport { FsListComponent } from './app/components/list/list.component';\nexport { FsListLoaderComponent } from './app/components/loader/loader.component';\nexport { FsPaginationComponent } from './app/components/pagination/pagination.component';\nexport { FsStatusComponent } from './app/components/status/status.component';\n\n// Directives\nexport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from './app/directives';\nexport { FsListCellDirective } from './app/directives/cell/cell.directive';\nexport { FsListColumnDirective } from './app/directives/column/column.directive';\nexport { FsListContentDirective } from './app/directives/content/content.directive';\nexport { FsListEmptyStateDirective } from './app/directives/empty-state/empty-state.directive';\nexport { FsListFooterDirective } from './app/directives/footer/footer.directive';\nexport { FsListGroupExpandTriggerDirective } from './app/directives/group-expand-trigger/group-expand-trigger.directive';\nexport { FsListGroupFooterDirective } from './app/directives/group-footer/group-footer.directive';\nexport { FsListGroupHeaderDirective } from './app/directives/group-header/group-header.directive';\nexport { FsListHeaderDirective } from './app/directives/header/header.directive';\n\n// Models\nexport { List } from './app/classes/list-controller';\nexport { PaginationController } from './app/classes/pagination-controller';\nexport { ReorderController, ReorderPosition } from './app/classes/reorder-controller';\nexport { SelectionChangeType, SelectionController } from './app/classes/selection-controller';\nexport { SortingController } from './app/classes/sorting-controller';\nexport { Column, SortingDirection } from './app/models/column.model';\nexport { RowAction } from './app/models/row-action.model';\nexport { StyleConfig } from './app/models/styleConfig.model';\n\n// Interfaces\nexport { CellConfig } from './app/interfaces/cellconfig.interface';\nexport {\n FsListAbstractRow, FsListAction, FsListActionSelected, FsListCellConfig, FsListColumn, FsListColumnChangeFn, FsListColumnConfig, FsListColumnLoadFn, FsListConfig, FsListEmptyStateConfig, FsListFetchFn, FsListFetchOptions, FsListFetchSubscription, FsListFooterConfig, FsListGroupConfig, FsListHeaderConfig,\n FsListNoResultsConfig,\n FsListReorderConfig, FsListReorderData, FsListReorderDoneCallback, FsListReorderMoveInGroupCallback, FsListReorderMovedCallback, FsListRestoreConfig, FsListRowAction, FsListRowActionFile, FsListRowActionFileFn, FsListRowActionGroup, FsListRowActionLink,\n FsListRowActionLinkFn, FsListRowClassOptions, FsListScrollableConfig,\n FsListSelectionConfig,\n FsListSortsConfig, FsListStateValidationFn, FsListTrackByFn,\n FsListTrackByTargetRowFn,\n FsPaging,\n} from './app/interfaces/listconfig.interface';\nexport { QueryOffsetStrategy, QueryPageStrategy } from './app/interfaces/pagination.interface';\nexport { SortingChangeEvent } from './app/interfaces/sorting-change-event.interface';\n\n// Enums\nexport { ActionType } from './app/enums/button-type.enum';\nexport { PaginationStrategy } from './app/enums/pagination-strategy.enum';\nexport { RowType } from './app/enums/row-type.enum';\nexport { FsListState } from './app/enums/state.enum';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ReorderPosition","BehaviorSubject","Subject","Observable","takeUntil","i0","Injectable","ActionType","i1.ReorderController","Directive","Input","i1","Component","ChangeDetectionStrategy","HostBinding","EventEmitter","i2","i3","i4","i5","Output","Pipe","i5.ActionLabelPipe","take","i2.FsRowInlineActionComponent","i4.FsRowMenuActionComponent","i6","i7.ActionLabelPipe","i1.FsListDraggableListDirective","i3.FsCellComponent","i4.FsRowActionsComponent","ViewChildren","i2.FsListDraggableListDirective","TemplateRef","ViewContainerRef","i1.FsRowComponent","i3.FsListDraggableRowDirective","ViewChild","ContentChild","MAT_DIALOG_DATA","Inject","i1.FsFooterCellComponent","i1.FsFooterRowComponent","SelectionChangeType","_get","filter","i2.FsHeadCellComponent","isString","SortingDirection","isObject","isBoolean","FsListState","tap","skip","merge","isNumber","RowType","isFunction","PaginationStrategy","distinctUntilChanged","map","shareReplay","from","cloneDeep","ItemType","combineLatest","debounceTime","switchMap","mapTo","of","catchError","EMPTY","FsPersistanceStore","i1.GroupExpandNotifierService","HostListener","ContentChildren","InjectionToken","i1.FsListSavedFiltersComponent","random","mergeWith","getNormalizedPath","i6.GroupExpandNotifierService","i7","i8.PersistanceController","i9","FilterComponent","i10","i11.FsStatusComponent","i12.FsHeadComponent","i13.FsBodyComponent","i14.FsFooterComponent","i15.FsListLoaderComponent","i16.FsPaginationComponent","i17.FsListContentInitDirective","i18.FsListDraggableListDirective","i19.FsListFooterDirective","Optional","i2.FsListComponent","i5.FsListColumnDirective","i6.FsListCellDirective","CommonModule","RouterModule","MatButtonModule","MatIconModule","MatMenuModule","MatProgressSpinnerModule","MatCheckboxModule","MatRippleModule","FsFilterModule","FsMenuModule","FsScrollModule","FsPromptModule","MatDialogModule","MatTooltipModule","FsFileModule","FsCommonModule","NgModule"],"mappings":"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"}