@obliczeniowo/elementary
Version:
Library made in Angular version 20
1 lines • 17 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-dayparts-statistics.mjs","sources":["../../../../projects/components/dayparts-statistics/class/dayparts-statistics.class.ts","../../../../projects/components/dayparts-statistics/components/dayparts-statistics/dayparts-statistics.component.ts","../../../../projects/components/dayparts-statistics/components/dayparts-statistics/dayparts-statistics.component.html","../../../../projects/components/dayparts-statistics/dayparts-statistics.module.ts","../../../../projects/components/dayparts-statistics/obliczeniowo-elementary-dayparts-statistics.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\n\nimport { Point2D } from '@obliczeniowo/elementary/classes';\nimport { DrawingContextInterface, TextAlign } from '@obliczeniowo/elementary/drawing';\nimport { keys } from '@obliczeniowo/elementary/objects';\n\nimport { DaypartsStatistic, HourData } from '../types/dayparts.types';\n\nexport class DaypartsStatistics {\n protected max = 0;\n\n protected fontSize = 12;\n protected ray = 12;\n protected textOffset = 100;\n\n constructor(\n protected dc: DrawingContextInterface,\n protected statistics: DaypartsStatistic,\n protected datePipe: DatePipe,\n protected events: {\n clicked: (value: HourData) => void,\n mouseover?: (value: HourData) => void\n }\n ) {\n this.setMax();\n }\n\n getWidth() {\n return this.textOffset + 2 * this.ray * 24;\n }\n\n getHeight() {\n return this.ray * 2 * 7 + this.fontSize * 2;\n }\n\n updateMax(max: number) {\n this.max = max;\n }\n\n setStatistics(statistics: DaypartsStatistic) {\n this.statistics = statistics;\n this.setMax();\n this.draw();\n }\n\n draw(dc: DrawingContextInterface = this.dc) {\n const { statistics, ray, fontSize, textOffset } = this;\n const offset = new Point2D(textOffset, ray);\n dc.clear();\n keys(statistics).forEach((day: any) => {\n keys(statistics[day]).forEach(\n (hour: any) => {\n const hourData = statistics[day][hour];\n const start = new Point2D(2 * ray * hour, 2 * ray * day);\n dc\n .group(\n {\n svgOnly: {\n events: {\n click: () => this.events.clicked(hourData),\n mouseover: () => this.events.mouseover && this.events.mouseover(hourData)\n }\n }\n }\n )\n .drawRect(start.x + textOffset - ray, start.y, 2 * ray, 2 * ray, 0, 'none', '#ffffff', {\n svgOnly: {\n attributes: { opacity: 0.1 },\n }\n })\n .drawCircle(\n start.add(offset),\n ray * hourData.value / this.max,\n 0,\n '#000000',\n '#00aad4',\n {\n svgOnly: {\n classes: ['obl-dayparts-statistics', 'scale-up'],\n\n },\n style: {\n 'transform-origin': `${start.x + offset.x}px ${start.y + offset.y}px`\n }\n }\n )\n .endGroup();\n }\n )\n })\n\n const date = new Date();\n date.setTime(100);\n dc.setFontSize(fontSize);\n dc.setTextAlign(TextAlign.LEFT)\n for (let day = 0; day < 7; day++) {\n date.setTime((day + 4) * 24 * 3600 * 1000);\n dc.drawText(this.datePipe.transform(date, 'EEEE') || '', new Point2D(10, ray + fontSize * 0.3 + day * 2 * ray), 'var(--default-text-color)', 0)\n }\n\n const hoursOffset = new Point2D(offset.x, 7 * 2 * ray + 1.5 * fontSize);\n dc.setTextAlign(TextAlign.CENTER)\n for (let hour = 0; hour < 24; hour++) {\n dc.drawText(hour < 10 ? '0' + hour : hour.toString(), hoursOffset.add(new Point2D(hour * 2 * ray, 0)), 'var(--default-text-color)', 0)\n }\n }\n\n protected setMax() {\n const { statistics } = this;\n this.max = 0;\n keys(statistics).forEach((key: any) => {\n const value = statistics[key];\n keys(value).forEach((key: any) => {\n const count = value[key].value;\n if (this.max < count) {\n this.max = count;\n }\n })\n })\n }\n}","import { Component, ElementRef, Input, Output, ViewChild, EventEmitter, Renderer2, input, effect } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\nimport { DrawingContextInterface, DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\nimport { keys } from '@obliczeniowo/elementary/objects';\n\nimport { DaypartsStatistics } from '../../class/dayparts-statistics.class';\nimport { DaypartsData, DaypartsStatistic, HourData } from '../../types/dayparts.types';\n\n@Component({\n selector: 'obl-dayparts-statistics',\n templateUrl: './dayparts-statistics.component.html',\n styleUrl: './dayparts-statistics.component.scss',\n standalone: false\n})\nexport class DaypartsStatisticsComponent {\n /**\n * Do not use this one together with statistics\n */\n data = input<DaypartsData[]>([]);\n\n /**\n * Under DaypartsData you can put any kind of key: value fields and now here you can specify field\n * name to make it representable on diagram\n */\n valueKey = input<string>();\n\n /**\n * Do not use this one together with data\n */\n @Input() set statistics(statistics: DaypartsStatistic) {\n this._statistics = statistics;\n this._daypartsStatistics?.setStatistics(statistics);\n }\n\n translations = input<{ [en: string]: string }>({\n value: 'Value'\n });\n\n @Output() clicked = new EventEmitter<any>();\n\n @ViewChild('svg') svg!: ElementRef<SVGSVGElement>;\n\n protected dc!: DrawingContextInterface;\n\n protected _statistics: DaypartsStatistic = {};\n\n protected max = 0;\n\n protected _daypartsStatistics?: DaypartsStatistics;\n\n protected current?: HourData;\n\n constructor(protected datePipe: DatePipe, protected renderer: Renderer2) {\n effect(() => {\n if (this.data().length) {\n this.transform();\n }\n })\n\n effect(() => {\n this.setMax();\n this.draw();\n })\n }\n\n ngAfterViewInit(): void {\n this.dc = new DrawingSvgInterface(this.svg.nativeElement, this.renderer);\n setTimeout(() => this.draw());\n }\n\n protected draw() {\n if (this.dc) {\n if (!this._daypartsStatistics) {\n this._daypartsStatistics = new DaypartsStatistics(\n this.dc,\n this._statistics,\n this.datePipe,\n {\n clicked: (value: HourData) => this.clicked.emit(value),\n mouseover: (value: HourData) => {\n this.current = value;\n }\n }\n );\n }\n this._daypartsStatistics?.setStatistics(this._statistics);\n }\n }\n\n protected transform() {\n this._statistics = {};\n const { _statistics: statistics } = this;\n this.data().forEach(item => {\n const hours = item.date.getHours();\n const day = item.date.getDay();\n const data = statistics[day];\n const hoursObj = () => ({\n data: [item],\n value: 1\n })\n if (data) {\n const hour = data[hours];\n if (hour) {\n hour.value++;\n hour.data.push(item);\n } else {\n data[hours] = hoursObj();\n }\n } else {\n statistics[day] = {\n [hours]: hoursObj()\n }\n }\n })\n\n this.setMax();\n\n this.draw();\n }\n\n protected setMax() {\n const { _statistics: statistics } = this;\n let max = 0;\n const valueKey = this.valueKey();\n if (valueKey) {\n keys(statistics).forEach((key: any) => {\n const value = statistics[key];\n keys(value).forEach((key: any) => {\n const data = value[key].data;\n const v = (valueKey && data?.[0][valueKey] &&\n (data.reduce((p, c) => p += c[valueKey], 0) / data.length)) ?? (data?.length || 0);\n value[key].value = v;\n max = max < v ? v : max;\n })\n })\n if (max === 0) {\n max = 1;\n }\n this.max = max;\n\n this._daypartsStatistics?.updateMax(max);\n }\n }\n}\n","<svg\n [attr.width]=\"_daypartsStatistics?.getWidth() || 0\"\n [attr.height]=\"_daypartsStatistics?.getHeight() || 0\"\n #svg\n></svg>\n<div class=\"current\">\n @if (current) {\n {{ translations().value }}: {{ current.value }}\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { DaypartsStatisticsComponent } from './components/dayparts-statistics/dayparts-statistics.component';\n\n@NgModule({\n declarations: [\n DaypartsStatisticsComponent\n ],\n providers: [\n DatePipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n DaypartsStatisticsComponent\n ]\n})\nexport class DaypartsStatisticsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAQa,kBAAkB,CAAA;AAQjB,IAAA,EAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;IAVF,GAAG,GAAG,CAAC;IAEP,QAAQ,GAAG,EAAE;IACb,GAAG,GAAG,EAAE;IACR,UAAU,GAAG,GAAG;AAE1B,IAAA,WAAA,CACY,EAA2B,EAC3B,UAA6B,EAC7B,QAAkB,EAClB,MAGT,EAAA;QANS,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAM,CAAA,MAAA,GAAN,MAAM;QAKhB,IAAI,CAAC,MAAM,EAAE;;IAGf,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE;;IAG5C,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;;AAG7C,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;;AAGhB,IAAA,aAAa,CAAC,UAA6B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;QAC5B,IAAI,CAAC,MAAM,EAAE;QACb,IAAI,CAAC,IAAI,EAAE;;AAGb,IAAA,IAAI,CAAC,EAAA,GAA8B,IAAI,CAAC,EAAE,EAAA;QACxC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;QACtD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;QAC3C,EAAE,CAAC,KAAK,EAAE;QACV,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAC3B,CAAC,IAAS,KAAI;gBACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACtC,gBAAA,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;gBACxD;AACG,qBAAA,KAAK,CACJ;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE;4BACN,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC1C,4BAAA,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ;AACzE;AACF;iBACF;qBAEF,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;AACrF,oBAAA,OAAO,EAAE;AACP,wBAAA,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7B;iBACF;qBACA,UAAU,CACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EACjB,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAC/B,CAAC,EACD,SAAS,EACT,SAAS,EACT;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,UAAU,CAAC;AAEjD,qBAAA;AACD,oBAAA,KAAK,EAAE;AACL,wBAAA,kBAAkB,EAAE,CAAG,EAAA,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA,GAAA,EAAM,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAI,EAAA;AACtE;iBACF;AAEF,qBAAA,QAAQ,EAAE;AACf,aAAC,CACF;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACjB,QAAA,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxB,QAAA,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,QAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,YAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAC;;AAGjJ,QAAA,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvE,QAAA,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;AACjC,QAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;AACpC,YAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAC;;;IAIhI,MAAM,GAAA;AACd,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACpC,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;AAC9B,gBAAA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE;AACpB,oBAAA,IAAI,CAAC,GAAG,GAAG,KAAK;;AAEpB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEL;;MCzGY,2BAA2B,CAAA;AAsChB,IAAA,QAAA;AAA8B,IAAA,QAAA;AArCpD;;AAEG;AACH,IAAA,IAAI,GAAG,KAAK,CAAiB,EAAE,CAAC;AAEhC;;;AAGG;IACH,QAAQ,GAAG,KAAK,EAAU;AAE1B;;AAEG;IACH,IAAa,UAAU,CAAC,UAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,UAAU,CAAC;;IAGrD,YAAY,GAAG,KAAK,CAA2B;AAC7C,QAAA,KAAK,EAAE;AACR,KAAA,CAAC;AAEQ,IAAA,OAAO,GAAG,IAAI,YAAY,EAAO;AAEzB,IAAA,GAAG;AAEX,IAAA,EAAE;IAEF,WAAW,GAAsB,EAAE;IAEnC,GAAG,GAAG,CAAC;AAEP,IAAA,mBAAmB;AAEnB,IAAA,OAAO;IAEjB,WAAsB,CAAA,QAAkB,EAAY,QAAmB,EAAA;QAAjD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC1D,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxE,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;IAGrB,IAAI,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAC/C,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb;AACE,oBAAA,OAAO,EAAE,CAAC,KAAe,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACtD,oBAAA,SAAS,EAAE,CAAC,KAAe,KAAI;AAC7B,wBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAEvB,iBAAA,CACF;;YAEH,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;;;IAInD,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;QACxC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC;AAC5B,YAAA,MAAM,QAAQ,GAAG,OAAO;gBACtB,IAAI,EAAE,CAAC,IAAI,CAAC;AACZ,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;YACF,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxB,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,EAAE;AACZ,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;qBACf;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE;;;iBAErB;gBACL,UAAU,CAAC,GAAG,CAAC,GAAG;AAChB,oBAAA,CAAC,KAAK,GAAG,QAAQ;iBAClB;;AAEL,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;QAEb,IAAI,CAAC,IAAI,EAAE;;IAGH,MAAM,GAAA;AACd,QAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;QACxC,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACpC,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;oBAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;AAC5B,oBAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;AACpF,oBAAA,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;AACpB,oBAAA,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;AACzB,iBAAC,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;gBACb,GAAG,GAAG,CAAC;;AAET,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AAEd,YAAA,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC;;;uGA9HjC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,wuBCfxC,2PAUA,EAAA,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA,CAAA;;2FDKa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,2PAAA,EAAA,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA;qGAiBN,UAAU,EAAA,CAAA;sBAAtB;gBASS,OAAO,EAAA,CAAA;sBAAhB;gBAEiB,GAAG,EAAA,CAAA;sBAApB,SAAS;uBAAC,KAAK;;;MEvBL,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAZjC,YAAA,EAAA,CAAA,2BAA2B,CAM3B,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,2BAA2B,CAAA,EAAA,CAAA;AAGlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAVxB,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAEC,YAAY,CAAA,EAAA,CAAA;;2FAMH,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}