@tetacom/svg-charts 1.4.13 → 1.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/chart/chart-container/series/linear-series-base.mjs +1 -1
- package/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +3 -3
- package/fesm2015/tetacom-svg-charts.mjs +2 -2
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +2 -2
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tetacom-svg-charts.mjs","sources":["../../src/chart/model/enum/zoom-type.ts","../../src/chart/model/chart-bounds.ts","../../src/chart/model/enum/tooltip-tracking.ts","../../src/chart/model/enum/zoom-behavior-type.ts","../../src/chart/default/default-chart-config.ts","../../src/chart/model/enum/scale-type.ts","../../src/chart/default/default-axis-config.ts","../../src/chart/model/enum/series-type.ts","../../src/chart/model/enum/fill-type.ts","../../src/chart/model/enum/clip-points-direction.ts","../../src/chart/default/default-series-config.ts","../../src/chart/service/chart.service.ts","../../src/chart/model/enum/axis-orientation.ts","../../src/chart/service/broadcast.service.ts","../../src/chart/service/zoom.service.ts","../../src/chart/core/utils/get-text-width.ts","../../src/chart/core/utils/generate-ticks.ts","../../src/chart/core/axis/builders/axis-size-builder.ts","../../src/chart/core/axis/builders/extremes-builder.ts","../../src/chart/core/axis/axis.ts","../../src/chart/model/i-broadcast-message.ts","../../src/chart/service/scale.service.ts","../../src/chart/service/brush.service.ts","../../src/chart/model/enum/brush-type.ts","../../src/chart/base/series-base.component.ts","../../src/chart/chart-container/series/linear-series-base.ts","../../src/chart/model/enum/drag-point-type.ts","../../src/chart/directives/draggable-point.directive.ts","../../src/chart/chart-container/series/line/line-series.component.ts","../../src/chart/chart-container/series/line/line-series.component.html","../../src/chart/chart-container/series/bar/bar-series.component.ts","../../src/chart/chart-container/series/bar/bar-series.component.html","../../src/chart/chart-container/series/scatter-series/scatter-series.component.ts","../../src/chart/chart-container/series/scatter-series/scatter-series.component.html","../../src/chart/chart-container/series/block-series/block-series.component.ts","../../src/chart/chart-container/series/block-series/block-series.component.html","../../src/chart/chart-container/series/block-area-series/block-area-series.component.ts","../../src/chart/chart-container/series/block-area-series/block-area-series.component.html","../../src/chart/chart-container/series/area-series/area-series.component.ts","../../src/chart/chart-container/series/area-series/area-series.component.html","../../src/chart/default/defaultSeriesTypeMapping.ts","../../src/chart/chart-container/series-host/series-host.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.html","../../src/chart/chart-container/x-axis/x-axis.component.ts","../../src/chart/chart-container/x-axis/x-axis.component.html","../../src/chart/chart-container/y-axis/y-axis.component.ts","../../src/chart/chart-container/y-axis/y-axis.component.html","../../src/chart/chart-container/plotline/plotline.component.ts","../../src/chart/chart-container/plotline/plotline.component.html","../../src/chart/chart-container/plotband/plot-band.component.ts","../../src/chart/chart-container/plotband/plot-band.component.html","../../src/chart/chart-container/tooltip/tooltip.component.ts","../../src/chart/chart-container/tooltip/tooltip.component.html","../../src/chart/directives/zoomable.directive.ts","../../src/chart/directives/brushable.directive.ts","../../src/chart/chart-container/annotation/annotation.component.ts","../../src/chart/chart-container/annotation/annotation.component.html","../../src/chart/chart-container/crosshair/crosshair.component.ts","../../src/chart/chart-container/crosshair/crosshair.component.html","../../src/chart/chart-container/chart-container.component.ts","../../src/chart/chart-container/chart-container.component.html","../../src/chart/legend/legend.component.ts","../../src/chart/legend/legend.component.html","../../src/chart/chart/chart.component.ts","../../src/chart/chart/chart.component.html","../../src/chart/stories/bandseries/bandseries.component.ts","../../src/chart/stories/bandseries/bandseries.component.html","../../src/chart/chart.module.ts","../../src/chart/model/plot-band.ts","../../src/chart/model/plot-line.ts","../../src/public-api.ts","../../src/tetacom-svg-charts.ts"],"sourcesContent":["export enum ZoomType {\n x,\n y,\n xy,\n}\n","export class ChartBounds {\n top?: number = 0;\n right?: number = 0;\n bottom?: number = 0;\n left?: number = 0;\n\n constructor(options?: {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n }) {\n this.top = options?.top || 0;\n this.right = options?.right || 0;\n this.bottom = options?.bottom || 0;\n this.left = options?.left || 0;\n }\n}\n","export enum TooltipTracking {\n x,\n y,\n}\n","export enum ZoomBehaviorType {\n move,\n wheel\n}\n","import {IChartConfig} from '../model/i-chart-config';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {ChartBounds} from '../model/chart-bounds';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {ZoomBehaviorType} from \"../model/enum/zoom-behavior-type\";\n\nexport const defaultChartConfig = (): IChartConfig => ({\n name: null,\n zoom: {\n enable: true,\n type: ZoomType.x,\n syncType: ZoomType.xy,\n zoomBehavior: ZoomBehaviorType.move\n },\n bounds: new ChartBounds({\n bottom: 12,\n left: 12,\n top: 12,\n right: 12\n }),\n legend: {\n enable: true,\n },\n tooltip: {\n enable: true,\n showMarkers: true,\n tracking: TooltipTracking.x,\n showCrosshair: false,\n padding: {\n x: 16,\n y: 16\n }\n },\n xAxis: [],\n yAxis: [],\n series: [],\n gridLines: {\n enable: true\n }\n});\n","export enum ScaleType {\n linear,\n log,\n symlog,\n pow,\n sqrt,\n time,\n band\n}\n","import { AxisOptions } from '../model/axis-options';\nimport { ScaleType } from '../model/enum/scale-type';\n\nexport const defaultAxisConfig: AxisOptions = {\n visible: true,\n zoom: true,\n scaleType: {\n type: ScaleType.linear,\n },\n niceTicks: false,\n};\n","export enum SeriesType {\n line,\n bar,\n area,\n scatter,\n block,\n blockArea\n}\n","export enum FillType {\n default,\n gradient,\n}\nexport enum FillDirection {\n x,\n y,\n}\n","export enum ClipPointsDirection {\n x,\n y,\n none\n}\n\n","import {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {SeriesType} from '../model/enum/series-type';\nimport {FillType} from '../model/enum/fill-type';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\nexport const defaultSeriesConfig = (): Series<BasePoint> => ({\n data: [],\n type: SeriesType.line,\n xAxisIndex: 0,\n yAxisIndex: 0,\n fillType: FillType.default,\n color: 'coral',\n visible: true,\n clipPointsDirection: ClipPointsDirection.x\n});\n","import {Injectable} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {\n BehaviorSubject,\n filter,\n lastValueFrom,\n map,\n Observable,\n of,\n shareReplay,\n Subject,\n take,\n withLatestFrom,\n} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {IDisplayTooltip} from '../model/i-display-tooltip';\nimport {PlotBand} from '../model/plot-band';\nimport {PlotLine} from '../model/plot-line';\nimport {IPointMove} from '../model/i-point-move';\nimport {defaultChartConfig} from '../default/default-chart-config';\nimport {defaultAxisConfig} from '../default/default-axis-config';\nimport {defaultSeriesConfig} from '../default/default-series-config';\nimport {BasePoint} from '../model/base-point';\nimport {Series} from '../model/series';\nimport {Annotation} from '../model/annotation';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n public id: Observable<string>;\n public config: Observable<IChartConfig>;\n public size: Observable<DOMRect>;\n public pointerMove: Observable<PointerEvent>;\n public tooltips: Observable<Map<Series<BasePoint>, IDisplayTooltip>>;\n public plotBandEvent: Observable<IChartEvent<PlotBand>>;\n public plotLineMove: Observable<IChartEvent<PlotLine>>;\n public plotBandClick: Observable<IChartEvent<PlotBand>>;\n public plotBandContextMenu: Observable<IChartEvent<PlotBand>>;\n public pointMove: Observable<IChartEvent<IPointMove>>;\n public annotationMove: Observable<IChartEvent<Annotation>>;\n public annotationClick: Observable<IChartEvent<Annotation>>;\n public annotationContextMenu: Observable<IChartEvent<Annotation>>;\n public chartClick: Observable<IChartEvent<BasePoint>>;\n public chartContextMenu: Observable<IChartEvent<BasePoint>>;\n\n private config$ = new BehaviorSubject<IChartConfig>(defaultChartConfig());\n private size$ = new BehaviorSubject<DOMRect>(null);\n private pointerMove$ = new Subject<PointerEvent>();\n private tooltips$ = new BehaviorSubject<Map<Series<BasePoint>, IDisplayTooltip>>(new Map());\n private plotBandEvent$ = new Subject<IChartEvent<PlotBand>>();\n private plotLineMove$ = new Subject<IChartEvent<PlotLine>>();\n private pointMove$ = new Subject<IChartEvent<IPointMove>>();\n private chartClick$ = new Subject<IChartEvent<BasePoint>>();\n private chartContextMenu$ = new Subject<IChartEvent<BasePoint>>();\n private annotationEvent$ = new Subject<IChartEvent<Annotation>>();\n private annotationMove$ = new Subject<IChartEvent<Annotation>>();\n\n\n private static _hiddenSeriesPostfix = 'hidden_series';\n\n constructor() {\n this.id = of((Date.now() + Math.random()).toString(36));\n\n this.config = this.config$.asObservable().pipe(\n withLatestFrom(this.id),\n map(this.setDefaults),\n map(this.setPreparationData),\n map(this.restoreLocalStorage),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.size = this.size$.asObservable().pipe(filter((size) => size != null));\n this.pointerMove = this.pointerMove$.asObservable();\n this.tooltips = this.tooltips$.asObservable();\n this.plotBandEvent = this.plotBandEvent$.asObservable();\n this.plotLineMove = this.plotLineMove$.asObservable();\n this.pointMove = this.pointMove$.asObservable();\n this.chartClick = this.chartClick$.asObservable();\n this.chartContextMenu = this.chartContextMenu$.asObservable();\n this.annotationClick = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.annotationContextMenu = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.annotationMove = this.annotationMove$.asObservable();\n\n this.plotBandClick = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.plotBandContextMenu = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n // this.zoomInstance = this.zoomInstance$.asObservable();\n // this.brushInstance = this.brushInstance$.asObservable();\n }\n\n public setConfig(config: IChartConfig) {\n this.clearTooltips();\n this.config$.next(config);\n }\n\n public setSize(size: DOMRect) {\n this.size$.next(size);\n }\n\n public setPointerMove(event: PointerEvent) {\n this.pointerMove$.next(event);\n }\n\n public setTooltip(tooltip: IDisplayTooltip) {\n const currentTooltips = this.tooltips$.value;\n if (!tooltip.point) {\n currentTooltips.delete(tooltip.series);\n } else {\n currentTooltips.set(tooltip.series, tooltip);\n }\n this.tooltips$.next(\n new Map<Series<BasePoint>, IDisplayTooltip>(currentTooltips)\n );\n }\n\n public clearTooltips() {\n this.tooltips$.next(new Map());\n }\n\n public async toggleVisibilitySeries(seriesIndex: Array<number | string>, visible?: boolean) {\n\n if (seriesIndex?.length === 0) {\n return;\n }\n\n const currentConfig = await lastValueFrom(this.config.pipe(take(1)));\n\n seriesIndex.forEach((serieIndex) => {\n const currentSerieIndex = currentConfig.series.findIndex((_) => _.id === serieIndex);\n\n if (currentSerieIndex === -1) {\n return;\n }\n currentConfig.series[currentSerieIndex].visible = visible !== undefined ? visible : !currentConfig.series[currentSerieIndex].visible;\n\n const seriesLinkCount = currentConfig.series.filter((_) => _.yAxisIndex === currentConfig.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n currentConfig.yAxis[currentConfig.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n })\n\n try {\n this.saveCookie(currentConfig);\n } finally {\n this.config$.next(currentConfig);\n }\n }\n\n public emitMoveAnnotation(event: IChartEvent<Annotation>) {\n this.annotationMove$.next(event);\n }\n\n public emitAnnotation(event: IChartEvent<Annotation>) {\n this.annotationEvent$.next(event);\n }\n\n public emitPlotband(event: IChartEvent<PlotBand>) {\n this.plotBandEvent$.next(event);\n }\n\n public emitPlotline(event: IChartEvent<PlotLine>) {\n this.plotLineMove$.next(event);\n }\n\n public emitPoint(event: IChartEvent<IPointMove>) {\n this.pointMove$.next(event);\n }\n\n public emitChartClick(event: IChartEvent<BasePoint>) {\n this.chartClick$.next(event);\n }\n\n public emitChartContextMenu(event: IChartEvent<BasePoint>) {\n this.chartContextMenu$.next(event);\n }\n\n // public emitZoomInstance(event: ZoomService) {\n // this.zoomInstance$.next(event);\n // }\n //\n // public emitZoomInstance(event: ZoomService) {\n // this.zoomInstance$.next(event);\n // }\n\n private saveCookie(config: IChartConfig) {\n if(!config.name) return;\n const hiddenSeries = config.series?.filter((_) => !_.visible).map((_) => _.id);\n localStorage.setItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`, JSON.stringify(hiddenSeries))\n }\n\n private restoreLocalStorage(config: IChartConfig): IChartConfig {\n if(!config.name) return config;\n\n const hiddenSeries = localStorage.getItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`);\n if (hiddenSeries) {\n const json = JSON.parse(hiddenSeries) as Array<string | number>;\n config.series = config.series.map((serie, index) => {\n serie.visible = !json.includes(serie.id);\n\n const currentSerieIndex = config.series.findIndex((_) => _.id === serie.id);\n\n if (currentSerieIndex !== -1) {\n const seriesLinkCount = config.series.filter((_) => _.yAxisIndex === config.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n config.yAxis[config.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n }\n\n\n return serie;\n });\n\n\n return config\n }\n\n return config\n }\n\n private setDefaults(data: [IChartConfig, string]): IChartConfig {\n\n let [config, id] = data;\n\n const defaultConfig = (defaultConfig) => {\n return (source) => {\n return Object.assign({}, defaultConfig, source);\n };\n };\n\n config = Object.assign({}, defaultChartConfig(), config);\n config.id = config.id ?? id;\n\n config.xAxis = config.xAxis.map(defaultConfig(defaultAxisConfig));\n config.yAxis = config.yAxis.map(defaultConfig(defaultAxisConfig));\n config.series = config.series.map(defaultConfig(defaultSeriesConfig()));\n\n config.series = config.series.map((_, index) => {\n return {\n ..._,\n data: _.data ?? [],\n id: _.id ?? index,\n };\n });\n\n const oppositeYCount = config.yAxis?.filter((_) => _.opposite);\n const oppositeXCount = config.xAxis?.filter((_) => _.opposite);\n\n const nonOppositeYCount = config.yAxis?.filter((_) => !_.opposite);\n const nonOppositeXCount = config.xAxis?.filter((_) => !_.opposite);\n\n if (nonOppositeXCount?.length > 1) {\n config.bounds.bottom = 0;\n }\n\n if (oppositeXCount?.length > 1) {\n config.bounds.top = 0;\n }\n\n if (nonOppositeYCount?.length > 1) {\n config.bounds.left = 0;\n }\n\n if (oppositeYCount?.length > 1) {\n config.bounds.right = 0;\n }\n\n config.tooltip = Object.assign(\n {},\n defaultChartConfig().tooltip,\n config.tooltip\n );\n\n config.zoom = Object.assign(\n {},\n defaultChartConfig().zoom,\n config.zoom\n );\n\n config.zoom.syncChannel = config.zoom?.syncChannel ?? id;\n\n return config;\n }\n\n private setPreparationData(config: IChartConfig): IChartConfig {\n if (config.inverted) {\n\n\n const xAxes = [...config.xAxis];\n const yAxes = [...config.yAxis];\n\n config.xAxis = yAxes;\n config.yAxis = xAxes;\n\n config.series = config.series?.map((serie) => {\n const x = serie.xAxisIndex;\n const y = serie.yAxisIndex;\n serie.xAxisIndex = y;\n serie.yAxisIndex = x;\n return {\n ...serie,\n clipPointsDirection: ClipPointsDirection.y,\n data: serie?.data?.map((point) => {\n return {\n ...point,\n x: point?.y,\n y: point?.x,\n x1: point?.y1,\n y1: point?.x1,\n };\n }),\n };\n });\n }\n\n if (config?.brush?.enable) {\n config.yAxis = config.yAxis.map((_) => ({..._, zoom: false}));\n config.xAxis = config.xAxis.map((_) => ({..._, zoom: false}));\n }\n\n return config;\n }\n}\n","export enum AxisOrientation {\n x,\n y\n}\n","import {Injectable} from '@angular/core';\nimport {IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {filter, Observable, ReplaySubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BroadcastService {\n private zoomEmitter: ReplaySubject<IBroadcastMessage<ZoomMessage>>;\n\n constructor() {\n this.zoomEmitter = new ReplaySubject<IBroadcastMessage<ZoomMessage>>(1);\n }\n\n broadcastZoom(value: IBroadcastMessage<ZoomMessage>) {\n this.zoomEmitter.next(value);\n }\n\n subscribeToZoom(channel: string): Observable<IBroadcastMessage<ZoomMessage>> {\n return this.zoomEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel)\n );\n }\n}\n","import {BehaviorSubject, combineLatest, filter, Observable, shareReplay, Subscription, take,} from 'rxjs';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {zoomIdentity} from 'd3';\nimport {BroadcastService} from './broadcast.service';\nimport {ChartService} from './chart.service';\nimport {IChartConfig} from \"../model/i-chart-config\";\nimport {ZoomType} from \"../model/enum/zoom-type\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZoomService implements OnDestroy {\n zoomed: Observable<ZoomMessage>;\n\n private zoomed$ = new BehaviorSubject<ZoomMessage>(null);\n private broadcastChannel: string;\n private broadcastSub: Subscription;\n\n constructor(private _broadcast: BroadcastService,\n private _chart: ChartService) {\n this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n }\n\n fireZoom(zoom: ZoomMessage) {\n this.zoomed$.next(zoom);\n }\n\n broadcastZoom(zoom: ZoomMessage) {\n if (this.broadcastChannel?.length) {\n this._broadcast.broadcastZoom({\n channel: this.broadcastChannel,\n message: zoom\n });\n }\n }\n\n setBroadcastChannel(channel: string) {\n if (this.broadcastSub) {\n this.broadcastSub?.unsubscribe();\n }\n this.broadcastChannel = channel;\n if (this.broadcastChannel?.length) {\n this.broadcastSub = combineLatest(\n [this._broadcast.subscribeToZoom(this.broadcastChannel), this._chart.config]\n )\n .pipe(filter(([zoom, config]: [IBroadcastMessage<ZoomMessage>, IChartConfig]) => {\n return zoom.message?.chartId !== config.id && (\n config.zoom.syncType === ZoomType.xy ||\n (zoom.message.axis.orientation === AxisOrientation.y && config.zoom.syncType === ZoomType.y) ||\n (zoom.message.axis.orientation === AxisOrientation.x && config.zoom.syncType === ZoomType.x)\n );\n }))\n .subscribe(([zoom, config]) => {\n this.fireZoom(zoom.message);\n });\n }\n }\n\n getD3Transform(targetDomain: [number, number],\n originalDomain: [number, number],\n scale,\n orientation: AxisOrientation,\n inverted: boolean) {\n const zoomScale = Math.abs(scale(originalDomain[1]) - scale(originalDomain[0])) / Math.abs(scale(targetDomain[1]) - scale(targetDomain[0]));\n let transform = zoomIdentity.scale(zoomScale);\n if (orientation === AxisOrientation.x) {\n if (!!inverted) {\n transform = transform.translate(-scale(Math.max(...targetDomain)), 0);\n } else {\n transform = transform.translate(-scale(Math.min(...targetDomain)), 0);\n }\n }\n\n if (orientation === AxisOrientation.y) {\n if (!!inverted) {\n transform = transform.translate(0, -scale(Math.min(...targetDomain)));\n } else {\n transform = transform.translate(0, -scale(Math.max(...targetDomain)));\n }\n }\n return transform;\n }\n\n ngOnDestroy() {\n this.broadcastSub?.unsubscribe();\n }\n}\n","export const getTextWidth = (\n inputText?: string | number | null,\n backupRatio = 0.5,\n fontSize = 10\n): number => {\n let text = inputText ?? '';\n text = text.toString();\n\n return fontSize * backupRatio * text.length;\n};\n","import * as d3 from 'd3';\n\nexport function generateTicks(extremes: number[], count = 10) {\n const [min, max] = extremes;\n const tickStep = (max - min) / count;\n\n const ticks = d3\n .range(min, max + tickStep, tickStep)\n .filter((step) => step <= max);\n\n return ticks;\n}\n","import {Axis} from '../axis';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\nimport {maxIndex} from 'd3-array';\nimport {getTextWidth} from '../../utils/public-api';\nimport {IBuilder} from '../../../model/i-builder';\nimport {ScaleType} from \"../../../model/enum/scale-type\";\n\nexport class AxisSizeBuilder implements IBuilder<Axis, number> {\n private titlePadding = 11;\n private basePadding = 16;\n private backupRatio = 0.58;\n\n build(settings: Axis): number {\n let finalPadding = this.basePadding;\n\n if (settings.orientation === AxisOrientation.y) {\n const formatter = settings.options.tickFormat || settings.defaultFormatter();\n\n finalPadding += settings.options.title ? this.titlePadding : 0;\n\n const scale = settings.defaultScale()();\n scale.domain(settings.extremes)\n\n\n if(settings.options.scaleType.type === ScaleType.band) {\n scale.ticks = (ticks?: number) => {\n return scale.domain()\n }\n }\n const ticks = scale.ticks(20);\n\n const maxElementLengthIndex = maxIndex(\n ticks,\n (_) => formatter(_).length\n );\n\n finalPadding += getTextWidth(\n formatter(ticks[maxElementLengthIndex]),\n this.backupRatio\n );\n }\n\n if (settings.orientation === AxisOrientation.x) {\n finalPadding += finalPadding + 20;\n }\n\n return finalPadding;\n }\n}\n","import {IBuilder} from '../../../model/i-builder';\nimport {Axis} from '../axis';\nimport {BasePoint} from '../../../model/base-point';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\n\nimport * as d3 from 'd3';\nimport {ScaleType} from \"../../../model/enum/scale-type\";\n\nexport class ExtremesBuilder implements IBuilder<Axis, number[] | string[]> {\n private extentAccessorMap = new Map<AxisOrientation,\n (point: BasePoint) => number>()\n .set(AxisOrientation.x, (_) => _.x)\n .set(AxisOrientation.y, (_) => _.y);\n\n private extremes: number[] | string[] = [0, 0];\n\n build(settings: Axis): number[] | string[] {\n const options = settings.options;\n\n const hasMin = options?.min != null;\n const hasMax = options?.max != null;\n\n if (!hasMin || !hasMax) {\n const linkedSeries = settings.linkedSeries();\n const data = linkedSeries.reduce((acc: BasePoint[], current) => {\n return acc.concat(current.data);\n }, []);\n const accessor = this.extentAccessorMap.get(settings.orientation);\n this.extremes = data.length > 1 ? d3.extent(data, accessor) : [0, 0];\n\n if(settings.options.scaleType.type === ScaleType.band) {\n this.extremes = data.map(accessor)\n }\n\n }\n\n if (hasMin) {\n this.extremes[0] = options?.min;\n }\n\n if (hasMax) {\n this.extremes[1] = options?.max;\n }\n\n return this.extremes;\n }\n}\n","import {IChartConfig} from '../../model/i-chart-config';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport * as d3 from 'd3';\nimport {AxisOptions} from '../../model/axis-options';\nimport {AxisSizeBuilder, ExtremesBuilder} from './builders/public-api';\nimport {ScaleType} from '../../model/enum/scale-type';\n\nexport class Axis {\n private chartConfig: IChartConfig;\n private _orientation: AxisOrientation;\n private _index: number;\n private _extremes: number[] | string[] = [0, 0];\n private _selfSize: number;\n private _ticksValues: number[];\n private _options: AxisOptions;\n private _originDomain: [number, number] = [0, 0];\n\n private _scale: any;\n\n private defaultFormatters = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.format(',.5~r'))\n .set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))\n .set(ScaleType.log, d3.format('~s'))\n .set(ScaleType.symlog, d3.format('~s'))\n .set(ScaleType.pow, d3.format('~s'))\n .set(ScaleType.sqrt, d3.format('~s'))\n .set(ScaleType.band, (_) => {return _})\n\n\n\n private defaultScales = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.band, d3.scaleBand);\n\n constructor(config: IChartConfig) {\n this.chartConfig = config;\n }\n\n /**\n * Factory for creating x,y axes\n * @param {AxisOrientation} orientation\n * Axis type\n * @param {IChartConfig} config\n * Chart config\n * @param {number} index\n * New generated axis\n */\n public static createAxis(\n orientation: AxisOrientation,\n config: IChartConfig,\n index: number\n ): Axis {\n const axis = new Axis(config);\n axis.setLocate(orientation);\n axis.setIndex(index);\n\n axis.setOptions();\n axis.setExtremes();\n axis.setTicksValues();\n axis.setSelfSize();\n\n return axis;\n }\n\n /**\n *\n * @param {orientation} orientation\n * Set locate axis x or y\n */\n private setLocate(orientation: AxisOrientation): void {\n this._orientation = orientation;\n }\n\n /**\n *\n * @param {number} index\n * Index axis\n */\n private setIndex(index: number): void {\n this._index = index;\n }\n\n /**\n * @return {Array<Series<BasePoint>>}\n * Linked series\n */\n public linkedSeries(): Array<Series<BasePoint>> {\n const linkedFilter = (serie: Series<BasePoint>) =>\n serie[\n this._orientation === AxisOrientation.y ? 'yAxisIndex' : 'xAxisIndex'\n ] === this._index;\n\n return this.chartConfig?.series.filter(linkedFilter);\n }\n\n public setExtremes(): void {\n const builder = new ExtremesBuilder();\n this._extremes = builder.build(this);\n }\n\n public setOriginDomain(domain: [number, number]) {\n this._originDomain = domain;\n }\n\n public setScale(scale: any) {\n this._scale = scale;\n\n if(this.options.scaleType.type === ScaleType.band) {\n this._scale.ticks = () => {\n return this._scale.domain()\n }\n }\n }\n\n private setSelfSize(): void {\n this._selfSize = new AxisSizeBuilder().build(this);\n }\n\n private setTicksValues(): void {\n //this._ticksValues = generateTicks(this._extremes);\n }\n\n private setOptions(): void {\n const options =\n this.orientation === AxisOrientation.x\n ? this.chartConfig.xAxis[this.index]\n : this.chartConfig.yAxis[this.index];\n\n this._options = options;\n }\n\n get scale(): any {\n return this._scale;\n }\n\n get extremes(): Array<number | string> {\n return this._extremes;\n }\n\n get orientation(): AxisOrientation {\n return this._orientation;\n }\n\n get selfSize(): number {\n return this._selfSize;\n }\n\n get tickValues(): number[] {\n return this._ticksValues;\n }\n\n get index(): number {\n return this._index;\n }\n\n get options(): AxisOptions {\n return this._options;\n }\n\n get originDomain(): [number, number] {\n return this._originDomain;\n }\n\n public defaultFormatter() {\n return this.defaultFormatters.get(this.options.scaleType.type);\n }\n\n public defaultScale() {\n return this.defaultScales.get(this.options.scaleType.type);\n }\n\n\n}\n","import {AxisOrientation} from './enum/axis-orientation';\nimport {ElementRef} from '@angular/core';\n\nexport type TransformStyle = {\n transition?: boolean;\n}\n\nexport type TargetAxis = {\n index: number,\n orientation: AxisOrientation\n}\n\nexport class ZoomMessage {\n eventType: 'start' | 'zoom' | 'end' | string;\n element?: ElementRef;\n axis: TargetAxis;\n domain?: [number, number];\n chartId: string;\n style?: TransformStyle;\n\n constructor(options?: {\n eventType: 'start' | 'zoom' | 'end' | string;\n element?: ElementRef;\n axis?: TargetAxis;\n domain?: [number, number]\n chartId: string;\n style?: TransformStyle;\n }) {\n this.eventType = options?.eventType;\n this.element = options?.element;\n this.axis = options?.axis;\n this.domain = options.domain;\n this.chartId = options?.chartId;\n this.style = options?.style;\n }\n}\n\nexport class BrushMessage {\n chartId: string;\n selection: [number, number];\n mode?: 'drag' | 'space' | 'handle' | 'center' | 'init';\n\n constructor(options?: {\n chartId: string;\n selection: [number, number];\n mode?: 'drag' | 'space' | 'handle' | 'center' | 'init';\n }) {\n this.chartId = options?.chartId;\n this.selection = options?.selection;\n this.mode = options?.mode;\n }\n}\n\nexport interface IBroadcastMessage<T> {\n channel: string;\n message: T;\n}\n","import {Injectable} from '@angular/core';\nimport * as d3 from 'd3';\nimport {ZoomTransform} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from './chart.service';\nimport {combineLatest, map, Observable, shareReplay, take, withLatestFrom,} from 'rxjs';\nimport {ZoomService} from './zoom.service';\nimport {ScaleType} from '../model/enum/scale-type';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {ZoomMessage} from '../model/i-broadcast-message';\nimport {ZoomType} from \"../model/enum/zoom-type\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScaleService {\n public scales: Observable<IScalesMap>;\n\n private transformCacheX = new Map<number, ZoomTransform>();\n private transformCacheY = new Map<number, ZoomTransform>();\n\n private scaleMapping = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.band, d3.scaleBand)\n\n constructor(\n private chartService: ChartService,\n private zoomService: ZoomService\n ) {\n\n this.scales = combineLatest([\n this.chartService.size,\n this.chartService.config,\n this.zoomService.zoomed,\n ]).pipe(\n map((data: [DOMRectReadOnly, IChartConfig, ZoomMessage]) => {\n const [size, config, zoom] = data;\n\n const xAxisMap = new Map<number, Axis>();\n const yAxisMap = new Map<number, Axis>();\n\n config.yAxis.map((_, index) => {\n yAxisMap.set(index, Axis.createAxis(AxisOrientation.y, config, index));\n });\n\n\n config.xAxis.map((_, index) => {\n xAxisMap.set(index, Axis.createAxis(AxisOrientation.x, config, index));\n });\n\n // Generate x scales\n const left = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const right = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalWidth = (size.width || 0) - left - right;\n\n xAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis?.options.inverted) {\n domain = [...axis.extremes].reverse();\n }\n\n let scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([0, finalWidth - config.bounds.right]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base);\n }\n\n if (axis.options.scaleType.type === ScaleType.band) {\n scale.paddingInner(0.1);\n scale.paddingOuter(0.1);\n scale.align(0.1)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n\n const hasCache = this.transformCacheX.has(axis.index);\n const shouldRestore =\n zoom?.axis?.orientation !== AxisOrientation.x ||\n zoom.axis?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheX.get(axis.index);\n axis.setScale(restoredTransform.rescaleX(scale));\n }\n });\n\n if (zoom && zoom.domain) {\n if (zoom.axis?.orientation === AxisOrientation.x) {\n if (xAxisMap.has(zoom.axis.index)) {\n const x = xAxisMap.get(zoom.axis.index);\n const transform = this.zoomService.getD3Transform(zoom.domain, x.originDomain, x.scale, AxisOrientation.x, x.options.inverted);\n const rescaled = transform.rescaleX(x.scale.copy());\n x.setScale(rescaled);\n this.transformCacheX.set(x.index, transform);\n }\n }\n }\n\n\n // Generate y axis\n\n const top = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const bottom = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalHeight =\n (size.height || 0) -\n top -\n bottom -\n config?.bounds?.top -\n config.bounds?.bottom;\n\n yAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis.orientation === AxisOrientation.y) {\n domain = [...axis.extremes].reverse();\n }\n\n if (axis?.options.inverted) {\n domain = domain.reverse();\n }\n\n const scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([config.bounds.top, finalHeight]);\n\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base);\n }\n\n if (axis.options.scaleType.type === ScaleType.band) {\n scale.paddingInner(0.1);\n scale.paddingOuter(0.1);\n scale.align(0.1)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n const hasCache = this.transformCacheY.has(axis.index);\n\n const shouldRestore =\n zoom?.axis?.orientation !== AxisOrientation.y ||\n zoom.axis?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheY.get(axis.index);\n axis.setScale(restoredTransform.rescaleY(scale));\n }\n });\n\n if (zoom && zoom.domain) {\n if (zoom.axis?.orientation === AxisOrientation.y) {\n if (yAxisMap.has(zoom.axis.index)) {\n const y = yAxisMap.get(zoom.axis.index);\n const transform = this.zoomService.getD3Transform(zoom.domain,\n y.originDomain,\n y.scale,\n AxisOrientation.y,\n y.options.inverted\n );\n const rescaled = transform.rescaleY(y.scale.copy());\n y.setScale(rescaled);\n this.transformCacheY.set(y.index, transform);\n }\n }\n }\n return {\n x: xAxisMap,\n y: yAxisMap\n };\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n resetZoom() {\n this.chartService.config.pipe(\n take(1),\n withLatestFrom(this.scales)\n ).subscribe(([config, scales]: [IChartConfig, IScalesMap]) => {\n config.xAxis.forEach((axis, index) => {\n const scale = scales?.x?.get(index)?.originDomain;\n if (scale) {\n const msg = new ZoomMessage({\n eventType: \"end\",\n axis: {\n index,\n orientation: AxisOrientation.x\n },\n domain: scale,\n chartId: config.id\n });\n this.zoomService.fireZoom(msg);\n if (config.zoom.syncChannel && config.zoom.syncType === ZoomType.x) {\n this.zoomService.broadcastZoom(msg);\n }\n }\n })\n config.yAxis.forEach((axis, index) => {\n const scale = scales?.y?.get(index)?.originDomain;\n if (scale) {\n const msg = new ZoomMessage({\n eventType: \"end\",\n axis: {\n index,\n orientation: AxisOrientation.y\n },\n domain: scale,\n chartId: config.id\n });\n this.zoomService.fireZoom(msg);\n if (config.zoom.syncChannel && config.zoom.syncType === ZoomType.y) {\n this.zoomService.broadcastZoom(msg);\n }\n }\n })\n })\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {BrushMessage} from '../model/i-broadcast-message';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrushService {\n brushDomain: Observable<BrushMessage>;\n private _brushDomain = new ReplaySubject<BrushMessage>(1);\n\n constructor() {\n this.brushDomain = this._brushDomain.asObservable();\n }\n\n setBrush(brush: BrushMessage) {\n this._brushDomain.next(brush);\n }\n}\n","export enum BrushType {\n x,\n y,\n xy,\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, NgZone,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\n\n@Component({\n template: '',\n})\nexport class SeriesBaseComponent<T extends BasePoint> implements OnInit {\n @Input()\n set config(config: IChartConfig) {\n this._config = config;\n }\n\n get config() {\n return this._config;\n }\n\n @Input()\n set series(series: Series<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n\n protected _series: Series<T>;\n protected _config: IChartConfig;\n\n constructor(\n protected svc: ChartService,\n protected cdr: ChangeDetectorRef,\n protected scaleService: ScaleService,\n protected zoomService: ZoomService,\n protected element: ElementRef,\n protected zone?: NgZone\n ) {\n }\n\n ngOnInit(): void {\n }\n}\n","import {BasePoint} from '../../model/base-point';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, tap, withLatestFrom} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from '../../service/scale.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport * as d3 from 'd3';\nimport {DragPointType} from '../../model/enum/drag-point-type';\nimport {TooltipTracking} from '../../model/enum/tooltip-tracking';\nimport {ClipPointsDirection} from '../../model/enum/clip-points-direction';\nimport {IScalesMap} from '../../model/i-scales-map';\nimport {Series} from '../../model/series';\n\n@Component({\n template: '',\n})\nexport class LinearSeriesBase<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnDestroy {\n\n public defaultClipPointsMapping: Map<ClipPointsDirection, (min: number, max: number) => (point: BasePoint, idx: number, arr: Array<BasePoint>) => {}> = new Map();\n\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: any;\n y: any;\n markers: BasePoint[];\n\n private __series: Series<T>;\n protected _update = new BehaviorSubject<void>(null);\n\n @Input()\n override set series(series: Series<T>) {\n this.__series = series;\n\n this.markers = this.__series.data?.filter((_) =>\n _?.marker && _?.x !== undefined && _?.y !== undefined && _?.x !== null && _?.y !== null);\n }\n\n override get series() {\n return this.__series;\n }\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n const filterX = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.x <= bigger ||\n point.x1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].x <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].x1 <= bigger)) &&\n (point.x >= smaller ||\n point.x1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].x >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].x1 >= smaller))\n ;\n };\n\n const filterY = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.y <= bigger ||\n point.y1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].y <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].y1 <= bigger)) &&\n (point.y >= smaller ||\n point.y1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].y >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].y1 >= smaller));\n };\n\n this.defaultClipPointsMapping.set(ClipPointsDirection.x, filterX);\n this.defaultClipPointsMapping.set(ClipPointsDirection.y, filterY);\n\n this.transform = this.svc.pointerMove.pipe(\n withLatestFrom(this.scaleService.scales),\n map((data: [PointerEvent, IScalesMap]) => {\n const [event, {x, y}] = data;\n\n return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);\n }),\n tap(() => setTimeout(() => this.cdr.detectChanges()))\n );\n\n this.path = combineLatest([this.scaleService.scales, this._update]).pipe(\n map(([data]) => {\n const {x, y} = data;\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if (!this.x || !this.y) {\n return '';\n }\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n\n const line = d3\n .line<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n point.x !== undefined &&\n point.y !== undefined &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n )\n .x((point) => this.x(point.x))\n .y((point) => this.y(point.y));\n\n let filteredData = this.series.data;\n\n if (this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if (this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return line(filteredData);\n })\n );\n }\n\n ngOnDestroy() {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n\n getTransform(\n event: any,\n scaleX: any,\n scaleY: any\n ): Pick<BasePoint, 'x' | 'y'> {\n if (event.type === 'mouseleave') {\n return null;\n }\n const mouse = [event?.offsetX, event?.offsetY];\n\n const tooltipTracking = this.config?.tooltip?.tracking;\n const lineIntersection = (\n p0_x,\n p0_y,\n p1_x,\n p1_y,\n p2_x,\n p2_y,\n p3_x,\n p3_y\n ) => {\n const rV = {} as any;\n let s1_x, s1_y, s2_x, s2_y;\n s1_x = p1_x - p0_x;\n s1_y = p1_y - p0_y;\n s2_x = p3_x - p2_x;\n s2_y = p3_y - p2_y;\n\n let s, t;\n s =\n (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /\n (-s2_x * s1_y + s1_x * s2_y);\n t =\n (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /\n (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n // Collision detected\n rV.x = p0_x + t * s1_x;\n rV.y = p0_y + t * s1_y;\n }\n\n return rV;\n };\n\n if (tooltipTracking === TooltipTracking.x) {\n const bisect = d3.bisector((_: BasePoint) => _.x).right;\n const pointer = mouse[0];\n\n let x0 = scaleX.invert(pointer);\n if (x0 instanceof Date) {\n x0 = x0.getTime();\n }\n const rightId = bisect(this.series.data, x0);\n const range = scaleY.range();\n\n const intersect = lineIntersection(\n pointer,\n range[0],\n pointer,\n Number.MAX_SAFE_INTEGER,\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n\n if (tooltipTracking === TooltipTracking.y) {\n const bisect = d3.bisector((_: BasePoint) => _.y).right;\n\n let y0 = scaleY.invert(mouse[1]);\n if (y0 instanceof Date) {\n y0 = y0.getTime();\n }\n const rightId = bisect(this.series.data, y0);\n const range = scaleX.range();\n\n const intersect = lineIntersection(\n range[0],\n mouse[1],\n Number.MAX_SAFE_INTEGER,\n mouse[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n }\n}\n","export enum DragPointType {\n x,\n y,\n xy,\n}\n","import {Directive, ElementRef, EventEmitter, HostListener, Input, Output} from '@angular/core';\nimport {DragPointType} from '../model/enum/drag-point-type';\n\n@Directive({\n selector: '[tetaDraggablePoint]',\n exportAs: 'tetaDraggablePoint'\n})\nexport class DraggablePointDirective {\n @Input() tetaDraggablePoint: boolean;\n @Input() dragDirection: DragPointType;\n @Input() allowDrag: (point: {\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }) => boolean;\n\n private startPosition: {\n x: number,\n y: number;\n };\n\n private transformCache: {\n x: number,\n y: number;\n };\n\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output() moveStart = new EventEmitter<{\n x: number,\n y: number\n }>();\n\n @Output() moveProcess = new EventEmitter<{\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }>();\n\n @Output() moveEnd = new EventEmitter<{\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }>();\n\n @HostListener('mousedown', ['$event'])\n @HostListener('touchstart', ['$event'])\n mouseDown(event: MouseEvent) {\n if (!this.tetaDraggablePoint) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n this.startPosition = {\n x: event.x,\n y: event.y\n };\n this.moveStart.emit(this.startPosition);\n }\n\n @HostListener('window:mouseup', ['$event'])\n @HostListener('window:touchend', ['$event'])\n mouseUp(event: MouseEvent) {\n if (this.startPosition !== null && this.startPosition !== undefined) {\n let deltaX = event.x - this.startPosition.x;\n let deltaY = event.y - this.startPosition.y;\n if (this.dragDirection === DragPointType.x) {\n deltaY = 0;\n }\n if (this.dragDirection === DragPointType.y) {\n deltaX = 0;\n }\n if (this.allowDrag && !this.allowDrag({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n })) {\n this.startPosition = null;\n return;\n }\n if (this.transformCache) {\n this.transformCache.x = this.transformCache.x + deltaX;\n this.transformCache.y = this.transformCache.y + deltaY;\n } else {\n this.transformCache = {\n x: deltaX,\n y: deltaY\n };\n }\n this.moveEnd.emit({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n });\n }\n this.startPosition = null;\n }\n\n @HostListener('window:mousemove', ['$event'])\n @HostListener('window:touchmove', ['$event'])\n mouseMove(event: MouseEvent) {\n if (this.startPosition) {\n let deltaX = event.x - this.startPosition.x;\n let deltaY = event.y - this.startPosition.y;\n if (this.transformCache) {\n deltaX = this.transformCache.x + deltaX;\n deltaY = this.transformCache.y + deltaY;\n }\n if (this.allowDrag && !this.allowDrag({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n })) {\n return;\n }\n if (this.dragDirection === DragPointType.x) {\n deltaY = 0;\n }\n if (this.dragDirection === DragPointType.y) {\n deltaX = 0;\n }\n this.setTransform(deltaX, deltaY);\n event.stopPropagation();\n event.preventDefault();\n this.moveProcess.emit({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n });\n }\n }\n\n setTransform(x: number, y: number) {\n this._elementRef.nativeElement.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n resetTransform() {\n this.setTransform(0, 0);\n this.transformCache = null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../../../service/chart.service';\nimport {BasePoint} from '../../../model/base-point';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {LinearSeriesBase} from '../linear-series-base';\n\n@Component({\n selector: 'svg:svg[teta-line-series]',\n templateUrl: './line-series.component.html',\n styleUrls: ['./line-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, OnDestroy {\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef,\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n private start: { x: number, y: number };\n private labelStart: { dx: number, dy: number };\n\n moveStart(event, point) {\n this.start = {x: point.x, y: point.y};\n }\n\n moveEnd(event, point) {\n point.x = this.x.invert(this.x(this.start.x) + event.deltaX);\n point.y = this.y.invert(this.y(this.start.y) + event.deltaY);\n this._update.next();\n const emitEvent = {\n type: 'end',\n sourceEvent: event\n };\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: point,\n },\n event: emitEvent,\n });\n }\n\n moveProcess(event, point) {\n point.x = this.x.invert(this.x(this.start.x) + event.deltaX);\n point.y = this.y.invert(this.y(this.start.y) + event.deltaY);\n this._update.next();\n const emitEvent = {\n type: 'drag',\n sourceEvent: event\n };\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: point,\n },\n event: emitEvent,\n });\n }\n\n startLabel(event, label) {\n this.labelStart = {dx: label.dx, dy: label.dy};\n }\n\n moveLabel(event, label) {\n label.dx = this.labelStart.dx + event.deltaX;\n label.dy = this.labelStart.dy + event.deltaY;\n }\n\n allowDrag = (point: BasePoint) => {\n return (newPoint) => {\n if (point.marker.minX !== null && point.marker.minX !== undefined) {\n if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) < point.marker.minX) {\n return false;\n }\n }\n if (point.marker.maxX !== null && point.marker.maxX !== undefined) {\n if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) > point.marker.maxX) {\n return false;\n }\n }\n if (point.marker.minY !== null && point.marker.minY !== undefined) {\n if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) < point.marker.minY) {\n return false;\n }\n }\n if (point.marker.maxY !== null && point.marker.maxY !== undefined) {\n if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) > point.marker.maxY) {\n return false;\n }\n }\n return true;\n };\n };\n}\n","<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <ng-container *ngIf=\"x && y\">\n <svg:g\n *ngFor=\"let point of draggablePoints\"\n [attr.transform]=\"'translate(' + x(point.x) + ',' + y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n <ng-container *ngIf=\"point.marker.label?.text\">\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-background-50)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{point.marker.label?.text}}\n </div>\n </svg:foreignObject>\n </ng-container>\n </svg:g>\n </svg:g>\n </ng-container>\n\n</ng-container>\n\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SeriesBaseComponent } from '../../../base/series-base.component';\nimport { BasePoint } from '../../../model/base-point';\nimport { ChartService } from '../../../service/chart.service';\nimport { ScaleService } from '../../../service/scale.service';\nimport { ZoomService } from '../../../service/zoom.service';\nimport { map, Observable } from 'rxjs';\nimport { SeriesType } from '../../../model/enum/series-type';\nimport * as d3 from 'd3';\n\n@Component({\n selector: 'svg:svg[teta-bar-series]',\n templateUrl: './bar-series.component.html',\n styleUrls: ['./bar-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnChanges\n{\n x: Observable<any>;\n x1: Observable<any>;\n y: Observable<any>;\n\n barSeriesCount: Observable<number>;\n\n Math: any = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.barSeriesCount = this.svc.config.pipe(\n map((_) => {\n const count = _.series.filter(\n (_) =>\n _.type === SeriesType.bar && _.xAxisIndex === this.series.xAxisIndex\n );\n\n return count.length;\n })\n );\n\n this.x1 = this.scaleService.scales.pipe(\n map((_) => {\n const x = _.x.get(this.series.xAxisIndex)?.scale;\n const range = x.range();\n const domain = this.series.data.map((_) => _.x);\n\n return d3\n .scaleBand<number>()\n .range([0, range[1]])\n .domain(domain)\n .padding(0.1);\n })\n );\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {}\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n} as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngIf=\"data.barSeriesCount > 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + (series.id * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n </ng-container>\n <ng-container *ngIf=\"data.barSeriesCount === 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n </ng-container>\n </ng-container>\n</ng-container>\n\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\n\n@Component({\n selector: 'svg:svg[teta-scatter-series]',\n templateUrl: './scatter-series.component.html',\n styleUrls: ['./scatter-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScatterSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex)?.scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex)?.scale));\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <ng-container *ngIf=\"scales.x && scales.y\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n </ng-container>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {filter, map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-series]',\n templateUrl: './block-series.component.html',\n styleUrls: ['./block-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n\n }\n\n override ngOnInit(): void {\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n x=\"0\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n width=\"100%\">\n </svg:rect>\n <svg:text *ngIf=\"point.text && data.y(point.y1) - data.y(point.y) > 8\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {filter, map, Observable} from 'rxjs';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-area-series]',\n templateUrl: './block-area-series.component.html',\n styleUrls: ['./block-area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockAreaSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n *ngIf=\"!!config.inverted\"\n [attr.x]=\"data.x(0) < data.x(point.x) ? data.x(0) : data.x(point.x)\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.width]=\"data.x(0) < data.x(point.x) ? data.x(point.x) - data.x(0) : data.x(0) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:rect\n *ngIf=\"!config.inverted\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"data.y(0)\"\n [attr.height]=\"Math.abs(data.y(0) - data.y(point.y))\"\n [attr.width]=\"data.x(point.x1) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:text *ngIf=\"point.text\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, NgZone, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillDirection, FillType} from '../../../model/enum/fill-type';\nimport {LinearSeriesBase} from '../linear-series-base';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport * as d3 from 'd3';\nimport {ClipPointsDirection} from \"../../../model/enum/clip-points-direction\";\nimport {Axis} from \"../../../core/axis/axis\";\n\n@Component({\n selector: 'svg:svg[teta-area-series]',\n templateUrl: './area-series.component.html',\n styleUrls: ['./area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, OnDestroy {\n areaPath: Observable<string>;\n\n fillDirection = FillDirection;\n fillType = FillType;\n id: string;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.areaPath = this.scaleService.scales.pipe(\n map(\n (\n data\n ) => {\n const {x, y} = data;\n\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if(!this.x || !this.y) {\n return ''\n }\n\n const area = d3\n .area<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n );\n\n area\n .x1((_) =>\n _.x1 !== null && _.x1 !== undefined ? this.x(_.x1) : this.x(0)\n )\n .x0((_) => this.x(_.x))\n\n .y((_) =>\n this.y(_.y)\n );\n\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n let filteredData = this.series.data;\n\n if(this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if(this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return area(filteredData);\n }\n )\n );\n }\n}\n","<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n</svg:defs>\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of draggablePoints\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {SeriesType} from '../model/enum/series-type';\nimport {SeriesBaseComponent} from '../base/series-base.component';\nimport {LineSeriesComponent} from '../chart-container/series/line/line-series.component';\nimport {BarSeriesComponent} from '../chart-container/series/bar/bar-series.component';\nimport {ScatterSeriesComponent} from '../chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from '../chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from '../chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from '../chart-container/series/area-series/area-series.component';\n\nexport const defaultSeriesTypeMapping = new Map<SeriesType,\n typeof SeriesBaseComponent>()\n .set(SeriesType.line, LineSeriesComponent)\n .set(SeriesType.bar, BarSeriesComponent)\n .set(SeriesType.scatter, ScatterSeriesComponent)\n .set(SeriesType.block, BlockSeriesComponent)\n .set(SeriesType.area, AreaSeriesComponent)\n .set(SeriesType.blockArea, BlockAreaSeriesComponent);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input, OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {LineSeriesComponent} from '../series/line/line-series.component';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {defaultSeriesTypeMapping} from '../../default/defaultSeriesTypeMapping';\n\n@Component({\n selector: '[teta-series-host]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeriesHostComponent<T extends BasePoint> implements OnInit, OnDestroy {\n @Input() config: IChartConfig;\n @Input() series: Series<T>;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {\n this.series.component =\n defaultSeriesTypeMapping.get(this.series.type) || LineSeriesComponent;\n }\n\n this._componentRef = this.viewContainerRef.createComponent(\n this.series.component\n );\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._componentRef.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init && (changes.hasOwnProperty('series') || changes.hasOwnProperty('config'))) {\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, withLatestFrom} from \"rxjs\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\nimport {ChartService} from \"../../service/chart.service\";\nimport {generateTicks} from \"../../core/utils/generate-ticks\";\nimport {IScalesMap} from \"../../model/i-scales-map\";\n\n@Component({\n selector: '[teta-gridlines]',\n templateUrl: './gridlines.component.html',\n styleUrls: ['./gridlines.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridlinesComponent implements AfterViewInit {\n\n @Input() size: DOMRect;\n\n config: Observable<IChartConfig>;\n tickYValues: Observable<number[]>;\n tickXValues: Observable<number[]>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(private svc: ScaleService, private chartService: ChartService) {\n this.config = this.chartService.config;\n\n this.tickYValues = this.svc.scales.pipe(\n withLatestFrom(this.config),\n map((_: [IScalesMap, IChartConfig]) => {\n const [scales, config] = _;\n const ratio = this.size.height / 40;\n return config.gridLines?.y?.ticksCount != null ? generateTicks(scales.y.get(0).scale.domain(), config.gridLines?.y?.ticksCount) : scales.y.get(0)?.scale.ticks(ratio);\n }));\n\n this.tickXValues = this.svc.scales.pipe(\n withLatestFrom(this.config),\n map((_: [IScalesMap, IChartConfig]) => {\n const [scales, config] = _;\n const ratio = this.size.width / 40;\n return config.gridLines?.x?.ticksCount != null ? generateTicks(scales.x.get(0).originDomain, config.gridLines?.x?.ticksCount) : scales.x.get(0)?.scale.ticks(ratio);\n }));\n\n this.y = this.svc.scales.pipe(map((_) => _.y.get(0)?.scale));\n this.x = this.svc.scales.pipe(map((_) => _.x.get(0)?.scale));\n }\n\n ngAfterViewInit() {\n\n }\n}\n","<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick) || 1\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick) || 1\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick) || 1\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick) || 1\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChange, SimpleChanges,\n} from '@angular/core';\nimport {Axis} from '../../core/axis/axis';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, withLatestFrom} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {getTextWidth} from '../../core/utils/get-text-width';\nimport * as d3 from 'd3';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-x-axis]',\n templateUrl: './x-axis.component.html',\n styleUrls: ['./x-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XAxisComponent implements OnInit, OnChanges, OnDestroy {\n x: Observable<any>;\n ticks: Observable<any[]>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private update$ = new BehaviorSubject<void>(null);\n private _alive = true;\n\n constructor(private scaleService: ScaleService, private _svc: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => {\n return _.x.get(this.axis.index)?.scale;\n }));\n\n\n this.ticks = combineLatest([this.x, this.update$]).pipe(\n withLatestFrom(this._svc.size),\n map((_: [[any, void], DOMRect]) => {\n const [[x], size] = _;\n\n const tickSize = x.ticks().map((_) => getTextWidth(this.axis.options.tickFormat ? this.axis.options.tickFormat(_) : this.axis.defaultFormatter()(_), 0.45, 11));\n return x.ticks(size.width / parseInt(d3.max(tickSize), 10) / 10);\n })\n );\n }\n\n getLabelTransform() {\n return `translate(${\n this.size.width / 2\n }, ${this.axis.options.opposite ? -32 : 32})`;\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('axis')) {\n this.update$.next();\n }\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, ticks: ticks | async} as data\">\n <svg:g text-anchor=\"middle\" *ngFor=\"let tick of data.ticks\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\" [attr.y]=\"axis.options.opposite ? 0 : 9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Axis } from '../../core/axis/axis';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: '[teta-y-axis]',\n templateUrl: './y-axis.component.html',\n styleUrls: ['./y-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YAxisComponent implements OnInit, AfterViewInit {\n\n y: Observable<any>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService) {\n this.y = this.scaleService.scales.pipe(map((_) => {\n return _.y.get(this.axis.index)?.scale\n }))\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n }\n\n getLabelTransform() {\n return `translate(${\n this.axis.options.opposite\n ? this.axis.selfSize\n : -this.axis.selfSize\n }, ${this.size.height / 2}) rotate(-90)`;\n }\n\n}\n","<ng-container *ngIf=\"y | async as scale\">\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\" *ngFor=\"let tick of scale.ticks()\" [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\" [attr.x]=\"axis.options.opposite ? 10 : -9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\" [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {PlotLine} from '../../model/plot-line';\nimport {Axis} from '../../core/axis/axis';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {ZoomService} from '../../service/zoom.service';\nimport {ScaleService} from '../../service/scale.service';\nimport * as d3 from 'd3';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-line]',\n templateUrl: './plotline.component.html',\n styleUrls: ['./plotline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotlineComponent implements OnInit, OnDestroy {\n @Input() plotLine: PlotLine;\n @Input() size: DOMRect;\n @Input() axis: Axis;\n @Input() scale: any;\n orientation = AxisOrientation;\n dragElements: any;\n\n private _domain: number[];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private scaleService: ScaleService,\n private chartService: ChartService,\n private element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n this._domain = this.scale.domain();\n\n const plotlineElement = d3\n .select(this.element.nativeElement)\n .select('.plotline');\n\n const grabElement = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotlineElement.attr('y1')};\n }\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotlineElement.attr('x1')};\n }\n });\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotLine, any>, d: PlotLine) => {\n d.value = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n if (d.max !== null && d.max !== undefined && d.value >= d.max) {\n d.value = d.max;\n }\n if (d.min !== null && d.min !== undefined && d.value <= d.min) {\n d.value = d.min;\n }\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotlineElement.datum<PlotLine>(this.plotLine);\n grabElement.datum<PlotLine>(this.plotLine);\n\n if (this.plotLine.draggable) {\n grabElement.call(drag);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n }\n\n emit(event: IChartEvent<PlotLine>) {\n this.chartService.emitPlotline(event);\n }\n\n get value() {\n return this.scale(this.plotLine.value);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n}\n","<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input, OnDestroy\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport {PlotBand} from '../../model/plot-band';\nimport {ScaleService} from '../../service/scale.service';\nimport {Axis} from '../../core/axis/axis';\nimport {ZoomService} from '../../service/zoom.service';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-band]',\n templateUrl: './plot-band.component.html',\n styleUrls: ['./plot-band.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotBandComponent implements AfterViewInit, OnDestroy {\n @Input() plotBand: PlotBand;\n @Input() axis: Axis;\n @Input() scale: any;\n @Input() size: DOMRect;\n\n orientation = AxisOrientation;\n resizeElements: any;\n dragElements: any;\n\n constructor(\n private scaleService: ScaleService,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private cdr: ChangeDetectorRef,\n private element: ElementRef\n ) {\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n emit(event: IChartEvent<PlotBand>) {\n this.chartService.emitPlotband(event);\n }\n\n ngAfterViewInit(): void {\n\n const plotbandElement = d3\n .select(this.element.nativeElement)\n .select('.plotband');\n\n const grabElements = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotbandElement.attr('x')};\n }\n\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotbandElement.attr('y')};\n }\n });\n\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n\n let bandSize = parseFloat(\n plotbandElement.attr(\n this.axis.orientation === AxisOrientation.x ? 'width' : 'height'\n )\n );\n\n d.from = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n d.to = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]] + bandSize\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n let grabberKey;\n this.resizeElements = d3\n .drag();\n\n const resize = this.resizeElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n if (event?.type === 'start') {\n const {grabber} = event?.sourceEvent?.target?.dataset;\n grabberKey = grabber;\n }\n\n const min = Math.min(...this.scale.domain());\n const max = Math.max(...this.scale.domain());\n\n const minValue = d.min ?? min;\n const maxValue = d.max ?? max;\n\n d[grabberKey] = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n if (grabberKey === 'from') {\n const borderMin = d.from <= minValue;\n\n if (d.from >= d.to) {\n d.from = d.to;\n }\n\n if (borderMin) {\n d.from = minValue;\n }\n }\n\n if (grabberKey === 'to') {\n const borderMax = d.to >= maxValue;\n\n if (borderMax) {\n d.to = maxValue;\n }\n\n if (d.to <= d.from) {\n d.to = d.from;\n }\n }\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotbandElement.datum<PlotBand>(this.plotBand);\n grabElements.datum<PlotBand>(this.plotBand);\n\n if (this.plotBand.draggable) {\n plotbandElement.call(drag);\n }\n\n if (this.plotBand.resizable) {\n grabElements.call(resize);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n this.resizeElements.on('start drag end', null);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n\n get from(): number {\n return this.scale(this.plotBand.from);\n }\n\n get to(): number {\n return this.scale(this.plotBand.to);\n }\n\n get bandSize(): number {\n return Math.abs(\n this.scale(this.plotBand.to) - this.scale(this.plotBand.from)\n );\n }\n\n getTextPosition = () => {\n let [min, max] = this.scale.domain();\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n const from = (this.plotBand.from as any) instanceof Date ? (this.plotBand.from as any).getTime() : this.plotBand.from;\n const to= (this.plotBand.to as any) instanceof Date ? (this.plotBand.to as any).getTime() : this.plotBand.to;\n const position = ((from <= min ? min : from) + (to >= max ? max : to)) / 2;\n return this.scale(position);\n }\n\n getFill(d: PlotBand): string {\n if (d.style?.plotBand?.patternImage) {\n return `url(#${d.style.plotBand?.patternImage})`;\n }\n return d.style.plotBand?.fill;\n }\n}\n","<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n class=\"label font-caption fill-text-90\"\n [attr.x]=\"getTextPosition()\"\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-caption fill-text-90\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextPosition()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {filter, map, Observable, tap} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport {IDisplayTooltip} from '../../model/i-display-tooltip';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {Series} from '../../model/series';\nimport * as d3 from 'd3';\nimport {Align, PositionUtil, VerticalAlign} from '@tetacom/ng-components';\n\n@Component({\n selector: 'teta-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements OnInit {\n @Input() size: DOMRect;\n @Input() config: IChartConfig;\n\n @ViewChild('tooltip', {static: false, read: ElementRef}) tooltip: ElementRef;\n\n position: Observable<{\n left?: number;\n top?: number;\n bottom?: number;\n right?: number;\n }>;\n\n displayTooltips: Observable<SafeHtml>;\n display: Observable<number>;\n tooltips: Observable<IDisplayTooltip[]>;\n\n constructor(\n private svc: ChartService,\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private sanitizer: DomSanitizer,\n private _zone: NgZone,\n private _elementRef: ElementRef\n ) {\n this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));\n }\n\n ngOnInit(): void {\n this.display = this.svc.pointerMove.pipe(\n map((event: PointerEvent) => {\n return event.type === 'mousemove' ? 1 : 0;\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n });\n })\n );\n\n this.position = this.svc.pointerMove.pipe(\n filter((event) => !!event),\n map((_) => {\n return this.getPosition(_);\n }),\n tap(() => this.cdr.detectChanges())\n );\n\n const transformHtml = (html): SafeHtml => {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n };\n\n const defaultFormatter = (tooltips: IDisplayTooltip[]): SafeHtml => {\n let html = '';\n const format = d3.timeFormat('%d.%m.%Y');\n tooltips.forEach((_) => {\n const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;\n\n html += `<div class=\"display-flex align-center\"><span class=\"margin-right-1\" style=\"${indicatorStyle}\"></span>\n <span class=\"font-title-3\">${_.series.name}\n <span class=\"font-body-3\">\n x: ${(_.point.x as any) instanceof Date ? format(_.point.x as any) : _.point.x?.toFixed(2)}\n y: ${(_.point.y as any) instanceof Date ? format(_.point.y as any) : _.point.y?.toFixed(2)}\n </span>\n </span></div>`;\n });\n\n return transformHtml(html);\n };\n\n const formatter = this.config?.tooltip?.format;\n\n this.displayTooltips = this.svc.tooltips.pipe(\n map((tooltips: Map<Series<any>, IDisplayTooltip>) => {\n const tooltipList = [...tooltips.values()];\n if (tooltipList?.length < 1) {\n return '';\n }\n const formatted = formatter\n ? transformHtml(formatter(tooltipList))\n : defaultFormatter(tooltipList);\n return formatted;\n })\n );\n }\n\n private getPosition(event: PointerEvent) {\n if (!this.tooltip) {\n return null;\n }\n return PositionUtil.getPosition(\n {\n top: event.pageY,\n bottom: event.pageY,\n left: event.pageX,\n right: event.pageX,\n },\n this.tooltip?.nativeElement?.getBoundingClientRect(),\n Align.auto,\n VerticalAlign.top,\n 12\n );\n }\n\n\n format(input: number | Date): string {\n if (input instanceof Date) {\n const format = d3.timeFormat('%d.%m.%Y');\n return format(input);\n }\n\n const format = d3.format(',.5~r');\n return format(input);\n }\n}\n","<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n","import {AfterViewInit, Directive, ElementRef, HostBinding, Input, NgZone, OnDestroy,} from '@angular/core';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {Axis} from '../core/axis/axis';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomBehavior, zoomIdentity} from 'd3';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ZoomMessage,} from '../model/i-broadcast-message';\nimport {takeWhile} from 'rxjs';\nimport {ChartService} from '../service/chart.service';\nimport {ZoomBehaviorType} from '../model/enum/zoom-behavior-type';\nimport {ScaleType} from \"../model/enum/scale-type\";\n\n@Directive({\n selector: '[tetaZoomable]',\n})\nexport class ZoomableDirective implements OnDestroy, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n @HostBinding('class.zoomable') private zoomable = false;\n @HostBinding('class.crosshair') private crosshair = false;\n\n private _element: d3.Selection<SVGElement, any, any, any>;\n private zoom: ZoomBehavior<any, any>;\n private alive = true;\n\n private currentTransform = zoomIdentity;\n\n constructor(\n private elementRef: ElementRef,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private zone: NgZone\n ) {\n }\n\n ngOnInit() {\n if (this.axis?.options?.zoom || this.config?.zoom?.enable) {\n this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;\n this.crosshair = this.config?.tooltip?.showCrosshair;\n }\n }\n\n ngAfterViewInit() {\n this.initZoomListeners();\n this.initZoomSync();\n }\n\n ngOnDestroy(): void {\n this.zoom?.on('zoom end', null);\n this._element?.on('wheel', null);\n this.alive = false;\n }\n\n private initZoomSync() {\n this.zoomService.zoomed.pipe(\n takeWhile(() => this.alive)\n ).subscribe((zoomed: ZoomMessage) => {\n if (this._element && this.elementRef !== zoomed?.element\n && zoomed?.axis?.index === this.axis.index\n && zoomed?.axis?.orientation === this.axis.orientation) {\n const scale = this.axis.scale.copy().domain(this.axis.originDomain);\n let transform;\n if (zoomed.domain === null) {\n transform = zoomIdentity;\n } else {\n transform =\n this.zoomService.getD3Transform(zoomed.domain, this.axis.originDomain, scale, this.axis.orientation, this.axis.options.inverted);\n }\n this._element.call(this.zoom.transform, transform);\n this.currentTransform = transform;\n }\n });\n }\n\n private initZoomListeners() {\n const enable =\n (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||\n this.config?.zoom?.enable;\n if (!enable) {\n return;\n }\n this._element = d3.select(this.elementRef.nativeElement);\n this.zoom = d3.zoom().extent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n\n const min = this.config?.zoom?.minTranslate != null\n ? this.axis.scale(this.config?.zoom?.minTranslate)\n : -Infinity;\n const max = (this.config?.zoom?.maxTranslate != null\n ? this.axis.scale(this.config?.zoom?.maxTranslate)\n : Infinity);\n if (this.axis.orientation === AxisOrientation.x && this.config.zoom.type === ZoomType.x) {\n this.zoom.translateExtent([\n [Math.min(min, max), -Infinity],\n [Math.max(min, max), Infinity],\n ]);\n }\n\n if (this.axis.orientation === AxisOrientation.y && this.config.zoom.type === ZoomType.y) {\n this.zoom.translateExtent([\n [-Infinity, Math.min(min, max)],\n [Infinity, Math.max(min, max)],\n ]);\n }\n\n if (this.config.zoom?.wheelDelta) {\n this.zoom.wheelDelta(this.config.zoom?.wheelDelta);\n }\n\n if (this.config?.zoom?.wheelFilter) {\n this.zoom.filter(this.config?.zoom?.wheelFilter)\n }\n\n if (this.axis.options.scaleType.type !== ScaleType.band) {\n const extremes = this.axis.extremes as number[];\n const maxZoom = this.config.zoom?.max\n ? (extremes[1] - extremes[0]) /\n this.config.zoom?.max\n : this.config.zoom?.limitZoomByData\n ? 1\n : 0;\n\n const minZoom = this.config.zoom?.min\n ? (extremes[1] - extremes[0]) /\n this.config.zoom?.min\n : Infinity;\n\n this.zoom.scaleExtent([maxZoom, minZoom]);\n }\n\n\n this.zoom.on('start zoom end', this.zoomed);\n this._element.call(this.zoom).on('dblclick.zoom', null);\n\n if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {\n this.runWheelTranslate();\n }\n }\n\n zoomed = (event: D3ZoomEvent<any, any>) => {\n if (event.sourceEvent) {\n if (Object.keys(event.sourceEvent).length !== 0) {\n const origin = this.axis.scale.copy().domain(this.axis.originDomain);\n if (this.axis.options.scaleType.type === ScaleType.band) {\n return\n }\n\n const domain =\n this.axis.orientation === AxisOrientation.y\n ? event.transform.rescaleY(origin).domain()\n : event.transform.rescaleX(origin).domain();\n if (domain[0] === null || domain[0] === undefined\n || domain[1] === null || domain[1] === undefined\n || Math.abs(domain[0] - domain[1]) < 0.000001) {\n return;\n }\n const message = new ZoomMessage({\n eventType: event.type,\n axis: {\n index: this.axis.index,\n orientation: this.axis.orientation,\n },\n element: this.elementRef,\n domain,\n chartId: this.config.id\n });\n this.zoomService.fireZoom(message);\n this.zoomService.broadcastZoom(message);\n }\n this.currentTransform = event.transform;\n }\n };\n\n private runWheelTranslate() {\n let type: 'start' | 'zoom' | 'end' = 'start';\n let wheeling;\n\n this.zoom\n .filter(\n (event) => {\n return (event.ctrlKey && event.type === 'wheel') ||\n Boolean(window.TouchEvent && event.type !== 'wheel');\n }\n )\n .wheelDelta((event) => {\n const delta =\n this.config?.zoom.type === ZoomType.x\n ? -event.deltaX\n : -event.deltaY;\n return delta * 0.002;\n });\n\n const emit = (type: string, event: WheelEvent) => {\n const origin = this.axis.scale.copy().domain(this.axis.originDomain);\n let transform = zoomIdentity;\n const delta =\n type === 'end'\n ? 0\n : this.axis.orientation === AxisOrientation.y\n ? event.deltaY\n : event.deltaX;\n\n if (this.axis.orientation === AxisOrientation.y) {\n transform = transform.translate(\n 0,\n this.currentTransform.y - delta / 2\n );\n }\n\n if (this.axis.orientation === AxisOrientation.x) {\n transform = transform.translate(\n this.currentTransform.x - delta / 2,\n 0\n );\n }\n\n transform = transform.scale(this.currentTransform.k);\n\n let domain =\n this.axis.orientation === AxisOrientation.y\n ? transform.rescaleY(origin).domain()\n : transform.rescaleX(origin).domain();\n\n const extent = this.axis.options?.inverted ? domain : [...domain].reverse();\n\n if (extent[0] <= this.config.zoom?.minTranslate) {\n return;\n }\n\n if (extent[1] >= this.config.zoom?.maxTranslate) {\n return;\n }\n\n const message = new ZoomMessage({\n eventType: type,\n element: this.elementRef,\n axis: {\n index: this.axis.index,\n orientation: this.axis.orientation\n },\n domain,\n chartId: this.config.id,\n });\n\n this._element?.call(this.zoom.transform, transform);\n this.zoomService.fireZoom(message);\n this.zoomService.broadcastZoom(message);\n this.currentTransform = transform;\n };\n\n this._element.on('wheel', (event: WheelEvent) => {\n\n\n event.preventDefault();\n if (event.ctrlKey) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n clearTimeout(wheeling);\n emit(type, event);\n type = 'zoom';\n wheeling = setTimeout(() => {\n emit('end', event);\n type = 'start';\n }, 50);\n });\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input, NgZone, OnChanges, OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BrushService} from '../service/brush.service';\nimport {ChartService} from '../service/chart.service';\nimport {Axis} from '../core/axis/axis';\nimport {BrushType} from '../model/enum/brush-type';\nimport * as d3 from 'd3';\nimport {BrushMessage} from '../model/i-broadcast-message';\nimport {filter, takeWhile} from 'rxjs';\n\n@Directive({\n selector: '[tetaBrushable]',\n})\nexport class BrushableDirective implements OnDestroy, OnInit, AfterViewInit, OnChanges {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n\n private selection: number[];\n private brush: d3.BrushBehavior<any>;\n private brushMap = new Map<BrushType, d3.BrushBehavior<any>>()\n .set(BrushType.x, d3.brushX())\n .set(BrushType.y, d3.brushY());\n private _alive = true;\n private _container;\n\n constructor(\n private brushService: BrushService,\n private chartService: ChartService,\n private element: ElementRef,\n private zone: NgZone\n ) {\n this._container = d3.select(this.element.nativeElement);\n }\n\n ngOnInit() {\n this.brushService.brushDomain.pipe(\n takeWhile(() => this._alive),\n filter((brush) => brush.chartId !== this.config.id)\n ).subscribe((brush) => {\n this._container.call(\n this.brush.move,\n [\n Math.floor(brush.selection[0]),\n Math.floor(brush.selection[1]),\n ].map(this.axis.scale)\n );\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n if(this.config?.brush?.enable) {\n const brushMessage = new BrushMessage({\n chartId: this.config.id,\n selection: [this.config?.brush?.from, this.config?.brush?.to],\n mode: 'init'\n });\n this.brushService.setBrush(brushMessage);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('config')) {\n this.clearPreviousSelection();\n }\n\n if (this.config?.brush?.enable) {\n this.applyBrush(\n this.config,\n this.axis.scale\n );\n }\n }\n\n applyBrush(config: IChartConfig, brushScale: any) {\n this.brush?.on('start brush end', null);\n if (config.brush?.enable) {\n this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);\n this.brush.on('start brush end', (_: d3.D3BrushEvent<any>) => {\n if (_.sourceEvent) {\n if (!_.selection) return;\n const [from, to] = _.selection as number[];\n if (to - from === 0) {\n const selection: number[] =\n this.selection?.map(brushScale) ??\n [config.brush?.from, config.brush?.to].map(brushScale);\n const halfBrushHeight = (selection[1] - selection[0]) / 2;\n const invertedSelection: number[] = [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ].map(brushScale.invert);\n\n if (\n invertedSelection[1] - invertedSelection[0] >\n config.brush?.max\n ) {\n this._container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.floor(invertedSelection[0] + config.brush?.max),\n ].map(brushScale)\n );\n return;\n }\n\n if (\n invertedSelection[1] - invertedSelection[0] <\n config.brush?.min\n ) {\n this._container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.ceil(invertedSelection[0] + config.brush?.min),\n ].map(brushScale)\n );\n return;\n }\n\n this._container.call(this.brush.move, [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ]);\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) >\n config.brush?.max\n ) {\n this._container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.max,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) <\n config.brush?.min\n ) {\n this._container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.min,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (_.sourceEvent instanceof MouseEvent) {\n this.selection = _.selection.map(brushScale.invert);\n }\n\n const brushMessage = new BrushMessage({\n chartId: this.config.id,\n selection: [brushScale.invert(from), brushScale.invert(to)],\n mode: _.mode\n });\n this.brushService.setBrush(brushMessage);\n }\n });\n\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this._container.call(this.brush);\n\n let domain = brushScale.domain();\n\n if (config?.brush?.from) {\n domain[0] = config.brush.from;\n }\n\n if (config?.brush?.to) {\n domain[1] = config.brush.to;\n }\n\n this._container.call(\n this.brush.move,\n this.selection\n ? this.selection.map(brushScale)\n : domain.map(brushScale),\n {}\n );\n }, 0);\n });\n }\n }\n\n clearPreviousSelection() {\n this.selection = null;\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef, HostListener,\n Input, OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {Annotation} from '../../model/annotation';\nimport * as d3 from 'd3';\nimport {map, Observable} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-annotation]',\n templateUrl: './annotation.component.html',\n styleUrls: ['./annotation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AnnotationComponent implements OnDestroy {\n @Input() set annotation(annotation: Annotation) {\n this._annotation = annotation;\n }\n\n get annotation(): Annotation {\n return this._annotation;\n }\n\n @ViewChild('annotationNode', {static: false})\n set node(node: ElementRef) {\n this._node = node;\n this.init();\n this.cdr.detectChanges();\n }\n\n get node() {\n return this._node;\n }\n\n x: Observable<any>;\n y: Observable<any>;\n\n private drag: d3.DragBehavior<any, any, any>;\n private _annotation: Annotation;\n private _node: ElementRef;\n\n constructor(\n private scaleService: ScaleService,\n private cdr: ChangeDetectorRef,\n private chartService: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => _.x.get(this.annotation.xAxisIndex ?? 0)?.scale));\n this.y = this.scaleService.scales.pipe(map((_) => _.y.get(this.annotation.yAxisIndex ?? 0)?.scale));\n this.drag = d3.drag();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n\n ngOnDestroy() {\n this.drag.on('drag end', null);\n }\n\n private init() {\n\n d3.select(this.node.nativeElement).datum(this.annotation);\n\n if (this.annotation.draggable) {\n this.drag.on('drag end', (event, d: Annotation) => {\n d.dx += event.dx;\n d.dy += event.dy;\n this.cdr.detectChanges();\n this.chartService.emitMoveAnnotation({\n event,\n target: d\n });\n });\n d3.select(this.node.nativeElement).call(this.drag);\n }\n }\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-text-90)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n </ng-container>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n","import {ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, tap} from \"rxjs\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-crosshair]',\n templateUrl: './crosshair.component.html',\n styleUrls: ['./crosshair.component.scss']\n})\nexport class CrosshairComponent implements OnInit {\n\n @Input() size: DOMRect;\n transform: Observable<any>;\n\n constructor(private scaleService: ScaleService, private chartService: ChartService, private cdr: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this.transform = this.chartService.pointerMove.pipe(\n map((event: PointerEvent) => {\n return {\n x: event.type === 'mouseleave' ? -9999 : event.offsetX,\n y: event.type === 'mouseleave' ? -9999 : event.offsetY\n }\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n\n })\n )\n\n }\n\n}\n","<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from '../service/chart.service';\nimport {\n combineLatest,\n map,\n Observable,\n shareReplay,\n withLatestFrom,\n} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {BrushType} from '../model/enum/brush-type';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {tetaZoneFull} from '@tetacom/ng-components';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {Series} from \"../model/series\";\nimport {BasePoint} from \"../model/base-point\";\n\ntype Opposite = boolean;\n\n@Component({\n selector: 'teta-chart-container',\n templateUrl: './chart-container.component.html',\n styleUrls: ['./chart-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartContainerComponent implements OnInit, OnDestroy {\n config: Observable<IChartConfig>;\n scales: Observable<IScalesMap>;\n size: Observable<DOMRect>;\n visibleRect: Observable<any>;\n brushScale: Observable<any>;\n zoomType = ZoomType;\n\n private _observer: ResizeObserver;\n private filterPositionMap = new Map<Opposite,\n (axis: Axis) => (_: Axis) => boolean>()\n .set(\n true,\n (axis) => (_: Axis) =>\n _.options.opposite && _.options.visible && axis.index <= _.index\n )\n .set(\n false,\n (axis) => (_: Axis) =>\n _.options.opposite !== true &&\n _.options.visible &&\n _.index <= axis.index\n );\n\n constructor(\n private _svc: ChartService,\n private _cdr: ChangeDetectorRef,\n private _scaleService: ScaleService,\n private _zoomService: ZoomService,\n private _elementRef: ElementRef,\n private _zone: NgZone\n ) {\n this.config = this._svc.config;\n this.size = this._svc.size;\n\n this.scales = this._scaleService.scales.pipe(\n // observeOn(animationFrameScheduler),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.brushScale = this._scaleService.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n\n return config.brush?.type === BrushType.x || config?.zoom?.type === ZoomType.x ? x.get(0)?.scale : y.get(0)?.scale;\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.visibleRect = combineLatest([this.size, this.scales, this.config])\n .pipe(\n map(\n (\n data: [DOMRect, IScalesMap, IChartConfig]\n ) => {\n const [size, {x, y}, config] = data;\n const yAxesArray = Array.from(y.values());\n const xAxesArray = Array.from(x.values());\n const left = yAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const right = yAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const bottom = xAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const top = xAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n return {\n x: left + config.bounds?.left,\n y: top + config.bounds?.top,\n width:\n size.width -\n left -\n right -\n config.bounds?.left -\n config.bounds?.right,\n height:\n size.height -\n top -\n bottom -\n config.bounds?.top -\n config.bounds?.bottom,\n };\n }\n ),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n this._observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n requestAnimationFrame(() => {\n if (\n !Array.isArray(entries) ||\n !entries.length ||\n entries[0].contentRect.width <= 0 ||\n entries[0].contentRect.height <= 0\n ) {\n return;\n }\n this._svc.setSize(entries[0].contentRect);\n });\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this._observer.unobserve(this._elementRef.nativeElement);\n this._observer.disconnect();\n }\n\n private sumSize = (acc, curr) => acc + curr.selfSize;\n\n getTranslate(axis?: Axis, size?: DOMRect): Observable<string> {\n return this.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n const xAxesArray = Array.from(x.values());\n const yAxesArray = Array.from(y.values());\n\n const oppositeFilter = this.filterPositionMap.get(true);\n const nonOppositeFilter = this.filterPositionMap.get(false);\n\n const oppositeOffsetY = yAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeTranslateY = oppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.right\n );\n const nonOppisteTranslateY = nonOppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.left\n );\n\n const oppositeTranslateX = oppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.top\n );\n\n const nonOppisteTranslateX = nonOppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.bottom\n );\n\n const left = yAxesArray\n .filter((_) => _.options.visible && _.options.opposite !== true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);\n\n const top = xAxesArray\n .filter((_) => _.options.visible && _.options.opposite === true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);\n\n if (axis.orientation === AxisOrientation.x) {\n return `translate(${left}, ${\n axis.options.opposite\n ? oppositeTranslateX\n : size.height - nonOppisteTranslateX\n })`;\n }\n\n if (axis.orientation === AxisOrientation.y) {\n return `translate(${\n axis.options.opposite\n ? size.width - oppositeTranslateY\n : nonOppisteTranslateY\n }, ${top})`;\n }\n\n return 'translate(0, 0)';\n })\n );\n }\n\n identify(index, item) {\n return item.value.index;\n }\n\n click(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartClick({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n contextMenu(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartContextMenu({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n mouseMove(event) {\n this._svc.setPointerMove(event);\n }\n\n mouseLeave(event) {\n this._svc.setPointerMove(event);\n }\n\n trackSerie(index, item: Series<BasePoint>) {\n return item.name?.length ? item.name : index\n }\n}\n","<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container\n *ngIf=\"data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length\">\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series;\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Series } from '../model/series';\nimport { BasePoint } from '../model/base-point';\nimport { SeriesType } from '../model/enum/series-type';\nimport {ChartService} from \"../service/chart.service\";\n\n@Component({\n selector: 'teta-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendComponent {\n private sizeMapping = new Map<SeriesType, number>()\n .set(SeriesType.line, 2)\n .set(SeriesType.scatter, 2)\n .set(SeriesType.bar, 12)\n .set(SeriesType.area, 2)\n .set(SeriesType.block, 12)\n .set(SeriesType.blockArea, 2);\n\n @Input() series: Array<Series<BasePoint>>;\n @HostBinding('class.padding-bottom-4') classLegend = true;\n\n constructor(private chartService: ChartService) {}\n\n getHeight(serie: Series<BasePoint>) {\n return this.sizeMapping.get(serie.type ?? SeriesType.line);\n }\n\n click(serie: Series<BasePoint>) {\n this.chartService.toggleVisibilitySeries([serie.id]);\n }\n}\n","<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BasePoint} from '../model/base-point';\nimport {ZoomService} from '../service/zoom.service';\nimport {ScaleService} from '../service/scale.service';\nimport {BrushService} from '../service/brush.service';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {PlotLine} from '../model/plot-line';\nimport {PlotBand} from '../model/plot-band';\nimport {IPointMove} from '../model/i-point-move';\nimport {map, Observable, takeWhile, withLatestFrom} from 'rxjs';\nimport {Annotation} from '../model/annotation';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {ScaleType} from \"../model/enum/scale-type\";\n\n@Component({\n selector: 'teta-svg-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartService, ZoomService, ScaleService, BrushService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent implements OnInit, OnChanges, OnDestroy {\n hasSeriesData: Observable<boolean>;\n svcConfig: Observable<IChartConfig>;\n @Output()\n pointerMove: EventEmitter<IChartEvent<Map<number, number>>> = new EventEmitter<IChartEvent<Map<number, number>>>();\n\n @Output()\n plotBandsMove: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandClick: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandContextMenu: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotLinesMove: EventEmitter<IChartEvent<PlotLine>> = new EventEmitter<IChartEvent<PlotLine>>();\n\n @Output()\n pointMove: EventEmitter<IChartEvent<IPointMove>> = new EventEmitter<IChartEvent<IPointMove>>();\n\n @Output()\n chartClick: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n chartContextMenu: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n annotationContextMenu: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationClick: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationMove: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n zoomServiceInstance: EventEmitter<ZoomService> = new EventEmitter<ZoomService>();\n\n @Output()\n brushServiceInstance: EventEmitter<BrushService> = new EventEmitter<BrushService>();\n\n @Input() set config(config: IChartConfig) {\n this.chartService.setConfig(config);\n this.zoomService.setBroadcastChannel(config?.zoom?.syncChannel);\n }\n\n private _alive = true;\n\n constructor(public chartService: ChartService,\n public zoomService: ZoomService,\n public brushService: BrushService,\n public scaleService: ScaleService) {\n this.svcConfig = this.chartService.config;\n this.hasSeriesData = this.svcConfig.pipe(\n map(\n (_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)\n )\n );\n }\n\n resetZoom() {\n this.scaleService.resetZoom();\n }\n\n // setZoom() {\n // this.zoomService.fireZoom()\n // }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngOnInit(): void {\n this.zoomServiceInstance.emit(this.zoomService);\n this.brushServiceInstance.emit(this.brushService);\n\n this.chartService.pointerMove\n .pipe(\n takeWhile(() => this._alive),\n withLatestFrom(this.scaleService.scales, this.chartService.config)\n )\n .subscribe((data: [PointerEvent, IScalesMap, IChartConfig]) => {\n const [event, {x, y}, config] = data;\n const tooltipTracking = config?.tooltip?.tracking;\n if (tooltipTracking === TooltipTracking.y) {\n const result = new Map<number, number>();\n y.forEach((value, key) => {\n if (value.options.scaleType.type === ScaleType.band) {\n return;\n }\n result.set(key, value.scale.invert(event.offsetY));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n } else {\n const result = new Map<number, number>();\n x.forEach((value, key) => {\n if (value.options.scaleType.type === ScaleType.band) {\n return;\n }\n result.set(key, value.scale.invert(event.offsetX));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n }\n });\n\n this.chartService.plotBandEvent\n .pipe(\n takeWhile(() => this._alive)\n )\n .subscribe((_) => {\n this.plotBandsMove.emit(_);\n });\n\n this.chartService.plotLineMove.pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.plotLinesMove.emit(_);\n });\n\n this.chartService.pointMove.pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.pointMove.emit(_);\n });\n\n this.chartService.chartClick\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartClick.emit(_);\n });\n\n this.chartService.chartContextMenu\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartContextMenu.emit(_);\n });\n\n this.chartService.plotBandClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandClick.emit(_);\n });\n\n this.chartService.plotBandContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandContextMenu.emit(_);\n });\n\n this.chartService.annotationContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationContextMenu.emit(_);\n });\n\n this.chartService.annotationClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationClick.emit(_);\n });\n\n this.chartService.annotationMove\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationMove.emit(_);\n });\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n","import {ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {SeriesBaseComponent} from \"../../base/series-base.component\";\nimport {BasePoint} from \"../../model/base-point\";\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {ZoomService} from \"../../service/zoom.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: 'svg:svg[teta-bandseries]',\n templateUrl: './bandseries.component.html',\n styleUrls: ['./bandseries.component.scss']\n})\nexport class BandseriesComponent extends SeriesBaseComponent<BasePoint> implements OnInit {\n\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex)?.scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex)?.scale));\n\n\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, y: y | async} as scales\">\n <ng-container *ngFor=\"let band of _series.data\">\n <svg:rect [attr.x]=\"scales.x(band.x)\"\n [attr.y]=\"scales.y(band.y) - scales.y.bandwidth() / 2\"\n [attr.width]=\"scales.x(band.x1) - scales.x(band.x)\"\n fill=\"red\"\n [attr.height]=\"scales.y.bandwidth()\">\n </svg:rect>\n <svg:text\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n class=\"label font-caption fill-text-90\"\n [attr.x]=\"scales.x(band.x) + (scales.x(band.x1) - scales.x(band.x)) / 2\"\n [attr.y]=\"scales.y(band.y)\">{{band.y}}\n </svg:text>\n </ng-container>\n\n</ng-container>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChartComponent} from './chart/chart.component';\nimport {SeriesHostComponent} from './chart-container/series-host/series-host.component';\nimport {ChartContainerComponent} from './chart-container/chart-container.component';\nimport {LegendComponent} from './legend/legend.component';\nimport {SeriesBaseComponent} from './base/series-base.component';\nimport {LineSeriesComponent} from './chart-container/series/line/line-series.component';\nimport {GridlinesComponent} from './chart-container/gridlines/gridlines.component';\nimport {XAxisComponent} from './chart-container/x-axis/x-axis.component';\nimport {YAxisComponent} from './chart-container/y-axis/y-axis.component';\nimport {PlotlineComponent} from './chart-container/plotline/plotline.component';\nimport {PlotBandComponent} from './chart-container/plotband/plot-band.component';\nimport {BarSeriesComponent} from './chart-container/series/bar/bar-series.component';\nimport {TooltipComponent} from './chart-container/tooltip/tooltip.component';\nimport {ZoomableDirective} from './directives/zoomable.directive';\nimport {BrushableDirective} from './directives/brushable.directive';\nimport {ScatterSeriesComponent} from './chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from './chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from './chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from './chart-container/series/area-series/area-series.component';\nimport {AnnotationComponent} from './chart-container/annotation/annotation.component';\nimport {LinearSeriesBase} from './chart-container/series/linear-series-base';\nimport {CrosshairComponent} from './chart-container/crosshair/crosshair.component';\nimport {LetModule} from '@tetacom/ng-components';\nimport {DraggablePointDirective} from './directives/draggable-point.directive';\nimport { BandseriesComponent } from './stories/bandseries/bandseries.component';\n\n@NgModule({\n declarations: [\n ChartComponent,\n SeriesHostComponent,\n ChartContainerComponent,\n LegendComponent,\n SeriesBaseComponent,\n LinearSeriesBase,\n LineSeriesComponent,\n GridlinesComponent,\n XAxisComponent,\n YAxisComponent,\n PlotlineComponent,\n PlotBandComponent,\n BarSeriesComponent,\n TooltipComponent,\n ZoomableDirective,\n BrushableDirective,\n AreaSeriesComponent,\n ScatterSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n AnnotationComponent,\n CrosshairComponent,\n DraggablePointDirective,\n BandseriesComponent,\n ],\n exports: [\n ChartComponent,\n LegendComponent,\n SeriesBaseComponent,\n LineSeriesComponent,\n BarSeriesComponent,\n ScatterSeriesComponent,\n AreaSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n ],\n imports: [CommonModule, LetModule],\n})\nexport class ChartModule {\n}\n","import { SvgAttributes } from './svg-attributes';\n\nexport class PlotBand {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.from = options?.from;\n this.to = options?.to;\n this.label = options?.label;\n this.showGrabbers =\n options?.showGrabbers != null ? options.showGrabbers : true;\n this.draggable = options?.draggable != null ? options?.draggable : false;\n this.resizable = options?.resizable != null ? options?.resizable : true;\n this.min = options?.min;\n this.max = options?.max;\n this.style = options?.style;\n }\n}\n","import {SvgAttributes} from './svg-attributes';\n\nexport class PlotLine {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.value = options?.value;\n this.label = options?.label;\n this.min = options?.min;\n this.max = options?.max;\n this.draggable = options?.draggable;\n this.style = options?.style;\n }\n}\n","/*\n * Public API Surface of chart\n */\n\nexport * from './chart/chart.module';\nexport * from './chart/service/public-api';\nexport * from './chart/base/series-base.component';\nexport * from './chart/chart/chart.component';\nexport * from './chart/legend/legend.component';\nexport * from './chart/model/public-api';\nexport * from './chart/chart-container/series/public-api';\nexport * from './chart/core/axis/axis';\nexport * from './chart/core/utils/public-api'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BroadcastService","i2.ChartService","i1.ChartService","i2.ZoomService","i2.ScaleService","i3.ZoomService","i5.DraggablePointDirective","i1.ScaleService","i3","i2","i1.ZoomService","i3.ChartService","i1.BrushService","i5.SeriesHostComponent","i6.GridlinesComponent","i7.XAxisComponent","i8.YAxisComponent","i9.PlotlineComponent","i10.PlotBandComponent","i11.TooltipComponent","i12.ZoomableDirective","i13.BrushableDirective","i14.AnnotationComponent","i15.CrosshairComponent","i3.BrushService","i4.ScaleService","i5","i6.ChartContainerComponent","i7.LegendComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tetacom-svg-charts.mjs","sources":["../../src/chart/model/enum/zoom-type.ts","../../src/chart/model/chart-bounds.ts","../../src/chart/model/enum/tooltip-tracking.ts","../../src/chart/model/enum/zoom-behavior-type.ts","../../src/chart/default/default-chart-config.ts","../../src/chart/model/enum/scale-type.ts","../../src/chart/default/default-axis-config.ts","../../src/chart/model/enum/series-type.ts","../../src/chart/model/enum/fill-type.ts","../../src/chart/model/enum/clip-points-direction.ts","../../src/chart/default/default-series-config.ts","../../src/chart/service/chart.service.ts","../../src/chart/model/enum/axis-orientation.ts","../../src/chart/service/broadcast.service.ts","../../src/chart/service/zoom.service.ts","../../src/chart/core/utils/get-text-width.ts","../../src/chart/core/utils/generate-ticks.ts","../../src/chart/core/axis/builders/axis-size-builder.ts","../../src/chart/core/axis/builders/extremes-builder.ts","../../src/chart/core/axis/axis.ts","../../src/chart/model/i-broadcast-message.ts","../../src/chart/service/scale.service.ts","../../src/chart/service/brush.service.ts","../../src/chart/model/enum/brush-type.ts","../../src/chart/base/series-base.component.ts","../../src/chart/chart-container/series/linear-series-base.ts","../../src/chart/model/enum/drag-point-type.ts","../../src/chart/directives/draggable-point.directive.ts","../../src/chart/chart-container/series/line/line-series.component.ts","../../src/chart/chart-container/series/line/line-series.component.html","../../src/chart/chart-container/series/bar/bar-series.component.ts","../../src/chart/chart-container/series/bar/bar-series.component.html","../../src/chart/chart-container/series/scatter-series/scatter-series.component.ts","../../src/chart/chart-container/series/scatter-series/scatter-series.component.html","../../src/chart/chart-container/series/block-series/block-series.component.ts","../../src/chart/chart-container/series/block-series/block-series.component.html","../../src/chart/chart-container/series/block-area-series/block-area-series.component.ts","../../src/chart/chart-container/series/block-area-series/block-area-series.component.html","../../src/chart/chart-container/series/area-series/area-series.component.ts","../../src/chart/chart-container/series/area-series/area-series.component.html","../../src/chart/default/defaultSeriesTypeMapping.ts","../../src/chart/chart-container/series-host/series-host.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.html","../../src/chart/chart-container/x-axis/x-axis.component.ts","../../src/chart/chart-container/x-axis/x-axis.component.html","../../src/chart/chart-container/y-axis/y-axis.component.ts","../../src/chart/chart-container/y-axis/y-axis.component.html","../../src/chart/chart-container/plotline/plotline.component.ts","../../src/chart/chart-container/plotline/plotline.component.html","../../src/chart/chart-container/plotband/plot-band.component.ts","../../src/chart/chart-container/plotband/plot-band.component.html","../../src/chart/chart-container/tooltip/tooltip.component.ts","../../src/chart/chart-container/tooltip/tooltip.component.html","../../src/chart/directives/zoomable.directive.ts","../../src/chart/directives/brushable.directive.ts","../../src/chart/chart-container/annotation/annotation.component.ts","../../src/chart/chart-container/annotation/annotation.component.html","../../src/chart/chart-container/crosshair/crosshair.component.ts","../../src/chart/chart-container/crosshair/crosshair.component.html","../../src/chart/chart-container/chart-container.component.ts","../../src/chart/chart-container/chart-container.component.html","../../src/chart/legend/legend.component.ts","../../src/chart/legend/legend.component.html","../../src/chart/chart/chart.component.ts","../../src/chart/chart/chart.component.html","../../src/chart/stories/bandseries/bandseries.component.ts","../../src/chart/stories/bandseries/bandseries.component.html","../../src/chart/chart.module.ts","../../src/chart/model/plot-band.ts","../../src/chart/model/plot-line.ts","../../src/public-api.ts","../../src/tetacom-svg-charts.ts"],"sourcesContent":["export enum ZoomType {\n x,\n y,\n xy,\n}\n","export class ChartBounds {\n top?: number = 0;\n right?: number = 0;\n bottom?: number = 0;\n left?: number = 0;\n\n constructor(options?: {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n }) {\n this.top = options?.top || 0;\n this.right = options?.right || 0;\n this.bottom = options?.bottom || 0;\n this.left = options?.left || 0;\n }\n}\n","export enum TooltipTracking {\n x,\n y,\n}\n","export enum ZoomBehaviorType {\n move,\n wheel\n}\n","import {IChartConfig} from '../model/i-chart-config';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {ChartBounds} from '../model/chart-bounds';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {ZoomBehaviorType} from \"../model/enum/zoom-behavior-type\";\n\nexport const defaultChartConfig = (): IChartConfig => ({\n name: null,\n zoom: {\n enable: true,\n type: ZoomType.x,\n syncType: ZoomType.xy,\n zoomBehavior: ZoomBehaviorType.move\n },\n bounds: new ChartBounds({\n bottom: 12,\n left: 12,\n top: 12,\n right: 12\n }),\n legend: {\n enable: true,\n },\n tooltip: {\n enable: true,\n showMarkers: true,\n tracking: TooltipTracking.x,\n showCrosshair: false,\n padding: {\n x: 16,\n y: 16\n }\n },\n xAxis: [],\n yAxis: [],\n series: [],\n gridLines: {\n enable: true\n }\n});\n","export enum ScaleType {\n linear,\n log,\n symlog,\n pow,\n sqrt,\n time,\n band\n}\n","import { AxisOptions } from '../model/axis-options';\nimport { ScaleType } from '../model/enum/scale-type';\n\nexport const defaultAxisConfig: AxisOptions = {\n visible: true,\n zoom: true,\n scaleType: {\n type: ScaleType.linear,\n },\n niceTicks: false,\n};\n","export enum SeriesType {\n line,\n bar,\n area,\n scatter,\n block,\n blockArea\n}\n","export enum FillType {\n default,\n gradient,\n}\nexport enum FillDirection {\n x,\n y,\n}\n","export enum ClipPointsDirection {\n x,\n y,\n none\n}\n\n","import {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {SeriesType} from '../model/enum/series-type';\nimport {FillType} from '../model/enum/fill-type';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\nexport const defaultSeriesConfig = (): Series<BasePoint> => ({\n data: [],\n type: SeriesType.line,\n xAxisIndex: 0,\n yAxisIndex: 0,\n fillType: FillType.default,\n color: 'coral',\n visible: true,\n clipPointsDirection: ClipPointsDirection.x\n});\n","import {Injectable} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {\n BehaviorSubject,\n filter,\n lastValueFrom,\n map,\n Observable,\n of,\n shareReplay,\n Subject,\n take,\n withLatestFrom,\n} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {IDisplayTooltip} from '../model/i-display-tooltip';\nimport {PlotBand} from '../model/plot-band';\nimport {PlotLine} from '../model/plot-line';\nimport {IPointMove} from '../model/i-point-move';\nimport {defaultChartConfig} from '../default/default-chart-config';\nimport {defaultAxisConfig} from '../default/default-axis-config';\nimport {defaultSeriesConfig} from '../default/default-series-config';\nimport {BasePoint} from '../model/base-point';\nimport {Series} from '../model/series';\nimport {Annotation} from '../model/annotation';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n public id: Observable<string>;\n public config: Observable<IChartConfig>;\n public size: Observable<DOMRect>;\n public pointerMove: Observable<PointerEvent>;\n public tooltips: Observable<Map<Series<BasePoint>, IDisplayTooltip>>;\n public plotBandEvent: Observable<IChartEvent<PlotBand>>;\n public plotLineMove: Observable<IChartEvent<PlotLine>>;\n public plotBandClick: Observable<IChartEvent<PlotBand>>;\n public plotBandContextMenu: Observable<IChartEvent<PlotBand>>;\n public pointMove: Observable<IChartEvent<IPointMove>>;\n public annotationMove: Observable<IChartEvent<Annotation>>;\n public annotationClick: Observable<IChartEvent<Annotation>>;\n public annotationContextMenu: Observable<IChartEvent<Annotation>>;\n public chartClick: Observable<IChartEvent<BasePoint>>;\n public chartContextMenu: Observable<IChartEvent<BasePoint>>;\n\n private config$ = new BehaviorSubject<IChartConfig>(defaultChartConfig());\n private size$ = new BehaviorSubject<DOMRect>(null);\n private pointerMove$ = new Subject<PointerEvent>();\n private tooltips$ = new BehaviorSubject<Map<Series<BasePoint>, IDisplayTooltip>>(new Map());\n private plotBandEvent$ = new Subject<IChartEvent<PlotBand>>();\n private plotLineMove$ = new Subject<IChartEvent<PlotLine>>();\n private pointMove$ = new Subject<IChartEvent<IPointMove>>();\n private chartClick$ = new Subject<IChartEvent<BasePoint>>();\n private chartContextMenu$ = new Subject<IChartEvent<BasePoint>>();\n private annotationEvent$ = new Subject<IChartEvent<Annotation>>();\n private annotationMove$ = new Subject<IChartEvent<Annotation>>();\n\n\n private static _hiddenSeriesPostfix = 'hidden_series';\n\n constructor() {\n this.id = of((Date.now() + Math.random()).toString(36));\n\n this.config = this.config$.asObservable().pipe(\n withLatestFrom(this.id),\n map(this.setDefaults),\n map(this.setPreparationData),\n map(this.restoreLocalStorage),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.size = this.size$.asObservable().pipe(filter((size) => size != null));\n this.pointerMove = this.pointerMove$.asObservable();\n this.tooltips = this.tooltips$.asObservable();\n this.plotBandEvent = this.plotBandEvent$.asObservable();\n this.plotLineMove = this.plotLineMove$.asObservable();\n this.pointMove = this.pointMove$.asObservable();\n this.chartClick = this.chartClick$.asObservable();\n this.chartContextMenu = this.chartContextMenu$.asObservable();\n this.annotationClick = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.annotationContextMenu = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.annotationMove = this.annotationMove$.asObservable();\n\n this.plotBandClick = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.plotBandContextMenu = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n // this.zoomInstance = this.zoomInstance$.asObservable();\n // this.brushInstance = this.brushInstance$.asObservable();\n }\n\n public setConfig(config: IChartConfig) {\n this.clearTooltips();\n this.config$.next(config);\n }\n\n public setSize(size: DOMRect) {\n this.size$.next(size);\n }\n\n public setPointerMove(event: PointerEvent) {\n this.pointerMove$.next(event);\n }\n\n public setTooltip(tooltip: IDisplayTooltip) {\n const currentTooltips = this.tooltips$.value;\n if (!tooltip.point) {\n currentTooltips.delete(tooltip.series);\n } else {\n currentTooltips.set(tooltip.series, tooltip);\n }\n this.tooltips$.next(\n new Map<Series<BasePoint>, IDisplayTooltip>(currentTooltips)\n );\n }\n\n public clearTooltips() {\n this.tooltips$.next(new Map());\n }\n\n public async toggleVisibilitySeries(seriesIndex: Array<number | string>, visible?: boolean) {\n\n if (seriesIndex?.length === 0) {\n return;\n }\n\n const currentConfig = await lastValueFrom(this.config.pipe(take(1)));\n\n seriesIndex.forEach((serieIndex) => {\n const currentSerieIndex = currentConfig.series.findIndex((_) => _.id === serieIndex);\n\n if (currentSerieIndex === -1) {\n return;\n }\n currentConfig.series[currentSerieIndex].visible = visible !== undefined ? visible : !currentConfig.series[currentSerieIndex].visible;\n\n const seriesLinkCount = currentConfig.series.filter((_) => _.yAxisIndex === currentConfig.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n currentConfig.yAxis[currentConfig.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n })\n\n try {\n this.saveCookie(currentConfig);\n } finally {\n this.config$.next(currentConfig);\n }\n }\n\n public emitMoveAnnotation(event: IChartEvent<Annotation>) {\n this.annotationMove$.next(event);\n }\n\n public emitAnnotation(event: IChartEvent<Annotation>) {\n this.annotationEvent$.next(event);\n }\n\n public emitPlotband(event: IChartEvent<PlotBand>) {\n this.plotBandEvent$.next(event);\n }\n\n public emitPlotline(event: IChartEvent<PlotLine>) {\n this.plotLineMove$.next(event);\n }\n\n public emitPoint(event: IChartEvent<IPointMove>) {\n this.pointMove$.next(event);\n }\n\n public emitChartClick(event: IChartEvent<BasePoint>) {\n this.chartClick$.next(event);\n }\n\n public emitChartContextMenu(event: IChartEvent<BasePoint>) {\n this.chartContextMenu$.next(event);\n }\n\n // public emitZoomInstance(event: ZoomService) {\n // this.zoomInstance$.next(event);\n // }\n //\n // public emitZoomInstance(event: ZoomService) {\n // this.zoomInstance$.next(event);\n // }\n\n private saveCookie(config: IChartConfig) {\n if(!config.name) return;\n const hiddenSeries = config.series?.filter((_) => !_.visible).map((_) => _.id);\n localStorage.setItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`, JSON.stringify(hiddenSeries))\n }\n\n private restoreLocalStorage(config: IChartConfig): IChartConfig {\n if(!config.name) return config;\n\n const hiddenSeries = localStorage.getItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`);\n if (hiddenSeries) {\n const json = JSON.parse(hiddenSeries) as Array<string | number>;\n config.series = config.series.map((serie, index) => {\n serie.visible = !json.includes(serie.id);\n\n const currentSerieIndex = config.series.findIndex((_) => _.id === serie.id);\n\n if (currentSerieIndex !== -1) {\n const seriesLinkCount = config.series.filter((_) => _.yAxisIndex === config.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n config.yAxis[config.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n }\n\n\n return serie;\n });\n\n\n return config\n }\n\n return config\n }\n\n private setDefaults(data: [IChartConfig, string]): IChartConfig {\n\n let [config, id] = data;\n\n const defaultConfig = (defaultConfig) => {\n return (source) => {\n return Object.assign({}, defaultConfig, source);\n };\n };\n\n config = Object.assign({}, defaultChartConfig(), config);\n config.id = config.id ?? id;\n\n config.xAxis = config.xAxis.map(defaultConfig(defaultAxisConfig));\n config.yAxis = config.yAxis.map(defaultConfig(defaultAxisConfig));\n config.series = config.series.map(defaultConfig(defaultSeriesConfig()));\n\n config.series = config.series.map((_, index) => {\n return {\n ..._,\n data: _.data ?? [],\n id: _.id ?? index,\n };\n });\n\n const oppositeYCount = config.yAxis?.filter((_) => _.opposite);\n const oppositeXCount = config.xAxis?.filter((_) => _.opposite);\n\n const nonOppositeYCount = config.yAxis?.filter((_) => !_.opposite);\n const nonOppositeXCount = config.xAxis?.filter((_) => !_.opposite);\n\n if (nonOppositeXCount?.length > 1) {\n config.bounds.bottom = 0;\n }\n\n if (oppositeXCount?.length > 1) {\n config.bounds.top = 0;\n }\n\n if (nonOppositeYCount?.length > 1) {\n config.bounds.left = 0;\n }\n\n if (oppositeYCount?.length > 1) {\n config.bounds.right = 0;\n }\n\n config.tooltip = Object.assign(\n {},\n defaultChartConfig().tooltip,\n config.tooltip\n );\n\n config.zoom = Object.assign(\n {},\n defaultChartConfig().zoom,\n config.zoom\n );\n\n config.zoom.syncChannel = config.zoom?.syncChannel ?? id;\n\n return config;\n }\n\n private setPreparationData(config: IChartConfig): IChartConfig {\n if (config.inverted) {\n\n\n const xAxes = [...config.xAxis];\n const yAxes = [...config.yAxis];\n\n config.xAxis = yAxes;\n config.yAxis = xAxes;\n\n config.series = config.series?.map((serie) => {\n const x = serie.xAxisIndex;\n const y = serie.yAxisIndex;\n serie.xAxisIndex = y;\n serie.yAxisIndex = x;\n return {\n ...serie,\n clipPointsDirection: ClipPointsDirection.y,\n data: serie?.data?.map((point) => {\n return {\n ...point,\n x: point?.y,\n y: point?.x,\n x1: point?.y1,\n y1: point?.x1,\n };\n }),\n };\n });\n }\n\n if (config?.brush?.enable) {\n config.yAxis = config.yAxis.map((_) => ({..._, zoom: false}));\n config.xAxis = config.xAxis.map((_) => ({..._, zoom: false}));\n }\n\n return config;\n }\n}\n","export enum AxisOrientation {\n x,\n y\n}\n","import {Injectable} from '@angular/core';\nimport {IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {filter, Observable, ReplaySubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BroadcastService {\n private zoomEmitter: ReplaySubject<IBroadcastMessage<ZoomMessage>>;\n\n constructor() {\n this.zoomEmitter = new ReplaySubject<IBroadcastMessage<ZoomMessage>>(1);\n }\n\n broadcastZoom(value: IBroadcastMessage<ZoomMessage>) {\n this.zoomEmitter.next(value);\n }\n\n subscribeToZoom(channel: string): Observable<IBroadcastMessage<ZoomMessage>> {\n return this.zoomEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel)\n );\n }\n}\n","import {BehaviorSubject, combineLatest, filter, Observable, shareReplay, Subscription, take,} from 'rxjs';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {zoomIdentity} from 'd3';\nimport {BroadcastService} from './broadcast.service';\nimport {ChartService} from './chart.service';\nimport {IChartConfig} from \"../model/i-chart-config\";\nimport {ZoomType} from \"../model/enum/zoom-type\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZoomService implements OnDestroy {\n zoomed: Observable<ZoomMessage>;\n\n private zoomed$ = new BehaviorSubject<ZoomMessage>(null);\n private broadcastChannel: string;\n private broadcastSub: Subscription;\n\n constructor(private _broadcast: BroadcastService,\n private _chart: ChartService) {\n this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n }\n\n fireZoom(zoom: ZoomMessage) {\n this.zoomed$.next(zoom);\n }\n\n broadcastZoom(zoom: ZoomMessage) {\n if (this.broadcastChannel?.length) {\n this._broadcast.broadcastZoom({\n channel: this.broadcastChannel,\n message: zoom\n });\n }\n }\n\n setBroadcastChannel(channel: string) {\n if (this.broadcastSub) {\n this.broadcastSub?.unsubscribe();\n }\n this.broadcastChannel = channel;\n if (this.broadcastChannel?.length) {\n this.broadcastSub = combineLatest(\n [this._broadcast.subscribeToZoom(this.broadcastChannel), this._chart.config]\n )\n .pipe(filter(([zoom, config]: [IBroadcastMessage<ZoomMessage>, IChartConfig]) => {\n return zoom.message?.chartId !== config.id && (\n config.zoom.syncType === ZoomType.xy ||\n (zoom.message.axis.orientation === AxisOrientation.y && config.zoom.syncType === ZoomType.y) ||\n (zoom.message.axis.orientation === AxisOrientation.x && config.zoom.syncType === ZoomType.x)\n );\n }))\n .subscribe(([zoom, config]) => {\n this.fireZoom(zoom.message);\n });\n }\n }\n\n getD3Transform(targetDomain: [number, number],\n originalDomain: [number, number],\n scale,\n orientation: AxisOrientation,\n inverted: boolean) {\n const zoomScale = Math.abs(scale(originalDomain[1]) - scale(originalDomain[0])) / Math.abs(scale(targetDomain[1]) - scale(targetDomain[0]));\n let transform = zoomIdentity.scale(zoomScale);\n if (orientation === AxisOrientation.x) {\n if (!!inverted) {\n transform = transform.translate(-scale(Math.max(...targetDomain)), 0);\n } else {\n transform = transform.translate(-scale(Math.min(...targetDomain)), 0);\n }\n }\n\n if (orientation === AxisOrientation.y) {\n if (!!inverted) {\n transform = transform.translate(0, -scale(Math.min(...targetDomain)));\n } else {\n transform = transform.translate(0, -scale(Math.max(...targetDomain)));\n }\n }\n return transform;\n }\n\n ngOnDestroy() {\n this.broadcastSub?.unsubscribe();\n }\n}\n","export const getTextWidth = (\n inputText?: string | number | null,\n backupRatio = 0.5,\n fontSize = 10\n): number => {\n let text = inputText ?? '';\n text = text.toString();\n\n return fontSize * backupRatio * text.length;\n};\n","import * as d3 from 'd3';\n\nexport function generateTicks(extremes: number[], count = 10) {\n const [min, max] = extremes;\n const tickStep = (max - min) / count;\n\n const ticks = d3\n .range(min, max + tickStep, tickStep)\n .filter((step) => step <= max);\n\n return ticks;\n}\n","import {Axis} from '../axis';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\nimport {maxIndex} from 'd3-array';\nimport {getTextWidth} from '../../utils/public-api';\nimport {IBuilder} from '../../../model/i-builder';\nimport {ScaleType} from \"../../../model/enum/scale-type\";\n\nexport class AxisSizeBuilder implements IBuilder<Axis, number> {\n private titlePadding = 11;\n private basePadding = 16;\n private backupRatio = 0.58;\n\n build(settings: Axis): number {\n let finalPadding = this.basePadding;\n\n if (settings.orientation === AxisOrientation.y) {\n const formatter = settings.options.tickFormat || settings.defaultFormatter();\n\n finalPadding += settings.options.title ? this.titlePadding : 0;\n\n const scale = settings.defaultScale()();\n scale.domain(settings.extremes)\n\n\n if(settings.options.scaleType.type === ScaleType.band) {\n scale.ticks = (ticks?: number) => {\n return scale.domain()\n }\n }\n const ticks = scale.ticks(20);\n\n const maxElementLengthIndex = maxIndex(\n ticks,\n (_) => formatter(_).length\n );\n\n finalPadding += getTextWidth(\n formatter(ticks[maxElementLengthIndex]),\n this.backupRatio\n );\n }\n\n if (settings.orientation === AxisOrientation.x) {\n finalPadding += finalPadding + 20;\n }\n\n return finalPadding;\n }\n}\n","import {IBuilder} from '../../../model/i-builder';\nimport {Axis} from '../axis';\nimport {BasePoint} from '../../../model/base-point';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\n\nimport * as d3 from 'd3';\nimport {ScaleType} from \"../../../model/enum/scale-type\";\n\nexport class ExtremesBuilder implements IBuilder<Axis, number[] | string[]> {\n private extentAccessorMap = new Map<AxisOrientation,\n (point: BasePoint) => number>()\n .set(AxisOrientation.x, (_) => _.x)\n .set(AxisOrientation.y, (_) => _.y);\n\n private extremes: number[] | string[] = [0, 0];\n\n build(settings: Axis): number[] | string[] {\n const options = settings.options;\n\n const hasMin = options?.min != null;\n const hasMax = options?.max != null;\n\n if (!hasMin || !hasMax) {\n const linkedSeries = settings.linkedSeries();\n const data = linkedSeries.reduce((acc: BasePoint[], current) => {\n return acc.concat(current.data);\n }, []);\n const accessor = this.extentAccessorMap.get(settings.orientation);\n this.extremes = data.length > 1 ? d3.extent(data, accessor) : [0, 0];\n\n if(settings.options.scaleType.type === ScaleType.band) {\n this.extremes = data.map(accessor)\n }\n\n }\n\n if (hasMin) {\n this.extremes[0] = options?.min;\n }\n\n if (hasMax) {\n this.extremes[1] = options?.max;\n }\n\n return this.extremes;\n }\n}\n","import {IChartConfig} from '../../model/i-chart-config';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport * as d3 from 'd3';\nimport {AxisOptions} from '../../model/axis-options';\nimport {AxisSizeBuilder, ExtremesBuilder} from './builders/public-api';\nimport {ScaleType} from '../../model/enum/scale-type';\n\nexport class Axis {\n private chartConfig: IChartConfig;\n private _orientation: AxisOrientation;\n private _index: number;\n private _extremes: number[] | string[] = [0, 0];\n private _selfSize: number;\n private _ticksValues: number[];\n private _options: AxisOptions;\n private _originDomain: [number, number] = [0, 0];\n\n private _scale: any;\n\n private defaultFormatters = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.format(',.5~r'))\n .set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))\n .set(ScaleType.log, d3.format('~s'))\n .set(ScaleType.symlog, d3.format('~s'))\n .set(ScaleType.pow, d3.format('~s'))\n .set(ScaleType.sqrt, d3.format('~s'))\n .set(ScaleType.band, (_) => {return _})\n\n\n\n private defaultScales = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.band, d3.scaleBand);\n\n constructor(config: IChartConfig) {\n this.chartConfig = config;\n }\n\n /**\n * Factory for creating x,y axes\n * @param {AxisOrientation} orientation\n * Axis type\n * @param {IChartConfig} config\n * Chart config\n * @param {number} index\n * New generated axis\n */\n public static createAxis(\n orientation: AxisOrientation,\n config: IChartConfig,\n index: number\n ): Axis {\n const axis = new Axis(config);\n axis.setLocate(orientation);\n axis.setIndex(index);\n\n axis.setOptions();\n axis.setExtremes();\n axis.setTicksValues();\n axis.setSelfSize();\n\n return axis;\n }\n\n /**\n *\n * @param {orientation} orientation\n * Set locate axis x or y\n */\n private setLocate(orientation: AxisOrientation): void {\n this._orientation = orientation;\n }\n\n /**\n *\n * @param {number} index\n * Index axis\n */\n private setIndex(index: number): void {\n this._index = index;\n }\n\n /**\n * @return {Array<Series<BasePoint>>}\n * Linked series\n */\n public linkedSeries(): Array<Series<BasePoint>> {\n const linkedFilter = (serie: Series<BasePoint>) =>\n serie[\n this._orientation === AxisOrientation.y ? 'yAxisIndex' : 'xAxisIndex'\n ] === this._index;\n\n return this.chartConfig?.series.filter(linkedFilter);\n }\n\n public setExtremes(): void {\n const builder = new ExtremesBuilder();\n this._extremes = builder.build(this);\n }\n\n public setOriginDomain(domain: [number, number]) {\n this._originDomain = domain;\n }\n\n public setScale(scale: any) {\n this._scale = scale;\n\n if(this.options.scaleType.type === ScaleType.band) {\n this._scale.ticks = () => {\n return this._scale.domain()\n }\n }\n }\n\n private setSelfSize(): void {\n this._selfSize = new AxisSizeBuilder().build(this);\n }\n\n private setTicksValues(): void {\n //this._ticksValues = generateTicks(this._extremes);\n }\n\n private setOptions(): void {\n const options =\n this.orientation === AxisOrientation.x\n ? this.chartConfig.xAxis[this.index]\n : this.chartConfig.yAxis[this.index];\n\n this._options = options;\n }\n\n get scale(): any {\n return this._scale;\n }\n\n get extremes(): Array<number | string> {\n return this._extremes;\n }\n\n get orientation(): AxisOrientation {\n return this._orientation;\n }\n\n get selfSize(): number {\n return this._selfSize;\n }\n\n get tickValues(): number[] {\n return this._ticksValues;\n }\n\n get index(): number {\n return this._index;\n }\n\n get options(): AxisOptions {\n return this._options;\n }\n\n get originDomain(): [number, number] {\n return this._originDomain;\n }\n\n public defaultFormatter() {\n return this.defaultFormatters.get(this.options.scaleType.type);\n }\n\n public defaultScale() {\n return this.defaultScales.get(this.options.scaleType.type);\n }\n\n\n}\n","import {AxisOrientation} from './enum/axis-orientation';\nimport {ElementRef} from '@angular/core';\n\nexport type TransformStyle = {\n transition?: boolean;\n}\n\nexport type TargetAxis = {\n index: number,\n orientation: AxisOrientation\n}\n\nexport class ZoomMessage {\n eventType: 'start' | 'zoom' | 'end' | string;\n element?: ElementRef;\n axis: TargetAxis;\n domain?: [number, number];\n chartId: string;\n style?: TransformStyle;\n\n constructor(options?: {\n eventType: 'start' | 'zoom' | 'end' | string;\n element?: ElementRef;\n axis?: TargetAxis;\n domain?: [number, number]\n chartId: string;\n style?: TransformStyle;\n }) {\n this.eventType = options?.eventType;\n this.element = options?.element;\n this.axis = options?.axis;\n this.domain = options.domain;\n this.chartId = options?.chartId;\n this.style = options?.style;\n }\n}\n\nexport class BrushMessage {\n chartId: string;\n selection: [number, number];\n mode?: 'drag' | 'space' | 'handle' | 'center' | 'init';\n\n constructor(options?: {\n chartId: string;\n selection: [number, number];\n mode?: 'drag' | 'space' | 'handle' | 'center' | 'init';\n }) {\n this.chartId = options?.chartId;\n this.selection = options?.selection;\n this.mode = options?.mode;\n }\n}\n\nexport interface IBroadcastMessage<T> {\n channel: string;\n message: T;\n}\n","import {Injectable} from '@angular/core';\nimport * as d3 from 'd3';\nimport {ZoomTransform} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from './chart.service';\nimport {combineLatest, map, Observable, shareReplay, take, withLatestFrom,} from 'rxjs';\nimport {ZoomService} from './zoom.service';\nimport {ScaleType} from '../model/enum/scale-type';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {ZoomMessage} from '../model/i-broadcast-message';\nimport {ZoomType} from \"../model/enum/zoom-type\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScaleService {\n public scales: Observable<IScalesMap>;\n\n private transformCacheX = new Map<number, ZoomTransform>();\n private transformCacheY = new Map<number, ZoomTransform>();\n\n private scaleMapping = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.band, d3.scaleBand)\n\n constructor(\n private chartService: ChartService,\n private zoomService: ZoomService\n ) {\n\n this.scales = combineLatest([\n this.chartService.size,\n this.chartService.config,\n this.zoomService.zoomed,\n ]).pipe(\n map((data: [DOMRectReadOnly, IChartConfig, ZoomMessage]) => {\n const [size, config, zoom] = data;\n\n const xAxisMap = new Map<number, Axis>();\n const yAxisMap = new Map<number, Axis>();\n\n config.yAxis.map((_, index) => {\n yAxisMap.set(index, Axis.createAxis(AxisOrientation.y, config, index));\n });\n\n\n config.xAxis.map((_, index) => {\n xAxisMap.set(index, Axis.createAxis(AxisOrientation.x, config, index));\n });\n\n // Generate x scales\n const left = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const right = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalWidth = (size.width || 0) - left - right;\n\n xAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis?.options.inverted) {\n domain = [...axis.extremes].reverse();\n }\n\n let scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([0, finalWidth - config.bounds.right]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base);\n }\n\n if (axis.options.scaleType.type === ScaleType.band) {\n scale.paddingInner(0.1);\n scale.paddingOuter(0.1);\n scale.align(0.1)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n\n const hasCache = this.transformCacheX.has(axis.index);\n const shouldRestore =\n zoom?.axis?.orientation !== AxisOrientation.x ||\n zoom.axis?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheX.get(axis.index);\n axis.setScale(restoredTransform.rescaleX(scale));\n }\n });\n\n if (zoom && zoom.domain) {\n if (zoom.axis?.orientation === AxisOrientation.x) {\n if (xAxisMap.has(zoom.axis.index)) {\n const x = xAxisMap.get(zoom.axis.index);\n const transform = this.zoomService.getD3Transform(zoom.domain, x.originDomain, x.scale, AxisOrientation.x, x.options.inverted);\n const rescaled = transform.rescaleX(x.scale.copy());\n x.setScale(rescaled);\n this.transformCacheX.set(x.index, transform);\n }\n }\n }\n\n\n // Generate y axis\n\n const top = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const bottom = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalHeight =\n (size.height || 0) -\n top -\n bottom -\n config?.bounds?.top -\n config.bounds?.bottom;\n\n yAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis.orientation === AxisOrientation.y) {\n domain = [...axis.extremes].reverse();\n }\n\n if (axis?.options.inverted) {\n domain = domain.reverse();\n }\n\n const scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([config.bounds.top, finalHeight]);\n\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base);\n }\n\n if (axis.options.scaleType.type === ScaleType.band) {\n scale.paddingInner(0.1);\n scale.paddingOuter(0.1);\n scale.align(0.1)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n const hasCache = this.transformCacheY.has(axis.index);\n\n const shouldRestore =\n zoom?.axis?.orientation !== AxisOrientation.y ||\n zoom.axis?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheY.get(axis.index);\n axis.setScale(restoredTransform.rescaleY(scale));\n }\n });\n\n if (zoom && zoom.domain) {\n if (zoom.axis?.orientation === AxisOrientation.y) {\n if (yAxisMap.has(zoom.axis.index)) {\n const y = yAxisMap.get(zoom.axis.index);\n const transform = this.zoomService.getD3Transform(zoom.domain,\n y.originDomain,\n y.scale,\n AxisOrientation.y,\n y.options.inverted\n );\n const rescaled = transform.rescaleY(y.scale.copy());\n y.setScale(rescaled);\n this.transformCacheY.set(y.index, transform);\n }\n }\n }\n return {\n x: xAxisMap,\n y: yAxisMap\n };\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n resetZoom() {\n this.chartService.config.pipe(\n take(1),\n withLatestFrom(this.scales)\n ).subscribe(([config, scales]: [IChartConfig, IScalesMap]) => {\n config.xAxis.forEach((axis, index) => {\n const scale = scales?.x?.get(index)?.originDomain;\n if (scale) {\n const msg = new ZoomMessage({\n eventType: \"end\",\n axis: {\n index,\n orientation: AxisOrientation.x\n },\n domain: scale,\n chartId: config.id\n });\n this.zoomService.fireZoom(msg);\n if (config.zoom.syncChannel && config.zoom.syncType === ZoomType.x) {\n this.zoomService.broadcastZoom(msg);\n }\n }\n })\n config.yAxis.forEach((axis, index) => {\n const scale = scales?.y?.get(index)?.originDomain;\n if (scale) {\n const msg = new ZoomMessage({\n eventType: \"end\",\n axis: {\n index,\n orientation: AxisOrientation.y\n },\n domain: scale,\n chartId: config.id\n });\n this.zoomService.fireZoom(msg);\n if (config.zoom.syncChannel && config.zoom.syncType === ZoomType.y) {\n this.zoomService.broadcastZoom(msg);\n }\n }\n })\n })\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {BrushMessage} from '../model/i-broadcast-message';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrushService {\n brushDomain: Observable<BrushMessage>;\n private _brushDomain = new ReplaySubject<BrushMessage>(1);\n\n constructor() {\n this.brushDomain = this._brushDomain.asObservable();\n }\n\n setBrush(brush: BrushMessage) {\n this._brushDomain.next(brush);\n }\n}\n","export enum BrushType {\n x,\n y,\n xy,\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, NgZone,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\n\n@Component({\n template: '',\n})\nexport class SeriesBaseComponent<T extends BasePoint> implements OnInit {\n @Input()\n set config(config: IChartConfig) {\n this._config = config;\n }\n\n get config() {\n return this._config;\n }\n\n @Input()\n set series(series: Series<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n\n protected _series: Series<T>;\n protected _config: IChartConfig;\n\n constructor(\n protected svc: ChartService,\n protected cdr: ChangeDetectorRef,\n protected scaleService: ScaleService,\n protected zoomService: ZoomService,\n protected element: ElementRef,\n protected zone?: NgZone\n ) {\n }\n\n ngOnInit(): void {\n }\n}\n","import {BasePoint} from '../../model/base-point';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, tap, withLatestFrom} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from '../../service/scale.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport * as d3 from 'd3';\nimport {TooltipTracking} from '../../model/enum/tooltip-tracking';\nimport {ClipPointsDirection} from '../../model/enum/clip-points-direction';\nimport {IScalesMap} from '../../model/i-scales-map';\nimport {Series} from '../../model/series';\n\n@Component({\n template: '',\n})\nexport class LinearSeriesBase<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnDestroy {\n\n public defaultClipPointsMapping: Map<ClipPointsDirection, (min: number, max: number) => (point: BasePoint, idx: number, arr: Array<BasePoint>) => {}> = new Map();\n\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: any;\n y: any;\n markers: BasePoint[];\n\n private __series: Series<T>;\n protected _update = new BehaviorSubject<void>(null);\n\n @Input()\n override set series(series: Series<T>) {\n this.__series = series;\n\n this.markers = this.__series.data?.filter((_) =>\n _?.marker && _?.x !== undefined && _?.y !== undefined && _?.x !== null && _?.y !== null);\n }\n\n override get series() {\n return this.__series;\n }\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n const filterX = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.x <= bigger ||\n point.x1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].x <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].x1 <= bigger)) &&\n (point.x >= smaller ||\n point.x1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].x >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].x1 >= smaller))\n ;\n };\n\n const filterY = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.y <= bigger ||\n point.y1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].y <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].y1 <= bigger)) &&\n (point.y >= smaller ||\n point.y1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].y >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].y1 >= smaller));\n };\n\n this.defaultClipPointsMapping.set(ClipPointsDirection.x, filterX);\n this.defaultClipPointsMapping.set(ClipPointsDirection.y, filterY);\n\n this.transform = this.svc.pointerMove.pipe(\n withLatestFrom(this.scaleService.scales),\n map((data: [PointerEvent, IScalesMap]) => {\n const [event, {x, y}] = data;\n\n return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);\n }),\n tap(() => setTimeout(() => this.cdr.detectChanges()))\n );\n\n this.path = combineLatest([this.scaleService.scales, this._update]).pipe(\n map(([data]) => {\n const {x, y} = data;\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if (!this.x || !this.y) {\n return '';\n }\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n\n const line = d3\n .line<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n point.x !== undefined &&\n point.y !== undefined &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n )\n .x((point) => this.x(point.x))\n .y((point) => this.y(point.y));\n\n let filteredData = this.series.data;\n\n if (this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if (this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return line(filteredData);\n })\n );\n }\n\n ngOnDestroy() {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n\n getTransform(\n event: any,\n scaleX: any,\n scaleY: any\n ): Pick<BasePoint, 'x' | 'y'> {\n if (event.type === 'mouseleave') {\n return null;\n }\n const mouse = [event?.offsetX, event?.offsetY];\n\n const tooltipTracking = this.config?.tooltip?.tracking;\n const lineIntersection = (\n p0_x,\n p0_y,\n p1_x,\n p1_y,\n p2_x,\n p2_y,\n p3_x,\n p3_y\n ) => {\n const rV = {} as any;\n let s1_x, s1_y, s2_x, s2_y;\n s1_x = p1_x - p0_x;\n s1_y = p1_y - p0_y;\n s2_x = p3_x - p2_x;\n s2_y = p3_y - p2_y;\n\n let s, t;\n s =\n (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /\n (-s2_x * s1_y + s1_x * s2_y);\n t =\n (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /\n (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n // Collision detected\n rV.x = p0_x + t * s1_x;\n rV.y = p0_y + t * s1_y;\n }\n\n return rV;\n };\n\n if (tooltipTracking === TooltipTracking.x) {\n const bisect = d3.bisector((_: BasePoint) => _.x).right;\n const pointer = mouse[0];\n\n let x0 = scaleX.invert(pointer);\n if (x0 instanceof Date) {\n x0 = x0.getTime();\n }\n const rightId = bisect(this.series.data, x0);\n const range = scaleY.range();\n const intersect = lineIntersection(\n pointer,\n range[0],\n pointer,\n Number.MAX_SAFE_INTEGER,\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n\n if (tooltipTracking === TooltipTracking.y) {\n const bisect = d3.bisector((_: BasePoint) => _.y).right;\n\n let y0 = scaleY.invert(mouse[1]);\n if (y0 instanceof Date) {\n y0 = y0.getTime();\n }\n const rightId = bisect(this.series.data, y0);\n const range = scaleX.range();\n\n const intersect = lineIntersection(\n range[0],\n mouse[1],\n Number.MAX_SAFE_INTEGER,\n mouse[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n }\n}\n","export enum DragPointType {\n x,\n y,\n xy,\n}\n","import {Directive, ElementRef, EventEmitter, HostListener, Input, Output} from '@angular/core';\nimport {DragPointType} from '../model/enum/drag-point-type';\n\n@Directive({\n selector: '[tetaDraggablePoint]',\n exportAs: 'tetaDraggablePoint'\n})\nexport class DraggablePointDirective {\n @Input() tetaDraggablePoint: boolean;\n @Input() dragDirection: DragPointType;\n @Input() allowDrag: (point: {\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }) => boolean;\n\n private startPosition: {\n x: number,\n y: number;\n };\n\n private transformCache: {\n x: number,\n y: number;\n };\n\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output() moveStart = new EventEmitter<{\n x: number,\n y: number\n }>();\n\n @Output() moveProcess = new EventEmitter<{\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }>();\n\n @Output() moveEnd = new EventEmitter<{\n x: number,\n y: number,\n deltaX: number,\n deltaY: number\n }>();\n\n @HostListener('mousedown', ['$event'])\n @HostListener('touchstart', ['$event'])\n mouseDown(event: MouseEvent) {\n if (!this.tetaDraggablePoint) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n this.startPosition = {\n x: event.x,\n y: event.y\n };\n this.moveStart.emit(this.startPosition);\n }\n\n @HostListener('window:mouseup', ['$event'])\n @HostListener('window:touchend', ['$event'])\n mouseUp(event: MouseEvent) {\n if (this.startPosition !== null && this.startPosition !== undefined) {\n let deltaX = event.x - this.startPosition.x;\n let deltaY = event.y - this.startPosition.y;\n if (this.dragDirection === DragPointType.x) {\n deltaY = 0;\n }\n if (this.dragDirection === DragPointType.y) {\n deltaX = 0;\n }\n if (this.allowDrag && !this.allowDrag({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n })) {\n this.startPosition = null;\n return;\n }\n if (this.transformCache) {\n this.transformCache.x = this.transformCache.x + deltaX;\n this.transformCache.y = this.transformCache.y + deltaY;\n } else {\n this.transformCache = {\n x: deltaX,\n y: deltaY\n };\n }\n this.moveEnd.emit({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n });\n }\n this.startPosition = null;\n }\n\n @HostListener('window:mousemove', ['$event'])\n @HostListener('window:touchmove', ['$event'])\n mouseMove(event: MouseEvent) {\n if (this.startPosition) {\n let deltaX = event.x - this.startPosition.x;\n let deltaY = event.y - this.startPosition.y;\n if (this.transformCache) {\n deltaX = this.transformCache.x + deltaX;\n deltaY = this.transformCache.y + deltaY;\n }\n if (this.allowDrag && !this.allowDrag({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n })) {\n return;\n }\n if (this.dragDirection === DragPointType.x) {\n deltaY = 0;\n }\n if (this.dragDirection === DragPointType.y) {\n deltaX = 0;\n }\n this.setTransform(deltaX, deltaY);\n event.stopPropagation();\n event.preventDefault();\n this.moveProcess.emit({\n x: event.x,\n y: event.y,\n deltaX,\n deltaY\n });\n }\n }\n\n setTransform(x: number, y: number) {\n this._elementRef.nativeElement.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n resetTransform() {\n this.setTransform(0, 0);\n this.transformCache = null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../../../service/chart.service';\nimport {BasePoint} from '../../../model/base-point';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {LinearSeriesBase} from '../linear-series-base';\n\n@Component({\n selector: 'svg:svg[teta-line-series]',\n templateUrl: './line-series.component.html',\n styleUrls: ['./line-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, OnDestroy {\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef,\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n private start: { x: number, y: number };\n private labelStart: { dx: number, dy: number };\n\n moveStart(event, point) {\n this.start = {x: point.x, y: point.y};\n }\n\n moveEnd(event, point) {\n point.x = this.x.invert(this.x(this.start.x) + event.deltaX);\n point.y = this.y.invert(this.y(this.start.y) + event.deltaY);\n this._update.next();\n const emitEvent = {\n type: 'end',\n sourceEvent: event\n };\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: point,\n },\n event: emitEvent,\n });\n }\n\n moveProcess(event, point) {\n point.x = this.x.invert(this.x(this.start.x) + event.deltaX);\n point.y = this.y.invert(this.y(this.start.y) + event.deltaY);\n this._update.next();\n const emitEvent = {\n type: 'drag',\n sourceEvent: event\n };\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: point,\n },\n event: emitEvent,\n });\n }\n\n startLabel(event, label) {\n this.labelStart = {dx: label.dx, dy: label.dy};\n }\n\n moveLabel(event, label) {\n label.dx = this.labelStart.dx + event.deltaX;\n label.dy = this.labelStart.dy + event.deltaY;\n }\n\n allowDrag = (point: BasePoint) => {\n return (newPoint) => {\n if (point.marker.minX !== null && point.marker.minX !== undefined) {\n if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) < point.marker.minX) {\n return false;\n }\n }\n if (point.marker.maxX !== null && point.marker.maxX !== undefined) {\n if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) > point.marker.maxX) {\n return false;\n }\n }\n if (point.marker.minY !== null && point.marker.minY !== undefined) {\n if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) < point.marker.minY) {\n return false;\n }\n }\n if (point.marker.maxY !== null && point.marker.maxY !== undefined) {\n if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) > point.marker.maxY) {\n return false;\n }\n }\n return true;\n };\n };\n}\n","<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <ng-container *ngIf=\"x && y\">\n <svg:g\n *ngFor=\"let point of draggablePoints\"\n [attr.transform]=\"'translate(' + x(point.x) + ',' + y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n <ng-container *ngIf=\"point.marker.label?.text\">\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-background-50)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{point.marker.label?.text}}\n </div>\n </svg:foreignObject>\n </ng-container>\n </svg:g>\n </svg:g>\n </ng-container>\n\n</ng-container>\n\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SeriesBaseComponent } from '../../../base/series-base.component';\nimport { BasePoint } from '../../../model/base-point';\nimport { ChartService } from '../../../service/chart.service';\nimport { ScaleService } from '../../../service/scale.service';\nimport { ZoomService } from '../../../service/zoom.service';\nimport { map, Observable } from 'rxjs';\nimport { SeriesType } from '../../../model/enum/series-type';\nimport * as d3 from 'd3';\n\n@Component({\n selector: 'svg:svg[teta-bar-series]',\n templateUrl: './bar-series.component.html',\n styleUrls: ['./bar-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnChanges\n{\n x: Observable<any>;\n x1: Observable<any>;\n y: Observable<any>;\n\n barSeriesCount: Observable<number>;\n\n Math: any = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.barSeriesCount = this.svc.config.pipe(\n map((_) => {\n const count = _.series.filter(\n (_) =>\n _.type === SeriesType.bar && _.xAxisIndex === this.series.xAxisIndex\n );\n\n return count.length;\n })\n );\n\n this.x1 = this.scaleService.scales.pipe(\n map((_) => {\n const x = _.x.get(this.series.xAxisIndex)?.scale;\n const range = x.range();\n const domain = this.series.data.map((_) => _.x);\n\n return d3\n .scaleBand<number>()\n .range([0, range[1]])\n .domain(domain)\n .padding(0.1);\n })\n );\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {}\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n} as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngIf=\"data.barSeriesCount > 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + (series.id * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n </ng-container>\n <ng-container *ngIf=\"data.barSeriesCount === 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n </ng-container>\n </ng-container>\n</ng-container>\n\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\n\n@Component({\n selector: 'svg:svg[teta-scatter-series]',\n templateUrl: './scatter-series.component.html',\n styleUrls: ['./scatter-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScatterSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex)?.scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex)?.scale));\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <ng-container *ngIf=\"scales.x && scales.y\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n </ng-container>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {filter, map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-series]',\n templateUrl: './block-series.component.html',\n styleUrls: ['./block-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n\n }\n\n override ngOnInit(): void {\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n x=\"0\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n width=\"100%\">\n </svg:rect>\n <svg:text *ngIf=\"point.text && data.y(point.y1) - data.y(point.y) > 8\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {filter, map, Observable} from 'rxjs';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-area-series]',\n templateUrl: './block-area-series.component.html',\n styleUrls: ['./block-area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockAreaSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n *ngIf=\"!!config.inverted\"\n [attr.x]=\"data.x(0) < data.x(point.x) ? data.x(0) : data.x(point.x)\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.width]=\"data.x(0) < data.x(point.x) ? data.x(point.x) - data.x(0) : data.x(0) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:rect\n *ngIf=\"!config.inverted\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"data.y(0)\"\n [attr.height]=\"Math.abs(data.y(0) - data.y(point.y))\"\n [attr.width]=\"data.x(point.x1) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:text *ngIf=\"point.text\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, NgZone, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillDirection, FillType} from '../../../model/enum/fill-type';\nimport {LinearSeriesBase} from '../linear-series-base';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport * as d3 from 'd3';\nimport {ClipPointsDirection} from \"../../../model/enum/clip-points-direction\";\nimport {Axis} from \"../../../core/axis/axis\";\n\n@Component({\n selector: 'svg:svg[teta-area-series]',\n templateUrl: './area-series.component.html',\n styleUrls: ['./area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, OnDestroy {\n areaPath: Observable<string>;\n\n fillDirection = FillDirection;\n fillType = FillType;\n id: string;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.areaPath = this.scaleService.scales.pipe(\n map(\n (\n data\n ) => {\n const {x, y} = data;\n\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if(!this.x || !this.y) {\n return ''\n }\n\n const area = d3\n .area<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n );\n\n area\n .x1((_) =>\n _.x1 !== null && _.x1 !== undefined ? this.x(_.x1) : this.x(0)\n )\n .x0((_) => this.x(_.x))\n\n .y((_) =>\n this.y(_.y)\n );\n\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n let filteredData = this.series.data;\n\n if(this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if(this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return area(filteredData);\n }\n )\n );\n }\n}\n","<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n</svg:defs>\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of draggablePoints\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {SeriesType} from '../model/enum/series-type';\nimport {SeriesBaseComponent} from '../base/series-base.component';\nimport {LineSeriesComponent} from '../chart-container/series/line/line-series.component';\nimport {BarSeriesComponent} from '../chart-container/series/bar/bar-series.component';\nimport {ScatterSeriesComponent} from '../chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from '../chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from '../chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from '../chart-container/series/area-series/area-series.component';\n\nexport const defaultSeriesTypeMapping = new Map<SeriesType,\n typeof SeriesBaseComponent>()\n .set(SeriesType.line, LineSeriesComponent)\n .set(SeriesType.bar, BarSeriesComponent)\n .set(SeriesType.scatter, ScatterSeriesComponent)\n .set(SeriesType.block, BlockSeriesComponent)\n .set(SeriesType.area, AreaSeriesComponent)\n .set(SeriesType.blockArea, BlockAreaSeriesComponent);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input, OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {LineSeriesComponent} from '../series/line/line-series.component';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {defaultSeriesTypeMapping} from '../../default/defaultSeriesTypeMapping';\n\n@Component({\n selector: '[teta-series-host]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeriesHostComponent<T extends BasePoint> implements OnInit, OnDestroy {\n @Input() config: IChartConfig;\n @Input() series: Series<T>;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {\n this.series.component =\n defaultSeriesTypeMapping.get(this.series.type) || LineSeriesComponent;\n }\n\n this._componentRef = this.viewContainerRef.createComponent(\n this.series.component\n );\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._componentRef.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init && (changes.hasOwnProperty('series') || changes.hasOwnProperty('config'))) {\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, withLatestFrom} from \"rxjs\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\nimport {ChartService} from \"../../service/chart.service\";\nimport {generateTicks} from \"../../core/utils/generate-ticks\";\nimport {IScalesMap} from \"../../model/i-scales-map\";\n\n@Component({\n selector: '[teta-gridlines]',\n templateUrl: './gridlines.component.html',\n styleUrls: ['./gridlines.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridlinesComponent implements AfterViewInit {\n\n @Input() size: DOMRect;\n\n config: Observable<IChartConfig>;\n tickYValues: Observable<number[]>;\n tickXValues: Observable<number[]>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(private svc: ScaleService, private chartService: ChartService) {\n this.config = this.chartService.config;\n\n this.tickYValues = this.svc.scales.pipe(\n withLatestFrom(this.config),\n map((_: [IScalesMap, IChartConfig]) => {\n const [scales, config] = _;\n const ratio = this.size.height / 40;\n return config.gridLines?.y?.ticksCount != null ? generateTicks(scales.y.get(0).scale.domain(), config.gridLines?.y?.ticksCount) : scales.y.get(0)?.scale.ticks(ratio);\n }));\n\n this.tickXValues = this.svc.scales.pipe(\n withLatestFrom(this.config),\n map((_: [IScalesMap, IChartConfig]) => {\n const [scales, config] = _;\n const ratio = this.size.width / 40;\n return config.gridLines?.x?.ticksCount != null ? generateTicks(scales.x.get(0).originDomain, config.gridLines?.x?.ticksCount) : scales.x.get(0)?.scale.ticks(ratio);\n }));\n\n this.y = this.svc.scales.pipe(map((_) => _.y.get(0)?.scale));\n this.x = this.svc.scales.pipe(map((_) => _.x.get(0)?.scale));\n }\n\n ngAfterViewInit() {\n\n }\n}\n","<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick) || 1\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick) || 1\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick) || 1\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick) || 1\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChange, SimpleChanges,\n} from '@angular/core';\nimport {Axis} from '../../core/axis/axis';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, withLatestFrom} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {getTextWidth} from '../../core/utils/get-text-width';\nimport * as d3 from 'd3';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-x-axis]',\n templateUrl: './x-axis.component.html',\n styleUrls: ['./x-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XAxisComponent implements OnInit, OnChanges, OnDestroy {\n x: Observable<any>;\n ticks: Observable<any[]>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private update$ = new BehaviorSubject<void>(null);\n private _alive = true;\n\n constructor(private scaleService: ScaleService, private _svc: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => {\n return _.x.get(this.axis.index)?.scale;\n }));\n\n\n this.ticks = combineLatest([this.x, this.update$]).pipe(\n withLatestFrom(this._svc.size),\n map((_: [[any, void], DOMRect]) => {\n const [[x], size] = _;\n\n const tickSize = x.ticks().map((_) => getTextWidth(this.axis.options.tickFormat ? this.axis.options.tickFormat(_) : this.axis.defaultFormatter()(_), 0.45, 11));\n return x.ticks(size.width / parseInt(d3.max(tickSize), 10) / 10);\n })\n );\n }\n\n getLabelTransform() {\n return `translate(${\n this.size.width / 2\n }, ${this.axis.options.opposite ? -32 : 32})`;\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('axis')) {\n this.update$.next();\n }\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, ticks: ticks | async} as data\">\n <svg:g text-anchor=\"middle\" *ngFor=\"let tick of data.ticks\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\" [attr.y]=\"axis.options.opposite ? 0 : 9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Axis } from '../../core/axis/axis';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: '[teta-y-axis]',\n templateUrl: './y-axis.component.html',\n styleUrls: ['./y-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YAxisComponent implements OnInit, AfterViewInit {\n\n y: Observable<any>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService) {\n this.y = this.scaleService.scales.pipe(map((_) => {\n return _.y.get(this.axis.index)?.scale\n }))\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n }\n\n getLabelTransform() {\n return `translate(${\n this.axis.options.opposite\n ? this.axis.selfSize\n : -this.axis.selfSize\n }, ${this.size.height / 2}) rotate(-90)`;\n }\n\n}\n","<ng-container *ngIf=\"y | async as scale\">\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\" *ngFor=\"let tick of scale.ticks()\" [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\" [attr.x]=\"axis.options.opposite ? 10 : -9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\" [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {PlotLine} from '../../model/plot-line';\nimport {Axis} from '../../core/axis/axis';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {ZoomService} from '../../service/zoom.service';\nimport {ScaleService} from '../../service/scale.service';\nimport * as d3 from 'd3';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-line]',\n templateUrl: './plotline.component.html',\n styleUrls: ['./plotline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotlineComponent implements OnInit, OnDestroy {\n @Input() plotLine: PlotLine;\n @Input() size: DOMRect;\n @Input() axis: Axis;\n @Input() scale: any;\n orientation = AxisOrientation;\n dragElements: any;\n\n private _domain: number[];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private scaleService: ScaleService,\n private chartService: ChartService,\n private element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n this._domain = this.scale.domain();\n\n const plotlineElement = d3\n .select(this.element.nativeElement)\n .select('.plotline');\n\n const grabElement = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotlineElement.attr('y1')};\n }\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotlineElement.attr('x1')};\n }\n });\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotLine, any>, d: PlotLine) => {\n d.value = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n if (d.max !== null && d.max !== undefined && d.value >= d.max) {\n d.value = d.max;\n }\n if (d.min !== null && d.min !== undefined && d.value <= d.min) {\n d.value = d.min;\n }\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotlineElement.datum<PlotLine>(this.plotLine);\n grabElement.datum<PlotLine>(this.plotLine);\n\n if (this.plotLine.draggable) {\n grabElement.call(drag);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n }\n\n emit(event: IChartEvent<PlotLine>) {\n this.chartService.emitPlotline(event);\n }\n\n get value() {\n return this.scale(this.plotLine.value);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n}\n","<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input, OnDestroy\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport {PlotBand} from '../../model/plot-band';\nimport {ScaleService} from '../../service/scale.service';\nimport {Axis} from '../../core/axis/axis';\nimport {ZoomService} from '../../service/zoom.service';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-band]',\n templateUrl: './plot-band.component.html',\n styleUrls: ['./plot-band.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotBandComponent implements AfterViewInit, OnDestroy {\n @Input() plotBand: PlotBand;\n @Input() axis: Axis;\n @Input() scale: any;\n @Input() size: DOMRect;\n\n orientation = AxisOrientation;\n resizeElements: any;\n dragElements: any;\n\n constructor(\n private scaleService: ScaleService,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private cdr: ChangeDetectorRef,\n private element: ElementRef\n ) {\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n emit(event: IChartEvent<PlotBand>) {\n this.chartService.emitPlotband(event);\n }\n\n ngAfterViewInit(): void {\n\n const plotbandElement = d3\n .select(this.element.nativeElement)\n .select('.plotband');\n\n const grabElements = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotbandElement.attr('x')};\n }\n\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotbandElement.attr('y')};\n }\n });\n\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n\n let bandSize = parseFloat(\n plotbandElement.attr(\n this.axis.orientation === AxisOrientation.x ? 'width' : 'height'\n )\n );\n\n d.from = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n d.to = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]] + bandSize\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n let grabberKey;\n this.resizeElements = d3\n .drag();\n\n const resize = this.resizeElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n if (event?.type === 'start') {\n const {grabber} = event?.sourceEvent?.target?.dataset;\n grabberKey = grabber;\n }\n\n const min = Math.min(...this.scale.domain());\n const max = Math.max(...this.scale.domain());\n\n const minValue = d.min ?? min;\n const maxValue = d.max ?? max;\n\n d[grabberKey] = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n if (grabberKey === 'from') {\n const borderMin = d.from <= minValue;\n\n if (d.from >= d.to) {\n d.from = d.to;\n }\n\n if (borderMin) {\n d.from = minValue;\n }\n }\n\n if (grabberKey === 'to') {\n const borderMax = d.to >= maxValue;\n\n if (borderMax) {\n d.to = maxValue;\n }\n\n if (d.to <= d.from) {\n d.to = d.from;\n }\n }\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotbandElement.datum<PlotBand>(this.plotBand);\n grabElements.datum<PlotBand>(this.plotBand);\n\n if (this.plotBand.draggable) {\n plotbandElement.call(drag);\n }\n\n if (this.plotBand.resizable) {\n grabElements.call(resize);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n this.resizeElements.on('start drag end', null);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n\n get from(): number {\n return this.scale(this.plotBand.from);\n }\n\n get to(): number {\n return this.scale(this.plotBand.to);\n }\n\n get bandSize(): number {\n return Math.abs(\n this.scale(this.plotBand.to) - this.scale(this.plotBand.from)\n );\n }\n\n getTextPosition = () => {\n let [min, max] = this.scale.domain();\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n const from = (this.plotBand.from as any) instanceof Date ? (this.plotBand.from as any).getTime() : this.plotBand.from;\n const to= (this.plotBand.to as any) instanceof Date ? (this.plotBand.to as any).getTime() : this.plotBand.to;\n const position = ((from <= min ? min : from) + (to >= max ? max : to)) / 2;\n return this.scale(position);\n }\n\n getFill(d: PlotBand): string {\n if (d.style?.plotBand?.patternImage) {\n return `url(#${d.style.plotBand?.patternImage})`;\n }\n return d.style.plotBand?.fill;\n }\n}\n","<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n class=\"label font-caption fill-text-90\"\n [attr.x]=\"getTextPosition()\"\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-caption fill-text-90\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextPosition()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {filter, map, Observable, tap} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport {IDisplayTooltip} from '../../model/i-display-tooltip';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {Series} from '../../model/series';\nimport * as d3 from 'd3';\nimport {Align, PositionUtil, VerticalAlign} from '@tetacom/ng-components';\n\n@Component({\n selector: 'teta-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements OnInit {\n @Input() size: DOMRect;\n @Input() config: IChartConfig;\n\n @ViewChild('tooltip', {static: false, read: ElementRef}) tooltip: ElementRef;\n\n position: Observable<{\n left?: number;\n top?: number;\n bottom?: number;\n right?: number;\n }>;\n\n displayTooltips: Observable<SafeHtml>;\n display: Observable<number>;\n tooltips: Observable<IDisplayTooltip[]>;\n\n constructor(\n private svc: ChartService,\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private sanitizer: DomSanitizer,\n private _zone: NgZone,\n private _elementRef: ElementRef\n ) {\n this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));\n }\n\n ngOnInit(): void {\n this.display = this.svc.pointerMove.pipe(\n map((event: PointerEvent) => {\n return event.type === 'mousemove' ? 1 : 0;\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n });\n })\n );\n\n this.position = this.svc.pointerMove.pipe(\n filter((event) => !!event),\n map((_) => {\n return this.getPosition(_);\n }),\n tap(() => this.cdr.detectChanges())\n );\n\n const transformHtml = (html): SafeHtml => {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n };\n\n const defaultFormatter = (tooltips: IDisplayTooltip[]): SafeHtml => {\n let html = '';\n const format = d3.timeFormat('%d.%m.%Y');\n tooltips.forEach((_) => {\n const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;\n\n html += `<div class=\"display-flex align-center\"><span class=\"margin-right-1\" style=\"${indicatorStyle}\"></span>\n <span class=\"font-title-3\">${_.series.name}\n <span class=\"font-body-3\">\n x: ${(_.point.x as any) instanceof Date ? format(_.point.x as any) : _.point.x?.toFixed(2)}\n y: ${(_.point.y as any) instanceof Date ? format(_.point.y as any) : _.point.y?.toFixed(2)}\n </span>\n </span></div>`;\n });\n\n return transformHtml(html);\n };\n\n const formatter = this.config?.tooltip?.format;\n\n this.displayTooltips = this.svc.tooltips.pipe(\n map((tooltips: Map<Series<any>, IDisplayTooltip>) => {\n const tooltipList = [...tooltips.values()];\n if (tooltipList?.length < 1) {\n return '';\n }\n const formatted = formatter\n ? transformHtml(formatter(tooltipList))\n : defaultFormatter(tooltipList);\n return formatted;\n })\n );\n }\n\n private getPosition(event: PointerEvent) {\n if (!this.tooltip) {\n return null;\n }\n return PositionUtil.getPosition(\n {\n top: event.pageY,\n bottom: event.pageY,\n left: event.pageX,\n right: event.pageX,\n },\n this.tooltip?.nativeElement?.getBoundingClientRect(),\n Align.auto,\n VerticalAlign.top,\n 12\n );\n }\n\n\n format(input: number | Date): string {\n if (input instanceof Date) {\n const format = d3.timeFormat('%d.%m.%Y');\n return format(input);\n }\n\n const format = d3.format(',.5~r');\n return format(input);\n }\n}\n","<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n [hidden]=\"!p\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n","import {AfterViewInit, Directive, ElementRef, HostBinding, Input, NgZone, OnDestroy,} from '@angular/core';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {Axis} from '../core/axis/axis';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomBehavior, zoomIdentity} from 'd3';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ZoomMessage,} from '../model/i-broadcast-message';\nimport {takeWhile} from 'rxjs';\nimport {ChartService} from '../service/chart.service';\nimport {ZoomBehaviorType} from '../model/enum/zoom-behavior-type';\nimport {ScaleType} from \"../model/enum/scale-type\";\n\n@Directive({\n selector: '[tetaZoomable]',\n})\nexport class ZoomableDirective implements OnDestroy, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n @HostBinding('class.zoomable') private zoomable = false;\n @HostBinding('class.crosshair') private crosshair = false;\n\n private _element: d3.Selection<SVGElement, any, any, any>;\n private zoom: ZoomBehavior<any, any>;\n private alive = true;\n\n private currentTransform = zoomIdentity;\n\n constructor(\n private elementRef: ElementRef,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private zone: NgZone\n ) {\n }\n\n ngOnInit() {\n if (this.axis?.options?.zoom || this.config?.zoom?.enable) {\n this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;\n this.crosshair = this.config?.tooltip?.showCrosshair;\n }\n }\n\n ngAfterViewInit() {\n this.initZoomListeners();\n this.initZoomSync();\n }\n\n ngOnDestroy(): void {\n this.zoom?.on('zoom end', null);\n this._element?.on('wheel', null);\n this.alive = false;\n }\n\n private initZoomSync() {\n this.zoomService.zoomed.pipe(\n takeWhile(() => this.alive)\n ).subscribe((zoomed: ZoomMessage) => {\n if (this._element && this.elementRef !== zoomed?.element\n && zoomed?.axis?.index === this.axis.index\n && zoomed?.axis?.orientation === this.axis.orientation) {\n const scale = this.axis.scale.copy().domain(this.axis.originDomain);\n let transform;\n if (zoomed.domain === null) {\n transform = zoomIdentity;\n } else {\n transform =\n this.zoomService.getD3Transform(zoomed.domain, this.axis.originDomain, scale, this.axis.orientation, this.axis.options.inverted);\n }\n this._element.call(this.zoom.transform, transform);\n this.currentTransform = transform;\n }\n });\n }\n\n private initZoomListeners() {\n const enable =\n (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||\n this.config?.zoom?.enable;\n if (!enable) {\n return;\n }\n this._element = d3.select(this.elementRef.nativeElement);\n this.zoom = d3.zoom().extent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n\n const min = this.config?.zoom?.minTranslate != null\n ? this.axis.scale(this.config?.zoom?.minTranslate)\n : -Infinity;\n const max = (this.config?.zoom?.maxTranslate != null\n ? this.axis.scale(this.config?.zoom?.maxTranslate)\n : Infinity);\n if (this.axis.orientation === AxisOrientation.x && this.config.zoom.type === ZoomType.x) {\n this.zoom.translateExtent([\n [Math.min(min, max), -Infinity],\n [Math.max(min, max), Infinity],\n ]);\n }\n\n if (this.axis.orientation === AxisOrientation.y && this.config.zoom.type === ZoomType.y) {\n this.zoom.translateExtent([\n [-Infinity, Math.min(min, max)],\n [Infinity, Math.max(min, max)],\n ]);\n }\n\n if (this.config.zoom?.wheelDelta) {\n this.zoom.wheelDelta(this.config.zoom?.wheelDelta);\n }\n\n if (this.config?.zoom?.wheelFilter) {\n this.zoom.filter(this.config?.zoom?.wheelFilter)\n }\n\n if (this.axis.options.scaleType.type !== ScaleType.band) {\n const extremes = this.axis.extremes as number[];\n const maxZoom = this.config.zoom?.max\n ? (extremes[1] - extremes[0]) /\n this.config.zoom?.max\n : this.config.zoom?.limitZoomByData\n ? 1\n : 0;\n\n const minZoom = this.config.zoom?.min\n ? (extremes[1] - extremes[0]) /\n this.config.zoom?.min\n : Infinity;\n\n this.zoom.scaleExtent([maxZoom, minZoom]);\n }\n\n\n this.zoom.on('start zoom end', this.zoomed);\n this._element.call(this.zoom).on('dblclick.zoom', null);\n\n if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {\n this.runWheelTranslate();\n }\n }\n\n zoomed = (event: D3ZoomEvent<any, any>) => {\n if (event.sourceEvent) {\n if (Object.keys(event.sourceEvent).length !== 0) {\n const origin = this.axis.scale.copy().domain(this.axis.originDomain);\n if (this.axis.options.scaleType.type === ScaleType.band) {\n return\n }\n\n const domain =\n this.axis.orientation === AxisOrientation.y\n ? event.transform.rescaleY(origin).domain()\n : event.transform.rescaleX(origin).domain();\n if (domain[0] === null || domain[0] === undefined\n || domain[1] === null || domain[1] === undefined\n || Math.abs(domain[0] - domain[1]) < 0.000001) {\n return;\n }\n const message = new ZoomMessage({\n eventType: event.type,\n axis: {\n index: this.axis.index,\n orientation: this.axis.orientation,\n },\n element: this.elementRef,\n domain,\n chartId: this.config.id\n });\n this.zoomService.fireZoom(message);\n this.zoomService.broadcastZoom(message);\n }\n this.currentTransform = event.transform;\n }\n };\n\n private runWheelTranslate() {\n let type: 'start' | 'zoom' | 'end' = 'start';\n let wheeling;\n\n this.zoom\n .filter(\n (event) => {\n return (event.ctrlKey && event.type === 'wheel') ||\n Boolean(window.TouchEvent && event.type !== 'wheel');\n }\n )\n .wheelDelta((event) => {\n const delta =\n this.config?.zoom.type === ZoomType.x\n ? -event.deltaX\n : -event.deltaY;\n return delta * 0.002;\n });\n\n const emit = (type: string, event: WheelEvent) => {\n const origin = this.axis.scale.copy().domain(this.axis.originDomain);\n let transform = zoomIdentity;\n const delta =\n type === 'end'\n ? 0\n : this.axis.orientation === AxisOrientation.y\n ? event.deltaY\n : event.deltaX;\n\n if (this.axis.orientation === AxisOrientation.y) {\n transform = transform.translate(\n 0,\n this.currentTransform.y - delta / 2\n );\n }\n\n if (this.axis.orientation === AxisOrientation.x) {\n transform = transform.translate(\n this.currentTransform.x - delta / 2,\n 0\n );\n }\n\n transform = transform.scale(this.currentTransform.k);\n\n let domain =\n this.axis.orientation === AxisOrientation.y\n ? transform.rescaleY(origin).domain()\n : transform.rescaleX(origin).domain();\n\n const extent = this.axis.options?.inverted ? domain : [...domain].reverse();\n\n if (extent[0] <= this.config.zoom?.minTranslate) {\n return;\n }\n\n if (extent[1] >= this.config.zoom?.maxTranslate) {\n return;\n }\n\n const message = new ZoomMessage({\n eventType: type,\n element: this.elementRef,\n axis: {\n index: this.axis.index,\n orientation: this.axis.orientation\n },\n domain,\n chartId: this.config.id,\n });\n\n this._element?.call(this.zoom.transform, transform);\n this.zoomService.fireZoom(message);\n this.zoomService.broadcastZoom(message);\n this.currentTransform = transform;\n };\n\n this._element.on('wheel', (event: WheelEvent) => {\n\n\n event.preventDefault();\n if (event.ctrlKey) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n clearTimeout(wheeling);\n emit(type, event);\n type = 'zoom';\n wheeling = setTimeout(() => {\n emit('end', event);\n type = 'start';\n }, 50);\n });\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input, NgZone, OnChanges, OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BrushService} from '../service/brush.service';\nimport {ChartService} from '../service/chart.service';\nimport {Axis} from '../core/axis/axis';\nimport {BrushType} from '../model/enum/brush-type';\nimport * as d3 from 'd3';\nimport {BrushMessage} from '../model/i-broadcast-message';\nimport {filter, takeWhile} from 'rxjs';\n\n@Directive({\n selector: '[tetaBrushable]',\n})\nexport class BrushableDirective implements OnDestroy, OnInit, AfterViewInit, OnChanges {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n\n private selection: number[];\n private brush: d3.BrushBehavior<any>;\n private brushMap = new Map<BrushType, d3.BrushBehavior<any>>()\n .set(BrushType.x, d3.brushX())\n .set(BrushType.y, d3.brushY());\n private _alive = true;\n private _container;\n\n constructor(\n private brushService: BrushService,\n private chartService: ChartService,\n private element: ElementRef,\n private zone: NgZone\n ) {\n this._container = d3.select(this.element.nativeElement);\n }\n\n ngOnInit() {\n this.brushService.brushDomain.pipe(\n takeWhile(() => this._alive),\n filter((brush) => brush.chartId !== this.config.id)\n ).subscribe((brush) => {\n this._container.call(\n this.brush.move,\n [\n Math.floor(brush.selection[0]),\n Math.floor(brush.selection[1]),\n ].map(this.axis.scale)\n );\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n if(this.config?.brush?.enable) {\n const brushMessage = new BrushMessage({\n chartId: this.config.id,\n selection: [this.config?.brush?.from, this.config?.brush?.to],\n mode: 'init'\n });\n this.brushService.setBrush(brushMessage);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('config')) {\n this.clearPreviousSelection();\n }\n\n if (this.config?.brush?.enable) {\n this.applyBrush(\n this.config,\n this.axis.scale\n );\n }\n }\n\n applyBrush(config: IChartConfig, brushScale: any) {\n this.brush?.on('start brush end', null);\n if (config.brush?.enable) {\n this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);\n this.brush.on('start brush end', (_: d3.D3BrushEvent<any>) => {\n if (_.sourceEvent) {\n if (!_.selection) return;\n const [from, to] = _.selection as number[];\n if (to - from === 0) {\n const selection: number[] =\n this.selection?.map(brushScale) ??\n [config.brush?.from, config.brush?.to].map(brushScale);\n const halfBrushHeight = (selection[1] - selection[0]) / 2;\n const invertedSelection: number[] = [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ].map(brushScale.invert);\n\n if (\n invertedSelection[1] - invertedSelection[0] >\n config.brush?.max\n ) {\n this._container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.floor(invertedSelection[0] + config.brush?.max),\n ].map(brushScale)\n );\n return;\n }\n\n if (\n invertedSelection[1] - invertedSelection[0] <\n config.brush?.min\n ) {\n this._container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.ceil(invertedSelection[0] + config.brush?.min),\n ].map(brushScale)\n );\n return;\n }\n\n this._container.call(this.brush.move, [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ]);\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) >\n config.brush?.max\n ) {\n this._container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.max,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) <\n config.brush?.min\n ) {\n this._container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.min,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (_.sourceEvent instanceof MouseEvent) {\n this.selection = _.selection.map(brushScale.invert);\n }\n\n const brushMessage = new BrushMessage({\n chartId: this.config.id,\n selection: [brushScale.invert(from), brushScale.invert(to)],\n mode: _.mode\n });\n this.brushService.setBrush(brushMessage);\n }\n });\n\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this._container.call(this.brush);\n\n let domain = brushScale.domain();\n\n if (config?.brush?.from) {\n domain[0] = config.brush.from;\n }\n\n if (config?.brush?.to) {\n domain[1] = config.brush.to;\n }\n\n this._container.call(\n this.brush.move,\n this.selection\n ? this.selection.map(brushScale)\n : domain.map(brushScale),\n {}\n );\n }, 0);\n });\n }\n }\n\n clearPreviousSelection() {\n this.selection = null;\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef, HostListener,\n Input, OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {Annotation} from '../../model/annotation';\nimport * as d3 from 'd3';\nimport {map, Observable} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-annotation]',\n templateUrl: './annotation.component.html',\n styleUrls: ['./annotation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AnnotationComponent implements OnDestroy {\n @Input() set annotation(annotation: Annotation) {\n this._annotation = annotation;\n }\n\n get annotation(): Annotation {\n return this._annotation;\n }\n\n @ViewChild('annotationNode', {static: false})\n set node(node: ElementRef) {\n this._node = node;\n this.init();\n this.cdr.detectChanges();\n }\n\n get node() {\n return this._node;\n }\n\n x: Observable<any>;\n y: Observable<any>;\n\n private drag: d3.DragBehavior<any, any, any>;\n private _annotation: Annotation;\n private _node: ElementRef;\n\n constructor(\n private scaleService: ScaleService,\n private cdr: ChangeDetectorRef,\n private chartService: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => _.x.get(this.annotation.xAxisIndex ?? 0)?.scale));\n this.y = this.scaleService.scales.pipe(map((_) => _.y.get(this.annotation.yAxisIndex ?? 0)?.scale));\n this.drag = d3.drag();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n\n ngOnDestroy() {\n this.drag.on('drag end', null);\n }\n\n private init() {\n\n d3.select(this.node.nativeElement).datum(this.annotation);\n\n if (this.annotation.draggable) {\n this.drag.on('drag end', (event, d: Annotation) => {\n d.dx += event.dx;\n d.dy += event.dy;\n this.cdr.detectChanges();\n this.chartService.emitMoveAnnotation({\n event,\n target: d\n });\n });\n d3.select(this.node.nativeElement).call(this.drag);\n }\n }\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-text-90)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n </ng-container>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n","import {ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, tap} from \"rxjs\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-crosshair]',\n templateUrl: './crosshair.component.html',\n styleUrls: ['./crosshair.component.scss']\n})\nexport class CrosshairComponent implements OnInit {\n\n @Input() size: DOMRect;\n transform: Observable<any>;\n\n constructor(private scaleService: ScaleService, private chartService: ChartService, private cdr: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this.transform = this.chartService.pointerMove.pipe(\n map((event: PointerEvent) => {\n return {\n x: event.type === 'mouseleave' ? -9999 : event.offsetX,\n y: event.type === 'mouseleave' ? -9999 : event.offsetY\n }\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n\n })\n )\n\n }\n\n}\n","<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from '../service/chart.service';\nimport {\n combineLatest,\n map,\n Observable,\n shareReplay,\n withLatestFrom,\n} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {BrushType} from '../model/enum/brush-type';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {tetaZoneFull} from '@tetacom/ng-components';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {Series} from \"../model/series\";\nimport {BasePoint} from \"../model/base-point\";\n\ntype Opposite = boolean;\n\n@Component({\n selector: 'teta-chart-container',\n templateUrl: './chart-container.component.html',\n styleUrls: ['./chart-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartContainerComponent implements OnInit, OnDestroy {\n config: Observable<IChartConfig>;\n scales: Observable<IScalesMap>;\n size: Observable<DOMRect>;\n visibleRect: Observable<any>;\n brushScale: Observable<any>;\n zoomType = ZoomType;\n\n private _observer: ResizeObserver;\n private filterPositionMap = new Map<Opposite,\n (axis: Axis) => (_: Axis) => boolean>()\n .set(\n true,\n (axis) => (_: Axis) =>\n _.options.opposite && _.options.visible && axis.index <= _.index\n )\n .set(\n false,\n (axis) => (_: Axis) =>\n _.options.opposite !== true &&\n _.options.visible &&\n _.index <= axis.index\n );\n\n constructor(\n private _svc: ChartService,\n private _cdr: ChangeDetectorRef,\n private _scaleService: ScaleService,\n private _zoomService: ZoomService,\n private _elementRef: ElementRef,\n private _zone: NgZone\n ) {\n this.config = this._svc.config;\n this.size = this._svc.size;\n\n this.scales = this._scaleService.scales.pipe(\n // observeOn(animationFrameScheduler),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.brushScale = this._scaleService.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n\n return config.brush?.type === BrushType.x || config?.zoom?.type === ZoomType.x ? x.get(0)?.scale : y.get(0)?.scale;\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.visibleRect = combineLatest([this.size, this.scales, this.config])\n .pipe(\n map(\n (\n data: [DOMRect, IScalesMap, IChartConfig]\n ) => {\n const [size, {x, y}, config] = data;\n const yAxesArray = Array.from(y.values());\n const xAxesArray = Array.from(x.values());\n const left = yAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const right = yAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const bottom = xAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const top = xAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n return {\n x: left + config.bounds?.left,\n y: top + config.bounds?.top,\n width:\n size.width -\n left -\n right -\n config.bounds?.left -\n config.bounds?.right,\n height:\n size.height -\n top -\n bottom -\n config.bounds?.top -\n config.bounds?.bottom,\n };\n }\n ),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n this._observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n requestAnimationFrame(() => {\n if (\n !Array.isArray(entries) ||\n !entries.length ||\n entries[0].contentRect.width <= 0 ||\n entries[0].contentRect.height <= 0\n ) {\n return;\n }\n this._svc.setSize(entries[0].contentRect);\n });\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this._observer.unobserve(this._elementRef.nativeElement);\n this._observer.disconnect();\n }\n\n private sumSize = (acc, curr) => acc + curr.selfSize;\n\n getTranslate(axis?: Axis, size?: DOMRect): Observable<string> {\n return this.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n const xAxesArray = Array.from(x.values());\n const yAxesArray = Array.from(y.values());\n\n const oppositeFilter = this.filterPositionMap.get(true);\n const nonOppositeFilter = this.filterPositionMap.get(false);\n\n const oppositeOffsetY = yAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeTranslateY = oppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.right\n );\n const nonOppisteTranslateY = nonOppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.left\n );\n\n const oppositeTranslateX = oppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.top\n );\n\n const nonOppisteTranslateX = nonOppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.bottom\n );\n\n const left = yAxesArray\n .filter((_) => _.options.visible && _.options.opposite !== true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);\n\n const top = xAxesArray\n .filter((_) => _.options.visible && _.options.opposite === true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);\n\n if (axis.orientation === AxisOrientation.x) {\n return `translate(${left}, ${\n axis.options.opposite\n ? oppositeTranslateX\n : size.height - nonOppisteTranslateX\n })`;\n }\n\n if (axis.orientation === AxisOrientation.y) {\n return `translate(${\n axis.options.opposite\n ? size.width - oppositeTranslateY\n : nonOppisteTranslateY\n }, ${top})`;\n }\n\n return 'translate(0, 0)';\n })\n );\n }\n\n identify(index, item) {\n return item.value.index;\n }\n\n click(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartClick({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n contextMenu(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartContextMenu({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n mouseMove(event) {\n this._svc.setPointerMove(event);\n }\n\n mouseLeave(event) {\n this._svc.setPointerMove(event);\n }\n\n trackSerie(index, item: Series<BasePoint>) {\n return item.name?.length ? item.name : index\n }\n}\n","<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container\n *ngIf=\"data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length\">\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series;\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Series } from '../model/series';\nimport { BasePoint } from '../model/base-point';\nimport { SeriesType } from '../model/enum/series-type';\nimport {ChartService} from \"../service/chart.service\";\n\n@Component({\n selector: 'teta-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendComponent {\n private sizeMapping = new Map<SeriesType, number>()\n .set(SeriesType.line, 2)\n .set(SeriesType.scatter, 2)\n .set(SeriesType.bar, 12)\n .set(SeriesType.area, 2)\n .set(SeriesType.block, 12)\n .set(SeriesType.blockArea, 2);\n\n @Input() series: Array<Series<BasePoint>>;\n @HostBinding('class.padding-bottom-4') classLegend = true;\n\n constructor(private chartService: ChartService) {}\n\n getHeight(serie: Series<BasePoint>) {\n return this.sizeMapping.get(serie.type ?? SeriesType.line);\n }\n\n click(serie: Series<BasePoint>) {\n this.chartService.toggleVisibilitySeries([serie.id]);\n }\n}\n","<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BasePoint} from '../model/base-point';\nimport {ZoomService} from '../service/zoom.service';\nimport {ScaleService} from '../service/scale.service';\nimport {BrushService} from '../service/brush.service';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {PlotLine} from '../model/plot-line';\nimport {PlotBand} from '../model/plot-band';\nimport {IPointMove} from '../model/i-point-move';\nimport {map, Observable, takeWhile, withLatestFrom} from 'rxjs';\nimport {Annotation} from '../model/annotation';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {ScaleType} from \"../model/enum/scale-type\";\n\n@Component({\n selector: 'teta-svg-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartService, ZoomService, ScaleService, BrushService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent implements OnInit, OnChanges, OnDestroy {\n hasSeriesData: Observable<boolean>;\n svcConfig: Observable<IChartConfig>;\n @Output()\n pointerMove: EventEmitter<IChartEvent<Map<number, number>>> = new EventEmitter<IChartEvent<Map<number, number>>>();\n\n @Output()\n plotBandsMove: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandClick: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandContextMenu: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotLinesMove: EventEmitter<IChartEvent<PlotLine>> = new EventEmitter<IChartEvent<PlotLine>>();\n\n @Output()\n pointMove: EventEmitter<IChartEvent<IPointMove>> = new EventEmitter<IChartEvent<IPointMove>>();\n\n @Output()\n chartClick: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n chartContextMenu: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n annotationContextMenu: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationClick: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationMove: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n zoomServiceInstance: EventEmitter<ZoomService> = new EventEmitter<ZoomService>();\n\n @Output()\n brushServiceInstance: EventEmitter<BrushService> = new EventEmitter<BrushService>();\n\n @Input() set config(config: IChartConfig) {\n this.chartService.setConfig(config);\n this.zoomService.setBroadcastChannel(config?.zoom?.syncChannel);\n }\n\n private _alive = true;\n\n constructor(public chartService: ChartService,\n public zoomService: ZoomService,\n public brushService: BrushService,\n public scaleService: ScaleService) {\n this.svcConfig = this.chartService.config;\n this.hasSeriesData = this.svcConfig.pipe(\n map(\n (_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)\n )\n );\n }\n\n resetZoom() {\n this.scaleService.resetZoom();\n }\n\n // setZoom() {\n // this.zoomService.fireZoom()\n // }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngOnInit(): void {\n this.zoomServiceInstance.emit(this.zoomService);\n this.brushServiceInstance.emit(this.brushService);\n\n this.chartService.pointerMove\n .pipe(\n takeWhile(() => this._alive),\n withLatestFrom(this.scaleService.scales, this.chartService.config)\n )\n .subscribe((data: [PointerEvent, IScalesMap, IChartConfig]) => {\n const [event, {x, y}, config] = data;\n const tooltipTracking = config?.tooltip?.tracking;\n if (tooltipTracking === TooltipTracking.y) {\n const result = new Map<number, number>();\n y.forEach((value, key) => {\n if (value.options.scaleType.type === ScaleType.band) {\n return;\n }\n result.set(key, value.scale.invert(event.offsetY));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n } else {\n const result = new Map<number, number>();\n x.forEach((value, key) => {\n if (value.options.scaleType.type === ScaleType.band) {\n return;\n }\n result.set(key, value.scale.invert(event.offsetX));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n }\n });\n\n this.chartService.plotBandEvent\n .pipe(\n takeWhile(() => this._alive)\n )\n .subscribe((_) => {\n this.plotBandsMove.emit(_);\n });\n\n this.chartService.plotLineMove.pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.plotLinesMove.emit(_);\n });\n\n this.chartService.pointMove.pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.pointMove.emit(_);\n });\n\n this.chartService.chartClick\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartClick.emit(_);\n });\n\n this.chartService.chartContextMenu\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartContextMenu.emit(_);\n });\n\n this.chartService.plotBandClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandClick.emit(_);\n });\n\n this.chartService.plotBandContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandContextMenu.emit(_);\n });\n\n this.chartService.annotationContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationContextMenu.emit(_);\n });\n\n this.chartService.annotationClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationClick.emit(_);\n });\n\n this.chartService.annotationMove\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationMove.emit(_);\n });\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n","import {ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {SeriesBaseComponent} from \"../../base/series-base.component\";\nimport {BasePoint} from \"../../model/base-point\";\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {ZoomService} from \"../../service/zoom.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: 'svg:svg[teta-bandseries]',\n templateUrl: './bandseries.component.html',\n styleUrls: ['./bandseries.component.scss']\n})\nexport class BandseriesComponent extends SeriesBaseComponent<BasePoint> implements OnInit {\n\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex)?.scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex)?.scale));\n\n\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, y: y | async} as scales\">\n <ng-container *ngFor=\"let band of _series.data\">\n <svg:rect [attr.x]=\"scales.x(band.x)\"\n [attr.y]=\"scales.y(band.y) - scales.y.bandwidth() / 2\"\n [attr.width]=\"scales.x(band.x1) - scales.x(band.x)\"\n fill=\"red\"\n [attr.height]=\"scales.y.bandwidth()\">\n </svg:rect>\n <svg:text\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n class=\"label font-caption fill-text-90\"\n [attr.x]=\"scales.x(band.x) + (scales.x(band.x1) - scales.x(band.x)) / 2\"\n [attr.y]=\"scales.y(band.y)\">{{band.y}}\n </svg:text>\n </ng-container>\n\n</ng-container>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChartComponent} from './chart/chart.component';\nimport {SeriesHostComponent} from './chart-container/series-host/series-host.component';\nimport {ChartContainerComponent} from './chart-container/chart-container.component';\nimport {LegendComponent} from './legend/legend.component';\nimport {SeriesBaseComponent} from './base/series-base.component';\nimport {LineSeriesComponent} from './chart-container/series/line/line-series.component';\nimport {GridlinesComponent} from './chart-container/gridlines/gridlines.component';\nimport {XAxisComponent} from './chart-container/x-axis/x-axis.component';\nimport {YAxisComponent} from './chart-container/y-axis/y-axis.component';\nimport {PlotlineComponent} from './chart-container/plotline/plotline.component';\nimport {PlotBandComponent} from './chart-container/plotband/plot-band.component';\nimport {BarSeriesComponent} from './chart-container/series/bar/bar-series.component';\nimport {TooltipComponent} from './chart-container/tooltip/tooltip.component';\nimport {ZoomableDirective} from './directives/zoomable.directive';\nimport {BrushableDirective} from './directives/brushable.directive';\nimport {ScatterSeriesComponent} from './chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from './chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from './chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from './chart-container/series/area-series/area-series.component';\nimport {AnnotationComponent} from './chart-container/annotation/annotation.component';\nimport {LinearSeriesBase} from './chart-container/series/linear-series-base';\nimport {CrosshairComponent} from './chart-container/crosshair/crosshair.component';\nimport {LetModule} from '@tetacom/ng-components';\nimport {DraggablePointDirective} from './directives/draggable-point.directive';\nimport { BandseriesComponent } from './stories/bandseries/bandseries.component';\n\n@NgModule({\n declarations: [\n ChartComponent,\n SeriesHostComponent,\n ChartContainerComponent,\n LegendComponent,\n SeriesBaseComponent,\n LinearSeriesBase,\n LineSeriesComponent,\n GridlinesComponent,\n XAxisComponent,\n YAxisComponent,\n PlotlineComponent,\n PlotBandComponent,\n BarSeriesComponent,\n TooltipComponent,\n ZoomableDirective,\n BrushableDirective,\n AreaSeriesComponent,\n ScatterSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n AnnotationComponent,\n CrosshairComponent,\n DraggablePointDirective,\n BandseriesComponent,\n ],\n exports: [\n ChartComponent,\n LegendComponent,\n SeriesBaseComponent,\n LineSeriesComponent,\n BarSeriesComponent,\n ScatterSeriesComponent,\n AreaSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n ],\n imports: [CommonModule, LetModule],\n})\nexport class ChartModule {\n}\n","import { SvgAttributes } from './svg-attributes';\n\nexport class PlotBand {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.from = options?.from;\n this.to = options?.to;\n this.label = options?.label;\n this.showGrabbers =\n options?.showGrabbers != null ? options.showGrabbers : true;\n this.draggable = options?.draggable != null ? options?.draggable : false;\n this.resizable = options?.resizable != null ? options?.resizable : true;\n this.min = options?.min;\n this.max = options?.max;\n this.style = options?.style;\n }\n}\n","import {SvgAttributes} from './svg-attributes';\n\nexport class PlotLine {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.value = options?.value;\n this.label = options?.label;\n this.min = options?.min;\n this.max = options?.max;\n this.draggable = options?.draggable;\n this.style = options?.style;\n }\n}\n","/*\n * Public API Surface of chart\n */\n\nexport * from './chart/chart.module';\nexport * from './chart/service/public-api';\nexport * from './chart/base/series-base.component';\nexport * from './chart/chart/chart.component';\nexport * from './chart/legend/legend.component';\nexport * from './chart/model/public-api';\nexport * from './chart/chart-container/series/public-api';\nexport * from './chart/core/axis/axis';\nexport * from './chart/core/utils/public-api'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BroadcastService","i2.ChartService","i1.ChartService","i2.ZoomService","i2.ScaleService","i3.ZoomService","i5.DraggablePointDirective","i1.ScaleService","i3","i2","i1.ZoomService","i3.ChartService","i1.BrushService","i5.SeriesHostComponent","i6.GridlinesComponent","i7.XAxisComponent","i8.YAxisComponent","i9.PlotlineComponent","i10.PlotBandComponent","i11.TooltipComponent","i12.ZoomableDirective","i13.BrushableDirective","i14.AnnotationComponent","i15.CrosshairComponent","i3.BrushService","i4.ScaleService","i5","i6.ChartContainerComponent","i7.LegendComponent"],"mappings":";;;;;;;;;;;;;AAAY,IAAA,SAIX;AAJD,CAAA,UAAY,QAAQ,EAAA;IAClB,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACJ,CAAC,EAJW,QAAQ,KAAR,QAAQ,GAInB,EAAA,CAAA,CAAA;;MCJY,WAAW,CAAA;AAMtB,IAAA,WAAA,CAAY,OAKX,EAAA;AAVD,QAAA,IAAG,CAAA,GAAA,GAAY,CAAC,CAAC;AACjB,QAAA,IAAK,CAAA,KAAA,GAAY,CAAC,CAAC;AACnB,QAAA,IAAM,CAAA,MAAA,GAAY,CAAC,CAAC;AACpB,QAAA,IAAI,CAAA,IAAA,GAAY,CAAC,CAAC;AAQhB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,GAAG,KAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,KAAK,KAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,KAAI,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,IAAI,KAAI,CAAC,CAAC;KAChC;AACF;;ACjBW,IAAA,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;IACzB,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;AACH,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA;;ACHW,IAAA,iBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;IAC1B,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAG3B,EAAA,CAAA,CAAA;;ACGM,MAAM,kBAAkB,GAAG,OAAqB;AACrD,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,YAAY,EAAE,gBAAgB,CAAC,IAAI;AACpC,KAAA;IACD,MAAM,EAAE,IAAI,WAAW,CAAC;AACtB,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,KAAK,EAAE,EAAE;KACV,CAAC;AACF,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE,IAAI;AACb,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC3B,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,EAAE,EAAE;AACL,YAAA,CAAC,EAAE,EAAE;AACN,SAAA;AACF,KAAA;AACD,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,SAAS,EAAE;AACT,QAAA,MAAM,EAAE,IAAI;AACb,KAAA;AACF,CAAA,CAAC;;ACvCU,IAAA,UAQX;AARD,CAAA,UAAY,SAAS,EAAA;IACnB,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;IACN,SAAA,CAAA,SAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IACH,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;IACN,SAAA,CAAA,SAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IACH,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACN,CAAC,EARW,SAAS,KAAT,SAAS,GAQpB,EAAA,CAAA,CAAA;;ACLM,MAAM,iBAAiB,GAAgB;AAC5C,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,SAAS,CAAC,MAAM;AACvB,KAAA;AACD,IAAA,SAAS,EAAE,KAAK;CACjB;;ACVW,IAAA,WAOX;AAPD,CAAA,UAAY,UAAU,EAAA;IACpB,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IACH,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;IACP,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;IACL,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACX,CAAC,EAPW,UAAU,KAAV,UAAU,GAOrB,EAAA,CAAA,CAAA;;ACPW,IAAA,SAGX;AAHD,CAAA,UAAY,QAAQ,EAAA;IAClB,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;IACP,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACV,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AACW,IAAA,cAGX;AAHD,CAAA,UAAY,aAAa,EAAA;IACvB,aAAA,CAAA,aAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,aAAA,CAAA,aAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;AACH,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA;;ACPW,IAAA,oBAIX;AAJD,CAAA,UAAY,mBAAmB,EAAA;IAC7B,mBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,mBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACN,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAI9B,EAAA,CAAA,CAAA;;ACEM,MAAM,mBAAmB,GAAG,OAA0B;AAC3D,IAAA,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC1B,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAC3C,CAAA,CAAC;;MCeW,YAAY,CAAA;AAgCvB,IAAA,WAAA,GAAA;QAfQ,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAe,kBAAkB,EAAE,CAAC,CAAC;QAClE,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAgB,CAAC;QAC3C,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAA0C,IAAI,GAAG,EAAE,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAyB,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAA2B,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAA0B,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAC;AAC1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAC1D,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAA2B,CAAC;QAM/D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAC5C,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EACvB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EACrB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAC5B,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAC7B,WAAW,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CACH,CAAC;QAGF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB;AACzC,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,OAAO,CAAA,EAAA,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB;AAC/C,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,aAAa,CAAA,EAAA,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;AACrC,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,OAAO,CAAA,EAAA,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc;AAC3C,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,aAAa,CAAA,EAAA,CAAC,CAAC,CAAC;;;KAG1D;AAEM,IAAA,SAAS,CAAC,MAAoB,EAAA;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;AAEM,IAAA,OAAO,CAAC,IAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAEM,IAAA,cAAc,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAEM,IAAA,UAAU,CAAC,OAAwB,EAAA;AACxC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAClB,YAAA,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;AAAM,aAAA;YACL,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,SAAA;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,GAAG,CAAqC,eAAe,CAAC,CAC7D,CAAC;KACH;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;KAChC;IAEY,sBAAsB,CAAC,WAAmC,EAAE,OAAiB,EAAA;;YAExF,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,MAAM,MAAK,CAAC,EAAE;gBAC7B,OAAO;AACR,aAAA;AAED,YAAA,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACjC,gBAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;AAErF,gBAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;oBAC5B,OAAO;AACR,iBAAA;gBACD,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAErI,gBAAA,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;AAC5J,gBAAA,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,eAAe,KAAK,CAAC,CAAC;AAC1G,aAAC,CAAC,CAAA;YAEF,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAChC,aAAA;AAAS,oBAAA;AACR,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEM,IAAA,kBAAkB,CAAC,KAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AAEM,IAAA,cAAc,CAAC,KAA8B,EAAA;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAEM,IAAA,YAAY,CAAC,KAA4B,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAEM,IAAA,YAAY,CAAC,KAA4B,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAEM,IAAA,SAAS,CAAC,KAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAEM,IAAA,cAAc,CAAC,KAA6B,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAEM,IAAA,oBAAoB,CAAC,KAA6B,EAAA;AACvD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;;;;;;;;AAUO,IAAA,UAAU,CAAC,MAAoB,EAAA;;QACrC,IAAG,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;AACxB,QAAA,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,YAAY,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,oBAAoB,CAAE,CAAA,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;KAC1G;AAEO,IAAA,mBAAmB,CAAC,MAAoB,EAAA;QAC9C,IAAG,CAAC,MAAM,CAAC,IAAI;AAAE,YAAA,OAAO,MAAM,CAAC;AAE/B,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,CAAG,EAAA,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,oBAAoB,CAAA,CAAE,CAAC,CAAC;AACjG,QAAA,IAAI,YAAY,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAA2B,CAAC;AAChE,YAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACjD,gBAAA,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEzC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;AAE5E,gBAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;AAC5B,oBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;AAC9I,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,eAAe,KAAK,CAAC,CAAC;AAC3F,iBAAA;AAGD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC,CAAC;AAGH,YAAA,OAAO,MAAM,CAAA;AACd,SAAA;AAED,QAAA,OAAO,MAAM,CAAA;KACd;AAEO,IAAA,WAAW,CAAC,IAA4B,EAAA;;AAE9C,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAExB,QAAA,MAAM,aAAa,GAAG,CAAC,aAAa,KAAI;YACtC,OAAO,CAAC,MAAM,KAAI;gBAChB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAClD,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AAE5B,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAExE,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;;AAC7C,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,CAAC,CACJ,EAAA,EAAA,IAAI,EAAE,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAClB,EAAE,EAAE,CAAA,EAAA,GAAA,CAAC,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,EACjB,CAAA,CAAA;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE/D,QAAA,MAAM,iBAAiB,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAA,MAAM,iBAAiB,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,CAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,MAAM,IAAG,CAAC,EAAE;AACjC,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,SAAA;QAED,IAAI,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,MAAM,IAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB,SAAA;QAED,IAAI,CAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,MAAM,IAAG,CAAC,EAAE;AACjC,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AACxB,SAAA;QAED,IAAI,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,MAAM,IAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAC5B,EAAE,EACF,kBAAkB,EAAE,CAAC,OAAO,EAC5B,MAAM,CAAC,OAAO,CACf,CAAC;AAEF,QAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CACzB,EAAE,EACF,kBAAkB,EAAE,CAAC,IAAI,EACzB,MAAM,CAAC,IAAI,CACZ,CAAC;AAEF,QAAA,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAEzD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,kBAAkB,CAAC,MAAoB,EAAA;;QAC7C,IAAI,MAAM,CAAC,QAAQ,EAAE;YAGnB,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhC,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAErB,YAAA,MAAM,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,CAAC,KAAK,KAAI;;AAC3C,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3B,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3B,gBAAA,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;AACrB,gBAAA,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;gBACrB,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,EAC1C,IAAI,EAAE,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,CAAC,KAAK,KAAI;AAC/B,wBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,KAAK,CACR,EAAA,EAAA,CAAC,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,CAAC,EACX,CAAC,EAAE,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,CAAC,EACX,EAAE,EAAE,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,EAAE,EACb,EAAE,EAAE,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,EAAE,EACb,CAAA,CAAA;AACJ,qBAAC,CAAC,EACF,CAAA,CAAA;AACJ,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;YACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAU,CAAC,CAAA,EAAA,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA,CAAA,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAU,CAAC,CAAA,EAAA,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA,CAAA,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;;AA7Qc,YAAoB,CAAA,oBAAA,GAAG,eAAgB,CAAA;yGA9B3C,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC7BW,IAAA,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;IACzB,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;AACH,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA;;MCIY,gBAAgB,CAAA;AAG3B,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAiC,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,aAAa,CAAC,KAAqC,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,eAAe,CAAC,OAAe,EAAA;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CACzC,MAAM,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CACpD,CAAC;KACH;;6GAfU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCOY,WAAW,CAAA;IAOtB,WAAoB,CAAA,UAA4B,EAC5B,MAAoB,EAAA;AADpB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;AAC5B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAc;QALhC,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,CAAC;AAMvD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,IAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,aAAa,CAAC,IAAiB,EAAA;;AAC7B,QAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,IAAI,CAAC,gBAAgB;AAC9B,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,OAAe,EAAA;;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;AAChC,QAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,aAAa,CAC/B,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAC7E;iBACE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAiD,KAAI;;gBAC9E,OAAO,CAAA,MAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAK,MAAM,CAAC,EAAE,KACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;qBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC;qBAC3F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7F,CAAC;AACJ,aAAC,CAAC,CAAC;iBACF,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAI;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAED,cAAc,CAAC,YAA8B,EAC9B,cAAgC,EAChC,KAAK,EACL,WAA4B,EAC5B,QAAiB,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC9C,QAAA,IAAI,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA;AACL,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,aAAA;AACF,SAAA;AAED,QAAA,IAAI,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA;AACL,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACvE,aAAA;AACF,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAClC;;wGA7EU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACZM,MAAM,YAAY,GAAG,CAC1B,SAAkC,EAClC,WAAW,GAAG,GAAG,EACjB,QAAQ,GAAG,EAAE,KACH;IACV,IAAI,IAAI,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,SAAS,GAAI,EAAE,CAAC;AAC3B,IAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEvB,IAAA,OAAO,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9C;;SCPgB,aAAa,CAAC,QAAkB,EAAE,KAAK,GAAG,EAAE,EAAA;AAC1D,IAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC5B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC;IAErC,MAAM,KAAK,GAAG,EAAE;SACb,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,QAAQ,CAAC;SACpC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;AAEjC,IAAA,OAAO,KAAK,CAAC;AACf;;MCJa,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AACU,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAClB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;KAsC5B;AApCC,IAAA,KAAK,CAAC,QAAc,EAAA;AAClB,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AAEpC,QAAA,IAAI,QAAQ,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC9C,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAE7E,YAAA,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAE/D,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;AACxC,YAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAG/B,IAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AACrD,gBAAA,KAAK,CAAC,KAAK,GAAG,CAAC,KAAc,KAAI;AAC/B,oBAAA,OAAO,KAAK,CAAC,MAAM,EAAE,CAAA;AACvB,iBAAC,CAAA;AACF,aAAA;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE9B,YAAA,MAAM,qBAAqB,GAAG,QAAQ,CACpC,KAAK,EACL,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAC3B,CAAC;AAEF,YAAA,YAAY,IAAI,YAAY,CAC1B,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,EACvC,IAAI,CAAC,WAAW,CACjB,CAAC;AACH,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC9C,YAAA,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AACF;;MCxCY,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AACU,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,GAAG,EACF;AAC9B,aAAA,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,aAAA,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAA,CAAA,QAAQ,GAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAgChD;AA9BC,IAAA,KAAK,CAAC,QAAc,EAAA;AAClB,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAEjC,QAAA,MAAM,MAAM,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,KAAI,IAAI,CAAC;AACpC,QAAA,MAAM,MAAM,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,KAAI,IAAI,CAAC;AAEpC,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAgB,EAAE,OAAO,KAAI;gBAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACjC,EAAE,EAAE,CAAC,CAAC;AACP,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAErE,IAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;gBACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACnC,aAAA;AAEF,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,GAAG,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,GAAG,CAAC;AACjC,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AACF;;MCrCY,IAAI,CAAA;AAgCf,IAAA,WAAA,CAAY,MAAoB,EAAA;QA5BxB,IAAA,CAAA,SAAS,GAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAIxC,IAAA,CAAA,aAAa,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAIzC,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,GAAG,EAAkB;aAClD,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACzC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,aAAA,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAI,EAAE,OAAO,CAAC,CAAA,EAAC,CAAC,CAAA;AAIjC,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,GAAG,EAAkB;aAC9C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC;aACrC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC;aACrC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;aACjC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;aACjC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAGnC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;KAC3B;AAED;;;;;;;;AAQG;AACI,IAAA,OAAO,UAAU,CACtB,WAA4B,EAC5B,MAAoB,EACpB,KAAa,EAAA;AAEb,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;AACK,IAAA,SAAS,CAAC,WAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACjC;AAED;;;;AAIG;AACK,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED;;;AAGG;IACI,YAAY,GAAA;;AACjB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAwB,KAC5C,KAAK,CACH,IAAI,CAAC,YAAY,KAAK,eAAe,CAAC,CAAC,GAAG,YAAY,GAAG,YAAY,CACpE,KAAK,IAAI,CAAC,MAAM,CAAC;QAEtB,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACtD;IAEM,WAAW,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACtC;AAEM,IAAA,eAAe,CAAC,MAAwB,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;KAC7B;AAEM,IAAA,QAAQ,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAK;AACvB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;AAC7B,aAAC,CAAA;AACF,SAAA;KACF;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpD;IAEO,cAAc,GAAA;;KAErB;IAEO,UAAU,GAAA;QAChB,MAAM,OAAO,GACX,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;cAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;cAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAEM,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChE;IAEM,YAAY,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC5D;AAGF;;MCvKY,WAAW,CAAA;AAQtB,IAAA,WAAA,CAAY,OAOX,EAAA;QACC,IAAI,CAAC,SAAS,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;KAC7B;AACF,CAAA;MAEY,YAAY,CAAA;AAKvB,IAAA,WAAA,CAAY,OAIX,EAAA;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;KAC3B;AACF;;MClCY,YAAY,CAAA;IAevB,WACU,CAAA,YAA0B,EAC1B,WAAwB,EAAA;AADxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAd1B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;AACnD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEnD,QAAA,IAAY,CAAA,YAAA,GAAG,IAAI,GAAG,EAAkB;aAC7C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC;aACrC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;aACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC;aACrC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;aACjC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;AAOlC,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI;YACtB,IAAI,CAAC,YAAY,CAAC,MAAM;YACxB,IAAI,CAAC,WAAW,CAAC,MAAM;SACxB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,IAAkD,KAAI;;YACzD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAElC,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AAC5B,gBAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YAGH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AAC5B,gBAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;;YAGH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,mBAAK,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,0CAAE,OAAO,MAAI,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,0CAAE,QAAQ,CAAA,CAAA,EAAA,CAAC;AACxD,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAK,IAAI,CAAA,EAAA,CAAC;AACjE,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE/C,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;AAEpD,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;AACxB,gBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE3B,IAAI,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,QAAQ,EAAE;oBAC1B,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,iBAAA;AAED,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY;qBAC1B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;qBAClC,MAAM,CAAC,MAAM,CAAC;AACd,qBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhD,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC1B,KAAK,CAAC,IAAI,EAAE,CAAC;AACd,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE;oBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAClD,oBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,oBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACjB,iBAAA;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAGrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,gBAAA,MAAM,aAAa,GACjB,CAAA,CAAA,EAAA,GAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,eAAe,CAAC,CAAC;oBAC7C,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAK,IAAI,CAAC,KAAK,CAAC;gBAElC,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,eAAe,CAAC,CAAC,EAAE;oBAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjC,wBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,wBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/H,wBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,wBAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC9C,qBAAA;AACF,iBAAA;AACF,aAAA;;YAKD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACtC,MAAM,CAAC,CAAC,CAAC,mBAAK,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,0CAAE,OAAO,MAAI,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,0CAAE,QAAQ,CAAA,CAAA,EAAA,CAAC;AACxD,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACzC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAK,IAAI,CAAA,EAAA,CAAC;AACjE,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAE/C,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBACjB,GAAG;gBACH,MAAM;iBACN,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA;AACnB,iBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,CAAC;AAExB,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;AACxB,gBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE3B,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;oBAC1C,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,iBAAA;gBAED,IAAI,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,QAAQ,EAAE;AAC1B,oBAAA,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,iBAAA;AAED,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;qBAC5B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;qBAClC,MAAM,CAAC,MAAM,CAAC;qBACd,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAG3C,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC1B,KAAK,CAAC,IAAI,EAAE,CAAC;AACd,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE;oBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAClD,oBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,oBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACjB,iBAAA;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAErC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEtD,gBAAA,MAAM,aAAa,GACjB,CAAA,CAAA,EAAA,GAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,eAAe,CAAC,CAAC;oBAC7C,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAK,IAAI,CAAC,KAAK,CAAC;gBAElC,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,eAAe,CAAC,CAAC,EAAE;oBAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjC,wBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,wBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAC3D,CAAC,CAAC,YAAY,EACd,CAAC,CAAC,KAAK,EACP,eAAe,CAAC,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,CACnB,CAAC;AACF,wBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,wBAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC9C,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,OAAO;AACL,gBAAA,CAAC,EAAE,QAAQ;AACX,gBAAA,CAAC,EAAE,QAAQ;aACZ,CAAC;SACH,CAAC,EACF,WAAW,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CACH,CAAC;KACH;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAC3B,IAAI,CAAC,CAAC,CAAC,EACP,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAC5B,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAA6B,KAAI;YAC3D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AACnC,gBAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC;AAClD,gBAAA,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;AAC1B,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,IAAI,EAAE;4BACJ,KAAK;4BACL,WAAW,EAAE,eAAe,CAAC,CAAC;AAC/B,yBAAA;AACD,wBAAA,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,MAAM,CAAC,EAAE;AACnB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/B,oBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,EAAE;AAClE,wBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACrC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;YACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AACnC,gBAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC;AAClD,gBAAA,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;AAC1B,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,IAAI,EAAE;4BACJ,KAAK;4BACL,WAAW,EAAE,eAAe,CAAC,CAAC;AAC/B,yBAAA;AACD,wBAAA,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,MAAM,CAAC,EAAE;AACnB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/B,oBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,EAAE;AAClE,wBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACrC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH;;yGA9OU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCTY,YAAY,CAAA;AAIvB,IAAA,WAAA,GAAA;QAFQ,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAe,CAAC,CAAC,CAAC;QAGxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACrD;AAED,IAAA,QAAQ,CAAC,KAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;;yGAVU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACNW,IAAA,UAIX;AAJD,CAAA,UAAY,SAAS,EAAA;IACnB,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,SAAA,CAAA,SAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACJ,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA;;MCaY,mBAAmB,CAAA;IAsB9B,WACY,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EACnB,IAAa,EAAA;AALb,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AACnB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;KAExB;IA7BD,IACI,MAAM,CAAC,MAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACvB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IACI,MAAM,CAAC,MAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACvB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAeD,QAAQ,GAAA;KACP;;gHAjCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,oGAFpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAED,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;iBACb,CAAA;6NAGK,MAAM,EAAA,CAAA;sBADT,KAAK;gBAUF,MAAM,EAAA,CAAA;sBADT,KAAK;;;ACJF,MAAO,gBACX,SAAQ,mBAAsB,CAAA;IA2B9B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AA7BjC,QAAA,IAAA,CAAA,wBAAwB,GAAyH,IAAI,GAAG,EAAE,CAAC;QAUxJ,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,CAAC;KAsBnD;IApBD,IACa,MAAM,CAAC,MAAiB,EAAA;;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AAEvB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAC,CAAC,KAC1C,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,MAAM,KAAI,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,CAAC,MAAK,SAAS,IAAI,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,CAAC,MAAK,SAAS,IAAI,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,CAAC,MAAK,IAAI,IAAI,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,CAAC,MAAK,IAAI,CAAC,CAAC;KAC5F;AAED,IAAA,IAAa,MAAM,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAYQ,QAAQ,GAAA;AACf,QAAA,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,KAAK,CAC5C,KAAgB,EAChB,GAAW,EACX,GAAqB,KACnB;AACF,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,YAAA,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM;gBACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AAClB,iBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAC1C,iBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC;AAC7C,iBAAC,KAAK,CAAC,CAAC,IAAI,OAAO;oBACjB,KAAK,CAAC,EAAE,IAAI,OAAO;AACnB,qBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AAC3C,qBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAC9C;AACL,SAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,KAAK,CAC5C,KAAgB,EAChB,GAAW,EACX,GAAqB,KACnB;AACF,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,YAAA,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM;gBACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AAClB,iBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAC1C,iBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC;AAC7C,iBAAC,KAAK,CAAC,CAAC,IAAI,OAAO;oBACjB,KAAK,CAAC,EAAE,IAAI,OAAO;AACnB,qBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AAC3C,qBAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC;AACpD,SAAC,CAAC;QAEF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAElE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CACxC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EACxC,GAAG,CAAC,CAAC,IAAgC,KAAI;YACvC,MAAM,CAAC,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,GAAG,IAAI,CAAC;AAE7B,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;SAC3G,CAAC,EACF,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CACtD,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAI;;AACb,YAAA,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;AAC9C,YAAA,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAElF,MAAM,IAAI,GAAG,EAAE;AACZ,iBAAA,IAAI,EAAa;iBACjB,OAAO,CACN,CAAC,KAAK,KACJ,KAAK,CAAC,CAAC,KAAK,IAAI;gBAChB,KAAK,CAAC,CAAC,KAAK,IAAI;gBAChB,KAAK,CAAC,CAAC,KAAK,SAAS;gBACrB,KAAK,CAAC,CAAC,KAAK,SAAS;AACrB,gBAAA,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,gBAAA,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAClB;AACA,iBAAA,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,iBAAA,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjC,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAEpC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEjC,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAEhD,gBAAA,YAAY,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,aAAA;YAGD,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEjC,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAEhD,gBAAA,YAAY,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;SAC3B,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;KACd;AAED,IAAA,YAAY,CACV,KAAU,EACV,MAAW,EACX,MAAW,EAAA;;AAEX,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,CAAC,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;AACvD,QAAA,MAAM,gBAAgB,GAAG,CACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,KACF;YACF,MAAM,EAAE,GAAG,EAAS,CAAC;AACrB,YAAA,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3B,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,EAAE,CAAC,CAAC;YACT,CAAC;AACC,gBAAA,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;qBAC5C,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;AACC,gBAAA,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;qBAC3C,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE/B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;gBAExC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;gBACvB,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,EAAE,CAAC;AACZ,SAAC,CAAC;AAEF,QAAA,IAAI,eAAe,KAAK,eAAe,CAAC,CAAC,EAAE;AACzC,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,EAAE,YAAY,IAAI,EAAE;AACtB,gBAAA,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACnB,aAAA;AACD,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7C,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC7B,YAAA,MAAM,SAAS,GAAG,gBAAgB,CAChC,OAAO,EACP,KAAK,CAAC,CAAC,CAAC,EACR,OAAO,EACP,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,CAAC,EACxC,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,0CAAE,CAAC,CAAC,EACxC,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,CAAC,EACpC,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,CAAC,CAAC,CACrC,CAAC;YACF,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5F,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;oBAClB,KAAK,EAAE,EAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC;oBACrE,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,oBAAA,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC,CAAC;AACJ,aAAA;YAED,OAAO;gBACL,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,CAAC,EAAE,SAAS,CAAC,CAAC;aACf,CAAC;AACH,SAAA;AAED,QAAA,IAAI,eAAe,KAAK,eAAe,CAAC,CAAC,EAAE;AACzC,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAExD,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,EAAE,YAAY,IAAI,EAAE;AACtB,gBAAA,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACnB,aAAA;AACD,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7C,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAE7B,YAAA,MAAM,SAAS,GAAG,gBAAgB,CAChC,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,EACR,MAAM,CAAC,gBAAgB,EACvB,KAAK,CAAC,CAAC,CAAC,EACR,MAAM,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,CAAC,EACxC,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,CAAC,EACxC,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,CAAC,CAAC,EACpC,MAAM,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,CAAC,CAAC,CACrC,CAAC;YAEF,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAErC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5F,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;oBAClB,KAAK,EAAE,EAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC;oBACrE,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,oBAAA,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC,CAAC;AACJ,aAAA;YAED,OAAO;gBACL,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,CAAC,EAAE,SAAS,CAAC,CAAC;aACf,CAAC;AACH,SAAA;KACF;;6GAnRU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,yGAFjB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAED,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;iBACb,CAAA;wMAkBc,MAAM,EAAA,CAAA;sBADlB,KAAK;;;ACvCI,IAAA,cAIX;AAJD,CAAA,UAAY,aAAa,EAAA;IACvB,aAAA,CAAA,aAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,aAAA,CAAA,aAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAC,CAAA;IACD,aAAA,CAAA,aAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACJ,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA;;MCGY,uBAAuB,CAAA;AAoBlC,IAAA,WAAA,CAAoB,WAAuB,EAAA;AAAvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAGjC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAGlC,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAKpC,CAAC;AAEK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAKhC,CAAC;KAnBJ;AAuBD,IAAA,SAAS,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO;AACR,SAAA;QACD,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG;YACnB,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,KAAK,CAAC,CAAC;SACX,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzC;AAID,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACnE,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5C,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC,EAAE;gBAC1C,MAAM,GAAG,CAAC,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC,EAAE;gBAC1C,MAAM,GAAG,CAAC,CAAC;AACZ,aAAA;YACD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM;gBACN,MAAM;AACP,aAAA,CAAC,EAAE;AACF,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,OAAO;AACR,aAAA;YACD,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC;AACvD,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC;AACxD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,cAAc,GAAG;AACpB,oBAAA,CAAC,EAAE,MAAM;AACT,oBAAA,CAAC,EAAE,MAAM;iBACV,CAAC;AACH,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM;gBACN,MAAM;AACP,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;AAID,IAAA,SAAS,CAAC,KAAiB,EAAA;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC;gBACxC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC;AACzC,aAAA;YACD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM;gBACN,MAAM;AACP,aAAA,CAAC,EAAE;gBACF,OAAO;AACR,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC,EAAE;gBAC1C,MAAM,GAAG,CAAC,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC,EAAE;gBAC1C,MAAM,GAAG,CAAC,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM;gBACN,MAAM;AACP,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;IAED,YAAY,CAAC,CAAS,EAAE,CAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAa,UAAA,EAAA,CAAC,CAAO,IAAA,EAAA,CAAC,KAAK,CAAC;KAC9E;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;;oHA5IU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;iBAC/B,CAAA;iGAEU,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAoBI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAKG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAOG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBASP,SAAS,EAAA,CAAA;sBAFR,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBACpC,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAgBtC,OAAO,EAAA,CAAA;sBAFN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBACzC,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAyC3C,SAAS,EAAA,CAAA;sBAFR,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBAC3C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACrFxC,MAAO,mBACX,SAAQ,gBAAmB,CAAA;IAG3B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAuDxC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAgB,KAAI;YAC/B,OAAO,CAAC,QAAQ,KAAI;AAClB,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7E,wBAAA,OAAO,KAAK,CAAC;AACd,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7E,wBAAA,OAAO,KAAK,CAAC;AACd,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7E,wBAAA,OAAO,KAAK,CAAC;AACd,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7E,wBAAA,OAAO,KAAK,CAAC;AACd,qBAAA;AACF,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC;AACJ,SAAC,CAAC;KA5ED;IAKD,SAAS,CAAC,KAAK,EAAE,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAC,CAAC;KACvC;IAED,OAAO,CAAC,KAAK,EAAE,KAAK,EAAA;QAClB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACjB,YAAA,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,KAAK,EAAE,KAAK,EAAA;QACtB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACjB,YAAA,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA,CAAC,CAAC;KACJ;IAED,UAAU,CAAC,KAAK,EAAE,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC;KAChD;IAED,SAAS,CAAC,KAAK,EAAE,KAAK,EAAA;AACpB,QAAA,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7C,QAAA,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;KAC9C;;gHA9DU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wFCpBhC,u2GAiFA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD7Da,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u2GAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,CAAA;;;AEM3C,MAAO,kBACX,SAAQ,mBAAsB,CAAA;IAW9B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAPxC,QAAA,IAAI,CAAA,IAAA,GAAQ,IAAI,CAAC;KAUhB;IAEQ,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAC3B,CAAC,CAAC,KACA,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CACvE,CAAC;YAEF,OAAO,KAAK,CAAC,MAAM,CAAC;SACrB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,CAAC,KAAI;;AACR,YAAA,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;AACjD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,YAAA,OAAO,EAAE;AACN,iBAAA,SAAS,EAAU;iBACnB,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpB,MAAM,CAAC,MAAM,CAAC;iBACd,OAAO,CAAC,GAAG,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;AAEF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;KACH;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,OAAsB,EAAA,GAAI;;+GAvE3B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4GCxB/B,4xCAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDVa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4xCAAA,EAAA,CAAA;;;AER3C,MAAO,sBACX,SAAQ,mBAAsB,CAAA;IAQ9B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;KAGvC;IAEQ,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;KAC1F;IAED,eAAe,GAAA;KACd;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;;mHAvCU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2FCdnC,8nBAsBA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDRa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,8BAA8B,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8nBAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,CAAA;;;AEU3C,MAAO,oBACX,SAAQ,mBAAsB,CAAA;IAS9B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AATxC,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AAEpB,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAUV,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KAErD;IAEQ,QAAQ,GAAA;AAEf,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;AACF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAChB,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAI;;gBACnD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9B,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG;oBAClB,KAAK,CAAC,EAAE,IAAI,GAAG;oBACf,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,KAAI,GAAG;oBACxB,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,GAAG;AAC3B,qBAAC,KAAK,CAAC,CAAC,IAAI,GAAG;wBACb,KAAK,CAAC,EAAE,IAAI,GAAG;wBACf,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,KAAI,GAAG;AACxB,wBAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,GAAG,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;KACd;;iHAhEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,yFCtBjC,06EA6CA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDvBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,4BAA4B,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,06EAAA,EAAA,CAAA;;;AEE3C,MAAO,wBACX,SAAQ,mBAAsB,CAAA;IAQ9B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AARxC,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AAEpB,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AASV,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrD;IAEQ,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;AACF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CACnD,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAChB,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAI;;gBACnD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9B,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG;oBAClB,KAAK,CAAC,EAAE,IAAI,GAAG;oBACf,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,KAAI,GAAG;oBACxB,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,GAAG;AAC3B,qBAAC,KAAK,CAAC,CAAC,IAAI,GAAG;wBACb,KAAK,CAAC,EAAE,IAAI,GAAG;wBACf,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,KAAI,GAAG;AACxB,wBAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,GAAG,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;IAED,eAAe,GAAA;KACd;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAClB,YAAA,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;;qHA7DU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8FCtBrC,0gHAgEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD1Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0gHAAA,EAAA,CAAA;;;AEK3C,MAAO,mBACX,SAAQ,gBAAmB,CAAA;IAQ3B,WACqB,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAEtC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AANjC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AATxC,QAAA,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;AAC9B,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AAWlB,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrD;IAEQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAC3C,GAAG,CACD,CACE,IAAI,KACF;;AACF,YAAA,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC;AAEpB,YAAA,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;AAC9C,YAAA,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;YAE9C,IAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACrB,gBAAA,OAAO,EAAE,CAAA;AACV,aAAA;YAED,MAAM,IAAI,GAAG,EAAE;AACZ,iBAAA,IAAI,EAAa;iBACjB,OAAO,CACN,CAAC,KAAK,KACJ,KAAK,CAAC,CAAC,KAAK,IAAI;gBAChB,KAAK,CAAC,CAAC,KAAK,IAAI;AAChB,gBAAA,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,gBAAA,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAClB,CAAC;YAEJ,IAAI;AACD,iBAAA,EAAE,CAAC,CAAC,CAAC,KACJ,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/D;AACA,iBAAA,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtB,iBAAA,CAAC,CAAC,CAAC,CAAC,KACH,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACZ,CAAC;AAGJ,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClF,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAEpC,IAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEjC,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAEhD,gBAAA,YAAY,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,aAAA;YAGD,IAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEjC,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,gBAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAEhD,gBAAA,YAAY,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;SAC3B,CACF,CACF,CAAC;KACH;;gHAnFU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wFCzBhC,yyEAuDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD9Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yyEAAA,EAAA,CAAA;;;AEd1C,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAChB;AAC5B,KAAA,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC;AACzC,KAAA,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC;AACvC,KAAA,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC;AAC/C,KAAA,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC;AAC3C,KAAA,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC;AACzC,KAAA,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,wBAAwB,CAAC;;MCMzC,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CACU,gBAAkC,EAAA;AAAlC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAJpC,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;KAMrB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC7D,IAAI,CAAC,MAAM,CAAC,SAAS;gBACnB,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC;AACzE,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACjD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;YACxF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC;AACpE,SAAA;KACF;;gHApCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,+HAHpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAGD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD,CAAA;uGAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCLK,kBAAkB,CAAA;IAU7B,WAAoB,CAAA,GAAiB,EAAU,YAA0B,EAAA;AAArD,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAEvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CACrC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,CAAC,CAA6B,KAAI;;AACpC,YAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpC,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvK,CAAC,CAAC,CAAC;QAEN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CACrC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,CAAC,CAA6B,KAAI;;AACpC,YAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnC,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,KAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrK,CAAC,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;KAC9D;IAED,eAAe,GAAA;KAEd;;+GAnCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,kFCnB/B,+4BA4BA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDTa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+4BAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,CAAA;wHAItC,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEFK,cAAc,CAAA;IAUzB,WAAoB,CAAA,YAA0B,EAAU,IAAkB,EAAA;AAAtD,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAHlE,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AAGpB,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;;AAC/C,YAAA,OAAO,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;SACxC,CAAC,CAAC,CAAC;AAGJ,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACrD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,GAAG,CAAC,CAAC,CAAyB,KAAI;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAChK,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;SAClE,CAAC,CACH,CAAC;KACH;IAED,iBAAiB,GAAA;QACf,OAAO,CAAA,UAAA,EACL,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CACpB,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA,CAAA,CAAG,CAAC;KAC/C;IAED,QAAQ,GAAA;KACP;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,SAAA;KACF;;2GA5CU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kHCnB3B,yyBAWA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDQa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yyBAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,CAAA;wHAMtC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MENK,cAAc,CAAA;AASzB,IAAA,WAAA,CAAoB,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAFtC,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AAGpB,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;;AAC/C,YAAA,OAAO,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA;SACvC,CAAC,CAAC,CAAA;KACJ;AAED,IAAA,QAAQ,MAAW;IAEnB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,eAAe,GAAA;KACd;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,aACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACxB,cAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AACpB,cAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QACjB,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC;KAC1C;;2GA9BU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,6FClB3B,+0BAWA,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDOa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+0BAAA,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA,CAAA;gGAMtC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEAK,iBAAiB,CAAA;IAU5B,WACU,CAAA,GAAsB,EACtB,WAAwB,EACxB,YAA0B,EAC1B,YAA0B,EAC1B,OAAmB,EAAA;AAJnB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAV7B,QAAA,IAAW,CAAA,WAAA,GAAG,eAAe,CAAC;KAY7B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEnC,MAAM,eAAe,GAAG,EAAE;AACvB,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAClC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,EAAE;AACnB,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAClC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,EAAE;AACnB,aAAA,IAAI,EAAE;aACN,OAAO,CAAC,MAAK;YACZ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;gBAC/C,OAAO,EAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;AACxC,aAAA;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;gBAC/C,OAAO,EAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;AACxC,aAAA;AACH,SAAC,CAAC,CAAC;AACL,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY;aAC3B,EAAE,CACD,gBAAgB,EAChB,CAAC,KAAyC,EAAE,CAAW,KAAI;YACzD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CACzB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAC9C,CAAC;AACF,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;AAC7D,gBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,aAAA;AACD,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;AAC7D,gBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,aAAA;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK;AACL,gBAAA,MAAM,EAAE,CAAC;AACV,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CACF,CAAC;AAEJ,QAAA,eAAe,CAAC,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,WAAW,CAAC,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE3C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;KAC9C;AAED,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACvC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KACzB;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACxB;;8GAxFU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,sICvB9B,kqDA2CA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDpBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kqDAAA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,CAAA;wMAGtC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEHK,iBAAiB,CAAA;IAU5B,WACU,CAAA,YAA0B,EAC1B,WAAwB,EACxB,YAA0B,EAC1B,GAAsB,EACtB,OAAmB,EAAA;AAJnB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAT7B,QAAA,IAAW,CAAA,WAAA,GAAG,eAAe,CAAC;AAgL9B,QAAA,IAAe,CAAA,eAAA,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACrC,YAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,YAAA,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AAChD,YAAA,MAAM,IAAI,GAAI,IAAI,CAAC,QAAQ,CAAC,IAAY,YAAY,IAAI,GAAI,IAAI,CAAC,QAAQ,CAAC,IAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtH,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAU,YAAY,IAAI,GAAI,IAAI,CAAC,QAAQ,CAAC,EAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7G,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3E,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAC,CAAA;KA7KA;AAEkC,IAAA,KAAK,CAAC,KAAiB,EAAA;QACxD,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,KAAK;AACN,SAAA,CAAC,CAAC;KACJ;AAEwC,IAAA,WAAW,CAAC,KAAiB,EAAA;QACpE,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,KAAK;AACN,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,eAAe,GAAA;QAEb,MAAM,eAAe,GAAG,EAAE;AACvB,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAClC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvB,MAAM,YAAY,GAAG,EAAE;AACpB,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAClC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,EAAE;AACnB,aAAA,IAAI,EAAE;aACN,OAAO,CAAC,MAAK;YACZ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;gBAC/C,OAAO,EAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;AACvC,aAAA;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;gBAC/C,OAAO,EAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;AACvC,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY;aAC3B,EAAE,CACD,gBAAgB,EAChB,CAAC,KAAyC,EAAE,CAAW,KAAI;YAEzD,IAAI,QAAQ,GAAG,UAAU,CACvB,eAAe,CAAC,IAAI,CAClB,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CACjE,CACF,CAAC;YAEF,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CACxB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAC9C,CAAC;YAEF,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CACtB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ,CACzD,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK;AACL,gBAAA,MAAM,EAAE,CAAC;AACV,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CACF,CAAC;AAEJ,QAAA,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,EAAE;AACrB,aAAA,IAAI,EAAE,CAAC;AAEV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;aAC/B,EAAE,CACD,gBAAgB,EAChB,CAAC,KAAyC,EAAE,CAAW,KAAI;;YACzD,IAAI,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,MAAK,OAAO,EAAE;AAC3B,gBAAA,MAAM,EAAC,OAAO,EAAC,GAAG,CAAA,EAAA,GAAA,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,WAAW,0CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;gBACtD,UAAU,GAAG,OAAO,CAAC;AACtB,aAAA;AAED,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,GAAG,CAAC;YAC9B,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,GAAG,CAAC;YAE9B,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAC/B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAC9C,CAAC;YAEF,IAAI,UAAU,KAAK,MAAM,EAAE;AACzB,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;AAErC,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,oBAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,iBAAA;AAED,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;AACnB,iBAAA;AACF,aAAA;YAED,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC;AAEnC,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC;AACjB,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AAClB,oBAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;AACf,iBAAA;AACF,aAAA;YAED,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK;AACL,gBAAA,MAAM,EAAE,CAAC;AACV,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CACF,CAAC;AAEJ,QAAA,eAAe,CAAC,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,YAAY,CAAC,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;KAChD;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KACzB;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACxB;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9D,CAAC;KACH;AAYD,IAAA,OAAO,CAAC,CAAW,EAAA;;QACjB,IAAI,CAAA,EAAA,GAAA,MAAA,CAAC,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,EAAE;YACnC,OAAO,CAAA,KAAA,EAAQ,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAA,CAAA,CAAG,CAAC;AAClD,SAAA;QACD,OAAO,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;KAC/B;;8GArMU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+NCxB9B,wlIAoFA,EAAA,MAAA,EAAA,CAAA,wOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD5Da,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wlIAAA,EAAA,MAAA,EAAA,CAAA,wOAAA,CAAA,EAAA,CAAA;wMAGtC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAe6B,KAAK,EAAA,CAAA;sBAAvC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOQ,WAAW,EAAA,CAAA;sBAAnD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MExB5B,gBAAgB,CAAA;IAiB3B,WACU,CAAA,GAAiB,EACjB,GAAsB,EACtB,WAAwB,EACxB,SAAuB,EACvB,KAAa,EACb,WAAuB,EAAA;AALvB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AACvB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AACb,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAE/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KACrE;IAED,QAAQ,GAAA;;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,KAAmB,KAAI;AAC1B,YAAA,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;YACP,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CACvC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAC1B,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CACpC,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,CAAC,IAAI,KAAc;YACvC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtD,SAAC,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAG,CAAC,QAA2B,KAAc;YACjE,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzC,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;;AACrB,gBAAA,MAAM,cAAc,GAAG,CAA8D,2DAAA,EAAA,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;gBAExG,IAAI,IAAI,8EAA8E,cAAc,CAAA;uCACrE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;;AAEhC,iBAAA,EAAA,CAAC,CAAC,KAAK,CAAC,CAAS,YAAY,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAQ,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AACpF,iBAAA,EAAA,CAAC,CAAC,KAAK,CAAC,CAAS,YAAY,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAQ,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC,CAAC,CAAA;;wBAEhF,CAAC;AACnB,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;AAE/C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,QAA2C,KAAI;YAClD,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,MAAM,IAAG,CAAC,EAAE;AAC3B,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;YACD,MAAM,SAAS,GAAG,SAAS;AACzB,kBAAE,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvC,kBAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAClC,YAAA,OAAO,SAAS,CAAC;SAClB,CAAC,CACH,CAAC;KACH;AAEO,IAAA,WAAW,CAAC,KAAmB,EAAA;;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,YAAY,CAAC,WAAW,CAC7B;YACE,GAAG,EAAE,KAAK,CAAC,KAAK;YAChB,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,EACD,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,0CAAE,qBAAqB,EAAE,EACpD,KAAK,CAAC,IAAI,EACV,aAAa,CAAC,GAAG,EACjB,EAAE,CACH,CAAC;KACH;AAGD,IAAA,MAAM,CAAC,KAAoB,EAAA;QACzB,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;;6GAjHU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIiB,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BxD,osDA6CA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,osDAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,CAAA;gOAGtC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEmD,OAAO,EAAA,CAAA;sBAA/D,SAAS;uBAAC,SAAS,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAC,CAAA;;;MEb5C,iBAAiB,CAAA;AAc5B,IAAA,WAAA,CACU,UAAsB,EACtB,WAAwB,EACxB,YAA0B,EAC1B,IAAY,EAAA;AAHZ,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAbiB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAIlD,QAAA,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AAEb,QAAA,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAAC;AAoHxC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA4B,KAAI;YACxC,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrE,oBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;wBACvD,OAAM;AACP,qBAAA;oBAED,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;0BACvC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC3C,0BAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,oBAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;2BAC5C,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;AAC7C,2BAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE;wBAC/C,OAAO;AACR,qBAAA;AACD,oBAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;wBAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;AACrB,wBAAA,IAAI,EAAE;AACJ,4BAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACtB,4BAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACnC,yBAAA;wBACD,OAAO,EAAE,IAAI,CAAC,UAAU;wBACxB,MAAM;AACN,wBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACxB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC,iBAAA;AACD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC;AACzC,aAAA;AACH,SAAC,CAAC;KA5ID;IAED,QAAQ,GAAA;;QACN,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAK,gBAAgB,CAAC,IAAI,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAA,CAAC;AAClH,YAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC;AACtD,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,WAAW,GAAA;;QACT,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAEO,YAAY,GAAA;QAClB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAC1B,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAC5B,CAAC,SAAS,CAAC,CAAC,MAAmB,KAAI;;AAClC,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,MAAK,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,CAAA;AACnD,mBAAA,CAAA,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAK,IAAI,CAAC,IAAI,CAAC,KAAK;AACvC,mBAAA,CAAA,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxD,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpE,gBAAA,IAAI,SAAS,CAAC;AACd,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;oBAC1B,SAAS,GAAG,YAAY,CAAC;AAC1B,iBAAA;AAAM,qBAAA;oBACL,SAAS;AACP,wBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpI,iBAAA;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,iBAAiB,GAAA;;QACvB,MAAM,MAAM,GACV,CAAC,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,OAAO,MAAK,KAAK;aACjE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,KAAI,IAAI;AACjD,cAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC;cAChD,CAAC,QAAQ,CAAC;AACd,QAAA,MAAM,GAAG,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,KAAI,IAAI;AAClD,cAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC;cAChD,QAAQ,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;gBAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;AAC/B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/B,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,CAAC;AACpD,SAAA;QAED,IAAI,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,CAAA;AACjD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AACvD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAoB,CAAC;YAChD,MAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG;kBACjC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC5B,qBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA;kBACnB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe;AACjC,sBAAE,CAAC;sBACD,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG;kBACjC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC5B,qBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA;kBACnB,QAAQ,CAAC;YAEb,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3C,SAAA;QAGD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAExD,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAK,gBAAgB,CAAC,KAAK,EAAE;YAC9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;KACF;IAoCO,iBAAiB,GAAA;QACvB,IAAI,IAAI,GAA6B,OAAO,CAAC;AAC7C,QAAA,IAAI,QAAQ,CAAC;AAEb,QAAA,IAAI,CAAC,IAAI;AACN,aAAA,MAAM,CACL,CAAC,KAAK,KAAI;YACR,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAC7C,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AACzD,SAAC,CACF;AACA,aAAA,UAAU,CAAC,CAAC,KAAK,KAAI;;AACpB,YAAA,MAAM,KAAK,GACT,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,IAAI,MAAK,QAAQ,CAAC,CAAC;AACnC,kBAAE,CAAC,KAAK,CAAC,MAAM;AACf,kBAAE,CAAC,KAAK,CAAC,MAAM,CAAC;YACpB,OAAO,KAAK,GAAG,KAAK,CAAC;AACvB,SAAC,CAAC,CAAC;AAEL,QAAA,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAiB,KAAI;;AAC/C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,IAAI,SAAS,GAAG,YAAY,CAAC;AAC7B,YAAA,MAAM,KAAK,GACT,IAAI,KAAK,KAAK;AACZ,kBAAE,CAAC;kBACD,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;sBACzC,KAAK,CAAC,MAAM;AACd,sBAAE,KAAK,CAAC,MAAM,CAAC;YAErB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC/C,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAC7B,CAAC,EACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CACpC,CAAC;AACH,aAAA;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC/C,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAC7B,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EACnC,CAAC,CACF,CAAC;AACH,aAAA;YAED,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAErD,IAAI,MAAM,GACR,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;kBACvC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;kBACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAE1C,MAAM,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,IAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;AAE5E,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAA,EAAE;gBAC/C,OAAO;AACR,aAAA;AAED,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAA,EAAE;gBAC/C,OAAO;AACR,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;AAC9B,gBAAA,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU;AACxB,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACtB,oBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACnC,iBAAA;gBACD,MAAM;AACN,gBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACxB,aAAA,CAAC,CAAC;AAEH,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACpC,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAiB,KAAI;YAG9C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,OAAO;AACR,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;gBAC/B,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClB,IAAI,GAAG,MAAM,CAAC;AACd,gBAAA,QAAQ,GAAG,UAAU,CAAC,MAAK;AACzB,oBAAA,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnB,IAAI,GAAG,OAAO,CAAC;iBAChB,EAAE,EAAE,CAAC,CAAC;AACT,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;8GAhQU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;iBAC3B,CAAA;qKAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEiC,QAAQ,EAAA,CAAA;sBAA9C,WAAW;uBAAC,gBAAgB,CAAA;gBACW,SAAS,EAAA,CAAA;sBAAhD,WAAW;uBAAC,iBAAiB,CAAA;;;MCHnB,kBAAkB,CAAA;AAY7B,IAAA,WAAA,CACU,YAA0B,EAC1B,YAA0B,EAC1B,OAAmB,EACnB,IAAY,EAAA;AAHZ,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AACnB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAVd,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,GAAG,EAAoC;aAC3D,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;aAC7B,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACzB,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AASpB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACzD;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAChC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAC5B,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CACpD,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf;gBACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC/B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CACvB,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,eAAe,GAAA;;QACb,IAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AACpC,gBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBACvB,SAAS,EAAE,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;AAC7D,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC1C,SAAA;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,SAAA;QAED,IAAI,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC;AACH,SAAA;KACF;IAED,UAAU,CAAC,MAAoB,EAAE,UAAe,EAAA;;QAC9C,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACxC,QAAA,IAAI,MAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAuB,KAAI;;gBAC3D,IAAI,CAAC,CAAC,WAAW,EAAE;oBACjB,IAAI,CAAC,CAAC,CAAC,SAAS;wBAAE,OAAO;oBACzB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,SAAqB,CAAC;AAC3C,oBAAA,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE;AACnB,wBAAA,MAAM,SAAS,GACb,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAC/B,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACzD,wBAAA,MAAM,eAAe,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1D,wBAAA,MAAM,iBAAiB,GAAa;AAClC,4BAAA,IAAI,GAAG,eAAe;AACtB,4BAAA,EAAE,GAAG,eAAe;AACrB,yBAAA,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBAEzB,IACE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC3C,6BAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,EACjB;4BACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf;AACE,gCAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAChC,gCAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,CAAC;AACrD,6BAAA,CAAC,GAAG,CAAC,UAAU,CAAC,CAClB,CAAC;4BACF,OAAO;AACR,yBAAA;wBAED,IACE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC3C,6BAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,EACjB;4BACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf;AACE,gCAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAChC,gCAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,CAAC;AACpD,6BAAA,CAAC,GAAG,CAAC,UAAU,CAAC,CAClB,CAAC;4BACF,OAAO;AACR,yBAAA;wBAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACpC,4BAAA,IAAI,GAAG,eAAe;AACtB,4BAAA,EAAE,GAAG,eAAe;AACrB,yBAAA,CAAC,CAAC;wBACH,OAAO;AACR,qBAAA;AAED,oBAAA,IACE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/C,yBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,EACjB;AACA,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,SAAS;AACZ,8BAAE;AACA,gCAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACjB,gCAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA;6BACtC,CAAC,GAAG,CAAC,UAAU,CAAC;8BACf,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAC3D,CAAC;wBACF,OAAO;AACR,qBAAA;AAED,oBAAA,IACE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/C,yBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,EACjB;AACA,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,SAAS;AACZ,8BAAE;AACA,gCAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACjB,gCAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA;6BACtC,CAAC,GAAG,CAAC,UAAU,CAAC;8BACf,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAC3D,CAAC;wBACF,OAAO;AACR,qBAAA;AAED,oBAAA,IAAI,CAAC,CAAC,WAAW,YAAY,UAAU,EAAE;AACvC,wBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,qBAAA;AAED,oBAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AACpC,wBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACvB,wBAAA,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC3D,IAAI,EAAE,CAAC,CAAC,IAAI;AACb,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC1C,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;gBAC/B,UAAU,CAAC,MAAK;;oBACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEjC,oBAAA,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;oBAEjC,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE;wBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,qBAAA;oBAED,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,EAAE;wBACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7B,qBAAA;AAED,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,SAAS;0BACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;0BAC9B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAC1B,EAAE,CACH,CAAC;iBACH,EAAE,CAAC,CAAC,CAAC;AACR,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;;+GA9LU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;iBAC5B,CAAA;sKAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MCHK,mBAAmB,CAAA;AA2B9B,IAAA,WAAA,CACU,YAA0B,EAC1B,GAAsB,EACtB,YAA0B,EAAA;AAF1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAClC,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAK,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAK,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;KACvB;IAjCD,IAAa,UAAU,CAAC,UAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAED,IACI,IAAI,CAAC,IAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAkBkC,IAAA,KAAK,CAAC,KAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;YAC/B,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,UAAU;AACxB,SAAA,CAAC,CAAC;KACJ;AAEwC,IAAA,WAAW,CAAC,KAAiB,EAAA;AACpE,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;YAC/B,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,UAAU;AACxB,SAAA,CAAC,CAAC;KACJ;IAGD,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAChC;IAEO,IAAI,GAAA;AAEV,QAAA,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAa,KAAI;AAChD,gBAAA,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;AACjB,gBAAA,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;oBACnC,KAAK;AACL,oBAAA,MAAM,EAAE,CAAC;AACV,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACH,YAAA,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,SAAA;KACF;;gHAvEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,gSCnBhC,+2DA6CA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD1Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+2DAAA,EAAA,CAAA;wJAGlC,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,SAAS;gBAAC,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;gBA2BT,KAAK,EAAA,CAAA;sBAAvC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOQ,WAAW,EAAA,CAAA;sBAAnD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEpD5B,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAoB,YAA0B,EAAU,YAA0B,EAAU,GAAsB,EAAA;AAA9F,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAAU,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;KACjH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,KAAmB,KAAI;YAC1B,OAAO;AACL,gBAAA,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO;AACtD,gBAAA,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO;aACvD,CAAA;AACH,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;YACP,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAA;SAEH,CAAC,CACH,CAAA;KAEF;;+GAxBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,kFCV/B,6WAIA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,6WAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,CAAA;wJAMnB,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEyBK,uBAAuB,CAAA;IAwBlC,WACU,CAAA,IAAkB,EAClB,IAAuB,EACvB,aAA2B,EAC3B,YAAyB,EACzB,WAAuB,EACvB,KAAa,EAAA;AALb,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;AAClB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmB;AACvB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;AAC3B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;AACzB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AACvB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AAxBvB,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AAGZ,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,GAAG,EACM;AACtC,aAAA,GAAG,CACF,IAAI,EACJ,CAAC,IAAI,KAAK,CAAC,CAAO,KAChB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CACnE;AACA,aAAA,GAAG,CACF,KAAK,EACL,CAAC,IAAI,KAAK,CAAC,CAAO,KAChB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;YAC3B,CAAC,CAAC,OAAO,CAAC,OAAO;AACjB,YAAA,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CACxB,CAAC;AA+GI,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QArGnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI;;AAE1C,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,WAAW,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAC9C,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,CAAC,IAAgC,KAAI;;YACvC,MAAM,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;YAE9B,OAAO,CAAA,MAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,SAAS,CAAC,CAAC,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,QAAQ,CAAC,CAAC,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;SACpH,CAAC,EACF,WAAW,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CACH,CAAC;AAGF,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACpE,aAAA,IAAI,CACH,GAAG,CACD,CACE,IAAyC,KACvC;;AACF,YAAA,MAAM,CAAC,IAAI,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;YACpC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU;AACpB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/D,iBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM,KAAK,GAAG,UAAU;AACrB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACtD,iBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM,MAAM,GAAG,UAAU;AACtB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/D,iBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM,GAAG,GAAG,UAAU;AACnB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACtD,iBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3B,OAAO;gBACL,CAAC,EAAE,IAAI,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAA;gBAC7B,CAAC,EAAE,GAAG,IAAG,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA;gBAC3B,KAAK,EACH,IAAI,CAAC,KAAK;oBACV,IAAI;oBACJ,KAAK;AACL,qBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA;AACnB,qBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA;gBACtB,MAAM,EACJ,IAAI,CAAC,MAAM;oBACX,GAAG;oBACH,MAAM;AACN,qBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA;AAClB,qBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA;aACxB,CAAC;SACH,CACF,EACD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,WAAW,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CACH,CAAC;KACL;IAED,QAAQ,GAAA;KACP;IAED,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,CAAC,OAA8B,KAAI;YACrE,qBAAqB,CAAC,MAAK;AACzB,gBAAA,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;oBACvB,CAAC,OAAO,CAAC,MAAM;oBACf,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;oBACjC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAClC;oBACA,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KACxD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;KAC7B;IAID,YAAY,CAAC,IAAW,EAAE,IAAc,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,CAAC,IAAgC,KAAI;;YACvC,MAAM,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;YAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE5D,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAEtE,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAClC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CACrB,CAAC;YACF,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAClC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CACpB,CAAC;YAEF,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAClC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CACnB,CAAC;YAEF,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAClC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CACtB,CAAC;YAEF,MAAM,IAAI,GAAG,UAAU;AACpB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;iBAC/D,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;YAEnE,MAAM,GAAG,GAAG,UAAU;AACnB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;iBAC/D,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,CAAC;AAElE,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC1C,gBAAA,OAAO,aAAa,IAAI,CAAA,EAAA,EACtB,IAAI,CAAC,OAAO,CAAC,QAAQ;AACnB,sBAAE,kBAAkB;AACpB,sBAAE,IAAI,CAAC,MAAM,GAAG,oBACpB,GAAG,CAAC;AACL,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,EAAE;AAC1C,gBAAA,OAAO,CACL,UAAA,EAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AACnB,sBAAE,IAAI,CAAC,KAAK,GAAG,kBAAkB;AACjC,sBAAE,oBACN,CAAK,EAAA,EAAA,GAAG,GAAG,CAAC;AACb,aAAA;AAED,YAAA,OAAO,iBAAiB,CAAC;SAC1B,CAAC,CACH,CAAC;KACH;IAED,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;AAED,IAAA,KAAK,CACH,KAAiB,EACjB,OAA0B,EAC1B,OAA0B,EAAA;;QAE1B,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;QAChC,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AACvB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE;gBACN,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3B,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CACT,KAAiB,EACjB,OAA0B,EAC1B,OAA0B,EAAA;;QAE1B,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;QAChC,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE;gBACN,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3B,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,UAAU,CAAC,KAAK,EAAE,IAAuB,EAAA;;AACvC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,IAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;KAC7C;;oHAtPU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4DCrCpC,24MAsJA,EAAA,MAAA,EAAA,CAAA,6LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDjHa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,24MAAA,EAAA,MAAA,EAAA,CAAA,6LAAA,CAAA,EAAA,CAAA;;;MElBpC,eAAe,CAAA;AAY1B,IAAA,WAAA,CAAoB,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAXtC,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,GAAG,EAAsB;AAChD,aAAA,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACvB,aAAA,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1B,aAAA,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACvB,aAAA,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACvB,aAAA,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;AACzB,aAAA,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAGO,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;KAER;AAElD,IAAA,SAAS,CAAC,KAAwB,EAAA;;AAChC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,UAAU,CAAC,IAAI,CAAC,CAAC;KAC5D;AAED,IAAA,KAAK,CAAC,KAAwB,EAAA;QAC7B,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD;;4GApBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,yJCjB5B,8uBAYA,EAAA,MAAA,EAAA,CAAA,6NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDKa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8uBAAA,EAAA,MAAA,EAAA,CAAA,6NAAA,CAAA,EAAA,CAAA;gGAWtC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACiC,WAAW,EAAA,CAAA;sBAAjD,WAAW;uBAAC,wBAAwB,CAAA;;;MEO1B,cAAc,CAAA;AAiDzB,IAAA,WAAA,CAAmB,YAA0B,EAC1B,WAAwB,EACxB,YAA0B,EAC1B,YAA0B,EAAA;AAH1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAhD7C,QAAA,IAAA,CAAA,WAAW,GAAmD,IAAI,YAAY,EAAoC,CAAC;AAGnH,QAAA,IAAA,CAAA,aAAa,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAG/F,QAAA,IAAA,CAAA,aAAa,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAG/F,QAAA,IAAA,CAAA,mBAAmB,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAGrG,QAAA,IAAA,CAAA,aAAa,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAG/F,QAAA,IAAA,CAAA,SAAS,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAG/F,QAAA,IAAA,CAAA,UAAU,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAG9F,QAAA,IAAA,CAAA,gBAAgB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAGpG,QAAA,IAAA,CAAA,qBAAqB,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAG3G,QAAA,IAAA,CAAA,eAAe,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAGrG,QAAA,IAAA,CAAA,cAAc,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAGpG,QAAA,IAAA,CAAA,mBAAmB,GAA8B,IAAI,YAAY,EAAe,CAAC;AAGjF,QAAA,IAAA,CAAA,oBAAoB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAO5E,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QAMpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACtC,GAAG,CACD,CAAC,CAAC,KAAI,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,KAAI,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,CAAC,CAAC,KAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,CAAA,EAAA,CAAC,CAAA,CAAA,EAAA,CACzE,CACF,CAAC;KACH;IAjBD,IAAa,MAAM,CAAC,MAAoB,EAAA;;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,CAAC;KACjE;IAgBD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;KAC/B;;;;AAMD,IAAA,WAAW,CAAC,OAAsB,EAAA;KACjC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,CAAC,WAAW;aAC1B,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAC5B,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CACnE;AACA,aAAA,SAAS,CAAC,CAAC,IAA8C,KAAI;;AAC5D,YAAA,MAAM,CAAC,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AACrC,YAAA,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;AAClD,YAAA,IAAI,eAAe,KAAK,eAAe,CAAC,CAAC,EAAE;AACzC,gBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;gBACzC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;oBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;wBACnD,OAAO;AACR,qBAAA;AACD,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;gBACzC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;oBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;wBACnD,OAAO;AACR,qBAAA;AACD,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,aAAa;aAC5B,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CACjC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,UAAU;AACzB,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB;AAC/B,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAClB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,aAAa;aAC5B,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,mBAAmB;aAClC,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,qBAAqB;aACpC,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,eAAe;aAC9B,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,cAAc;aAC7B,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAED,eAAe,GAAA;KACd;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;2GA1LU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAHd,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BpE,60BAqBA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDaa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGf,SAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EACjD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,60BAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;uKAM/C,WAAW,EAAA,CAAA;sBADV,MAAM;gBAIP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAIP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAIP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAIP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAIP,SAAS,EAAA,CAAA;sBADR,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;gBAIP,gBAAgB,EAAA,CAAA;sBADf,MAAM;gBAIP,qBAAqB,EAAA,CAAA;sBADpB,MAAM;gBAIP,eAAe,EAAA,CAAA;sBADd,MAAM;gBAIP,cAAc,EAAA,CAAA;sBADb,MAAM;gBAIP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAIP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAGM,MAAM,EAAA,CAAA;sBAAlB,KAAK;;;AE/DF,MAAO,mBAAoB,SAAQ,mBAA8B,CAAA;IAKrE,WAA+B,CAAA,GAAiB,EACjB,GAAsB,EACtB,YAA0B,EAC1B,WAAwB,EACxB,OAAmB,EAAA;QAChD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AALvB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;KAEjD;IAEQ,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAA,CAAC,CAAC,CAAC;KAG1F;;gHAlBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uFCbhC,ktBAkBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDLa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,ktBAAA,EAAA,CAAA;;;ME2DzB,WAAW,CAAA;;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAtCpB,cAAc;QACd,mBAAmB;QACnB,uBAAuB;QACvB,eAAe;QACf,mBAAmB;QACnB,gBAAgB;QAChB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,sBAAsB;QACtB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;AACvB,QAAA,mBAAmB,CAaX,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,SAAS,aAV/B,cAAc;QACd,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;QAClB,sBAAsB;QACtB,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;yGAIf,WAAW,EAAA,OAAA,EAAA,CAFZ,YAAY,EAAE,SAAS,CAAA,EAAA,CAAA,CAAA;2FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxCvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,mBAAmB;wBACnB,uBAAuB;wBACvB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB,iBAAiB;wBACjB,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,wBAAwB;wBACxB,mBAAmB;wBACnB,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,mBAAmB;wBACnB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,mBAAmB;wBACnB,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;iBACnC,CAAA;;;MCjEY,QAAQ,CAAA;AAgBnB,IAAA,WAAA,CAAY,OAeX,EAAA;QACC,IAAI,CAAC,EAAE,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,EAAE,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY;AACf,YAAA,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,KAAI,IAAI,GAAG,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,GAAG,KAAK,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,KAAI,IAAI,GAAG,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,GAAG,IAAI,CAAC;QACxE,IAAI,CAAC,GAAG,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;KAC7B;AACF;;MC7CY,QAAQ,CAAA;AAUnB,IAAA,WAAA,CAAY,OASX,EAAA;QACC,IAAI,CAAC,EAAE,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;KAC7B;AACF;;AC/BD;;AAEG;;ACFH;;AAEG;;;;"}
|