@fluentui/react-charts 9.3.7 → 9.3.9
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/CHANGELOG.md +60 -2
- package/dist/index.d.ts +433 -7
- package/lib/PolarChart.js +1 -0
- package/lib/PolarChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.js +1 -28
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +27 -8
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.js +24 -3
- package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +111 -69
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +54 -4
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +31 -18
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +81 -44
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -3
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +33 -29
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +643 -366
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +24 -9
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +25 -5
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +16 -5
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +33 -8
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +26 -4
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +1 -1
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +13 -9
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +31 -19
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +23 -18
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +18 -18
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +5 -1
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +60 -10
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +18 -3
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +13 -2
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib/components/Legends/Legends.js +3 -4
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js +9 -2
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +65 -64
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/PolarChart/PolarChart.js +577 -0
- package/lib/components/PolarChart/PolarChart.js.map +1 -0
- package/lib/components/PolarChart/PolarChart.types.js +1 -0
- package/lib/components/PolarChart/PolarChart.types.js.map +1 -0
- package/lib/components/PolarChart/PolarChart.utils.js +174 -0
- package/lib/components/PolarChart/PolarChart.utils.js.map +1 -0
- package/lib/components/PolarChart/index.js +2 -0
- package/lib/components/PolarChart/index.js.map +1 -0
- package/lib/components/PolarChart/usePolarChartStyles.styles.js +72 -0
- package/lib/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
- package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js +61 -0
- package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.js +15 -5
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +24 -8
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +15 -5
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +13 -25
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +13 -78
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +48 -68
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib/types/DataPoint.js +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/ChartTitle.js +45 -0
- package/lib/utilities/ChartTitle.js.map +1 -0
- package/lib/utilities/Common.styles.js +73 -2
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +70 -1
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/image-export-utils.js +4 -4
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/index.js +1 -0
- package/lib/utilities/index.js.map +1 -1
- package/lib/utilities/utilities.js +219 -77
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/PolarChart.js +6 -0
- package/lib-commonjs/PolarChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +0 -26
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +0 -2
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +27 -8
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +34 -3
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +111 -69
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +65 -5
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +31 -18
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +80 -43
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +3 -4
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +3 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +59 -56
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +649 -368
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +22 -7
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +31 -4
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +15 -4
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +31 -6
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +36 -4
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +11 -7
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +39 -18
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +23 -18
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +16 -16
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +5 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +59 -9
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +26 -3
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +13 -2
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js +3 -4
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js +9 -2
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +64 -63
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +0 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/PolarChart/PolarChart.js +587 -0
- package/lib-commonjs/components/PolarChart/PolarChart.js.map +1 -0
- package/lib-commonjs/components/PolarChart/PolarChart.types.js +6 -0
- package/lib-commonjs/components/PolarChart/PolarChart.types.js.map +1 -0
- package/lib-commonjs/components/PolarChart/PolarChart.utils.js +204 -0
- package/lib-commonjs/components/PolarChart/PolarChart.utils.js.map +1 -0
- package/lib-commonjs/components/PolarChart/index.js +7 -0
- package/lib-commonjs/components/PolarChart/index.js.map +1 -0
- package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js +107 -0
- package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js +75 -0
- package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +15 -5
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +28 -6
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +14 -3
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +12 -24
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +0 -2
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +12 -77
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +47 -67
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/ChartTitle.js +53 -0
- package/lib-commonjs/utilities/ChartTitle.js.map +1 -0
- package/lib-commonjs/utilities/Common.styles.js +69 -1
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +69 -1
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +3 -3
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/index.js +1 -0
- package/lib-commonjs/utilities/index.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +235 -78
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +11 -17
- package/lib/components/DeclarativeChart/imageExporter.js +0 -223
- package/lib/components/DeclarativeChart/imageExporter.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +0 -233
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n ScatterChartPoints,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport type { AnnotationOnlyChartProps } from '../AnnotationOnlyChart/AnnotationOnlyChart.types';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n Shape,\n Annotations,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n isScatterAreaChart,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\nimport {\n ChartAnnotation,\n ChartAnnotationArrowHead,\n ChartAnnotationLayoutProps,\n ChartAnnotationStyleProps,\n ChartAnnotationHorizontalAlign,\n ChartAnnotationVerticalAlign,\n} from '../../types/ChartAnnotation';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getXMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getXAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n xMinValue: range[0],\n xMaxValue: range[1],\n showRoundOffXTickValues: false,\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (data: Data[], layout: Partial<Layout> | undefined): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n let allLineSeries = true;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n\n if (series.type !== 'scatter' || isScatterAreaChart(series)) {\n allLineSeries = false;\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (!allLineSeries) {\n if (typeof yMinValue === 'number') {\n yMinValue = Math.min(yMinValue, 0);\n }\n if (typeof yMaxValue === 'number') {\n yMaxValue = Math.max(yMaxValue, 0);\n }\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.RefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, colorway, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\n/**\n * Extracts unique X-axis categories from Plotly data traces\n * @param data Array of Plotly data traces\n * @returns Array of unique x values\n */\nconst extractXCategories = (data: Data[] | undefined): Datum[] => {\n return Array.from(\n new Set(\n (data ?? [])\n .flatMap(trace => {\n const xData = (trace as Partial<PlotData>).x;\n if (!xData) {\n return [];\n }\n if (Array.isArray(xData)) {\n return xData.flat().map(x => {\n return x;\n });\n }\n return [];\n })\n .filter(x => x !== undefined && x !== null),\n ),\n );\n};\n\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\ntype PlotlyAnnotation = Partial<Annotations> | null | undefined;\n\nconst encodeHtmlEntities = (value: string): string =>\n value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\nconst toFiniteNumber = (value: unknown): number | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n const numeric = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n};\n\n/**\n * Normalizes Plotly axis reference strings so equivalent aliases (e.g. `xaxis1`, `x1`) collapse to the base axis id.\n */\nconst normalizeAxisRef = (ref: string | undefined, axis: 'x' | 'y'): string => {\n if (!ref) {\n return axis;\n }\n\n const normalized = ref.toLowerCase();\n if (\n normalized === axis ||\n normalized === `${axis}axis` ||\n normalized === `${axis}axis1` ||\n normalized === `${axis}1`\n ) {\n return axis;\n }\n\n const match = normalized.match(/^([xy])(axis)?(\\d+)$/);\n if (match && match[1] === axis && match[3]) {\n return match[3] === '1' ? axis : `${axis}${match[3]}`;\n }\n\n return normalized;\n};\n\n/**\n * Scans the data traces bound to a given axis and returns the numeric min/max values plotted on that axis.\n */\nconst getAxisNumericRangeFromData = (\n axis: 'x' | 'y',\n ref: string | undefined,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n): [number, number] | undefined => {\n if (!data || data.length === 0) {\n return undefined;\n }\n\n const axisLayout = getAxisLayoutByRef(layout, ref, axis);\n const targetRef = normalizeAxisRef(ref, axis);\n const traceAxisKey = axis === 'x' ? 'xaxis' : 'yaxis';\n\n let minValue: number | undefined;\n let maxValue: number | undefined;\n\n data.forEach(trace => {\n const plotTrace = trace as Partial<PlotData>;\n const traceAxisRef = normalizeAxisRef(plotTrace[traceAxisKey as 'xaxis' | 'yaxis'] as string | undefined, axis);\n if (traceAxisRef !== targetRef) {\n return;\n }\n\n const values = (axis === 'x' ? plotTrace.x : plotTrace.y) as unknown;\n if (!isArrayOrTypedArray(values)) {\n return;\n }\n\n const arrayLike = values as ArrayLike<unknown>;\n for (let index = 0; index < arrayLike.length; index++) {\n const value = arrayLike[index];\n const numeric = toNumericValue(convertDataValue(value, axisLayout));\n if (numeric === undefined || Number.isNaN(numeric)) {\n continue;\n }\n minValue = minValue === undefined ? numeric : Math.min(minValue, numeric);\n maxValue = maxValue === undefined ? numeric : Math.max(maxValue, numeric);\n }\n });\n\n if (minValue === undefined || maxValue === undefined || minValue === maxValue) {\n return undefined;\n }\n\n return [minValue, maxValue];\n};\n\n/**\n * Converts Plotly's bottom-origin relative Y coordinate into the SVG top-origin space used by our overlay.\n */\nconst transformRelativeYForChart = (value: number | undefined): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n return undefined;\n }\n return 1 - value;\n};\n\nconst mapHorizontalAlign = (anchor?: string): ChartAnnotationHorizontalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n default:\n return undefined;\n }\n};\n\nconst mapVerticalAlign = (anchor?: string): ChartAnnotationVerticalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'top':\n return 'top';\n case 'middle':\n return 'middle';\n case 'bottom':\n return 'bottom';\n default:\n return undefined;\n }\n};\n\nconst appendPx = (value: unknown): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return `${value}px`;\n }\n return undefined;\n};\n\n/**\n * Maps Plotly's axis reference string to one of our coordinate interpretation modes (axis, relative, or pixel).\n */\nconst resolveRefType = (ref: string | undefined, axis: 'x' | 'y'): 'axis' | 'relative' | 'pixel' | undefined => {\n if (!ref) {\n return 'axis';\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'pixel') {\n return 'pixel';\n }\n if (normalized === 'paper') {\n return 'relative';\n }\n if (normalized.endsWith(' domain')) {\n return normalized.startsWith(axis) ? 'relative' : undefined;\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n return 'axis';\n }\n return undefined;\n};\n\n/**\n * Retrieves the appropriate axis layout section from Plotly's layout given an axis reference alias.\n */\nconst getAxisLayoutByRef = (\n layout: Partial<Layout> | undefined,\n ref: string | undefined,\n axis: 'x' | 'y',\n): Partial<LayoutAxis> | undefined => {\n if (!layout) {\n return undefined;\n }\n const defaultAxisKey = `${axis}axis` as 'xaxis' | 'yaxis';\n if (!ref) {\n return layout[defaultAxisKey];\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'paper' || normalized === 'pixel' || normalized.endsWith(' domain')) {\n return layout[defaultAxisKey];\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n const index = match[2];\n if (index && index !== '' && index !== '1') {\n const axisKey = `${axis}axis${index}` as keyof Layout;\n return layout[axisKey] as Partial<LayoutAxis> | undefined;\n }\n return layout[defaultAxisKey];\n }\n return layout[defaultAxisKey];\n};\n\n/**\n * Normalizes raw Plotly data values into canonical number/date/string types based on axis configuration.\n */\nconst convertDataValue = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n): string | number | Date | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (axisLayout?.type === 'date' || isDate(value)) {\n const dateValue = value instanceof Date ? value : new Date(value as string | number);\n return Number.isNaN(dateValue.getTime()) ? undefined : dateValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (axisLayout?.type === 'linear' || axisLayout?.type === 'log') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n if (value instanceof Date) {\n return value;\n }\n return value as string | number;\n};\n\nconst toNumericValue = (value: string | number | Date | undefined): number | undefined => {\n if (value instanceof Date) {\n const timestamp = value.getTime();\n return Number.isFinite(timestamp) ? timestamp : undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n return undefined;\n};\n\nconst toRelativeCoordinate = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n fallbackRange?: [number, number],\n): number | undefined => {\n const range = Array.isArray(axisLayout?.range) ? axisLayout!.range : undefined;\n\n let start = range && range.length >= 2 ? toNumericValue(convertDataValue(range[0], axisLayout)) : undefined;\n let end = range && range.length >= 2 ? toNumericValue(convertDataValue(range[1], axisLayout)) : undefined;\n\n if ((start === undefined || end === undefined || start === end) && fallbackRange) {\n [start, end] = fallbackRange;\n }\n\n const current = toNumericValue(convertDataValue(value, axisLayout));\n\n if (start === undefined || end === undefined || current === undefined || start === end) {\n return undefined;\n }\n\n const relative = (current - start) / (end - start);\n return Number.isFinite(relative) ? relative : undefined;\n};\n\nconst createAnnotationId = (text: string, index: number): string => {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (normalized) {\n const slug = normalized\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 32);\n if (slug) {\n return `annotation-${index}-${slug}`;\n }\n }\n return `annotation-${index}`;\n};\n\nconst DEFAULT_ARROW_OFFSET = -40;\n\nconst mapArrowsideToArrow = (annotation: PlotlyAnnotation): ChartAnnotationArrowHead => {\n let includeStart = false;\n let includeEnd = false;\n\n const arrowSide = typeof annotation?.arrowside === 'string' ? annotation?.arrowside.toLowerCase() : undefined;\n if (arrowSide) {\n includeStart = arrowSide.includes('start');\n includeEnd = arrowSide.includes('end');\n }\n\n const endHead = toFiniteNumber(annotation?.arrowhead);\n const startHead = toFiniteNumber((annotation as { startarrowhead?: number }).startarrowhead);\n\n if (endHead !== undefined && endHead > 0) {\n includeEnd = true;\n }\n if (startHead !== undefined && startHead > 0) {\n includeStart = true;\n }\n\n if (includeStart && includeEnd) {\n return 'both';\n }\n if (includeStart) {\n return 'start';\n }\n if (includeEnd) {\n return 'end';\n }\n return 'none';\n};\n\nconst mapArrowDashToPattern = (value: string | undefined): string | undefined => {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim().toLowerCase();\n\n switch (normalized) {\n case 'solid':\n return undefined;\n case 'dot':\n return '1, 5';\n case 'dash':\n return '5, 5';\n case 'longdash':\n return '10, 5';\n case 'dashdot':\n return '5, 5, 1, 5';\n case 'longdashdot':\n return '10, 5, 1, 5';\n default:\n if (/^\\d+(\\s|,)*\\d*$/.test(normalized.replace(/\\s+/g, ' '))) {\n return normalized.replace(/\\s+/g, ' ');\n }\n return value;\n }\n};\n\n/**\n * Converts a Plotly annotation definition into the internal `ChartAnnotation` format, translating coordinates,\n * layout alignment, styling, and connector metadata while skipping unsupported configurations.\n */\nconst convertPlotlyAnnotation = (\n annotation: PlotlyAnnotation,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n index: number,\n): ChartAnnotation | undefined => {\n if (!annotation || (annotation as { visible?: boolean }).visible === false) {\n return undefined;\n }\n\n const xRefType = resolveRefType(annotation.xref as string | undefined, 'x');\n const yRefType = resolveRefType(annotation.yref as string | undefined, 'y');\n\n if (!xRefType || !yRefType) {\n return undefined;\n }\n\n let coordinates: ChartAnnotation['coordinates'] | undefined;\n\n if (xRefType === 'axis' && yRefType === 'axis') {\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const xValue = convertDataValue(annotation.x, xAxisLayout);\n const yValue = convertDataValue(annotation.y, yAxisLayout);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n const yRefNormalized = typeof annotation.yref === 'string' ? annotation.yref.toLowerCase() : undefined;\n coordinates = {\n type: 'data',\n x: xValue,\n y: yValue,\n ...(yRefNormalized === 'y2' ? { yAxis: 'secondary' as const } : {}),\n };\n } else if (xRefType === 'relative' && yRefType === 'relative') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'relative' && yRefType === 'axis') {\n const xValue = toFiniteNumber(annotation.x);\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const yFallbackRange = getAxisNumericRangeFromData('y', annotation.yref as string | undefined, layout, data);\n const yRelative = toRelativeCoordinate(annotation.y, yAxisLayout, yFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yRelative);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'axis' && yRefType === 'relative') {\n const yValue = toFiniteNumber(annotation.y);\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const xFallbackRange = getAxisNumericRangeFromData('x', annotation.xref as string | undefined, layout, data);\n const xRelative = toRelativeCoordinate(annotation.x, xAxisLayout, xFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xRelative === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xRelative,\n y: chartRelativeY,\n };\n } else if (xRefType === 'pixel' && yRefType === 'pixel') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'pixel',\n x: xValue,\n y: yValue,\n };\n } else {\n return undefined;\n }\n\n const textValue = annotation.text;\n const rawText = textValue === undefined || textValue === null ? '' : String(textValue);\n const encodedText = encodeHtmlEntities(rawText);\n\n const chartAnnotation: ChartAnnotation = {\n id: createAnnotationId(encodedText, index),\n text: encodedText,\n coordinates,\n };\n\n const layoutProps: Partial<ChartAnnotationLayoutProps> = {};\n const styleProps: Partial<ChartAnnotationStyleProps> = {};\n const showArrow = annotation.showarrow === undefined ? false : !!annotation.showarrow;\n\n const clipOnAxis = (annotation as { cliponaxis?: boolean }).cliponaxis;\n if (clipOnAxis !== undefined) {\n layoutProps.clipToBounds = !!clipOnAxis;\n } else if (coordinates.type === 'data') {\n layoutProps.clipToBounds = true;\n }\n\n const horizontalAlign = mapHorizontalAlign(annotation.xanchor as string | undefined);\n if (horizontalAlign) {\n layoutProps.align = horizontalAlign;\n }\n\n if (!layoutProps.align) {\n const alignProp = mapHorizontalAlign((annotation as { align?: string }).align);\n if (alignProp) {\n layoutProps.align = alignProp;\n }\n }\n\n const verticalAlign = mapVerticalAlign(annotation.yanchor as string | undefined);\n if (verticalAlign) {\n layoutProps.verticalAlign = verticalAlign;\n }\n\n if (!layoutProps.verticalAlign) {\n const valignProp = mapVerticalAlign((annotation as { valign?: string }).valign);\n if (valignProp) {\n layoutProps.verticalAlign = valignProp;\n }\n }\n\n const offsetXComponents: number[] = [];\n let hasExplicitOffset = false;\n const ax = toFiniteNumber(annotation.ax);\n const axRef = typeof annotation.axref === 'string' ? annotation.axref.toLowerCase() : undefined;\n if (ax !== undefined && (axRef === undefined || axRef === 'pixel')) {\n offsetXComponents.push(ax);\n hasExplicitOffset = true;\n }\n const xShift = toFiniteNumber(annotation.xshift);\n if (xShift !== undefined) {\n offsetXComponents.push(xShift);\n hasExplicitOffset = true;\n }\n if (offsetXComponents.length > 0) {\n const offsetX = offsetXComponents.reduce((sum, value) => sum + value, 0);\n if (offsetX !== 0) {\n layoutProps.offsetX = offsetX;\n }\n }\n\n const offsetYComponents: number[] = [];\n const ay = toFiniteNumber(annotation.ay);\n const ayRef = typeof annotation.ayref === 'string' ? annotation.ayref.toLowerCase() : undefined;\n if (ay !== undefined && (ayRef === undefined || ayRef === 'pixel')) {\n offsetYComponents.push(ay);\n hasExplicitOffset = true;\n }\n const yShift = toFiniteNumber(annotation.yshift);\n if (yShift !== undefined) {\n offsetYComponents.push(yShift);\n hasExplicitOffset = true;\n }\n if (offsetYComponents.length > 0) {\n const offsetY = offsetYComponents.reduce((sum, value) => sum + value, 0);\n if (offsetY !== 0) {\n layoutProps.offsetY = offsetY;\n }\n }\n\n if (showArrow && !hasExplicitOffset && layoutProps.offsetY === undefined) {\n layoutProps.offsetY = DEFAULT_ARROW_OFFSET;\n }\n\n const maxWidth = toFiniteNumber(annotation.width);\n if (maxWidth !== undefined) {\n layoutProps.maxWidth = maxWidth;\n }\n\n if (annotation.bgcolor) {\n styleProps.backgroundColor = annotation.bgcolor as string;\n }\n\n if (annotation.bordercolor) {\n styleProps.borderColor = annotation.bordercolor as string;\n }\n\n const borderWidth = toFiniteNumber(annotation.borderwidth);\n if (borderWidth !== undefined) {\n styleProps.borderWidth = borderWidth;\n }\n\n const borderPad = appendPx(annotation.borderpad);\n if (borderPad) {\n styleProps.padding = borderPad;\n }\n\n const opacity = toFiniteNumber(annotation.opacity);\n if (opacity !== undefined) {\n styleProps.opacity = opacity;\n }\n\n if (annotation.font) {\n const font = annotation.font as {\n color?: string;\n size?: string | number;\n weight?: React.CSSProperties['fontWeight'];\n };\n if (font?.color) {\n styleProps.textColor = font.color;\n }\n const fontSize = appendPx(font?.size);\n if (fontSize) {\n styleProps.fontSize = fontSize;\n }\n if (font?.weight) {\n styleProps.fontWeight = font.weight;\n }\n }\n\n const textAngle = (annotation as { textangle?: number | string })?.textangle;\n if (typeof textAngle === 'number' && !Number.isNaN(textAngle)) {\n styleProps.rotation = textAngle;\n } else if (typeof textAngle === 'string' && textAngle.toLowerCase() !== 'auto') {\n const parsedAngle = Number(textAngle);\n if (!Number.isNaN(parsedAngle)) {\n styleProps.rotation = parsedAngle;\n }\n }\n if (Object.keys(layoutProps).length > 0) {\n chartAnnotation.layout = layoutProps;\n }\n\n if (Object.keys(styleProps).length > 0) {\n chartAnnotation.style = styleProps;\n }\n\n if (showArrow) {\n const arrowColor = (annotation.arrowcolor as string) ?? styleProps.textColor;\n const arrowWidth = toFiniteNumber(annotation.arrowwidth);\n const endPadding = toFiniteNumber(annotation.standoff);\n const startPadding = toFiniteNumber((annotation as { startstandoff?: number }).startstandoff);\n const dashPattern = mapArrowDashToPattern((annotation as { arrowdash?: string }).arrowdash);\n\n chartAnnotation.connector = {\n ...(arrowColor ? { strokeColor: arrowColor } : {}),\n ...(arrowWidth !== undefined ? { strokeWidth: arrowWidth } : {}),\n ...(endPadding !== undefined ? { endPadding: Math.max(endPadding, 0) } : {}),\n ...(startPadding !== undefined ? { startPadding: Math.max(startPadding, 0) } : {}),\n ...(dashPattern ? { dashArray: dashPattern } : {}),\n arrow: mapArrowsideToArrow(annotation),\n };\n }\n\n return chartAnnotation;\n};\n\nconst getChartAnnotationsFromLayout = (\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n isMultiPlot: boolean,\n): ChartAnnotation[] | undefined => {\n if (isMultiPlot || !layout?.annotations) {\n return undefined;\n }\n const annotationsArray = Array.isArray(layout.annotations) ? layout.annotations : [layout.annotations];\n const converted = annotationsArray\n .map((annotation, index) => convertPlotlyAnnotation(annotation as PlotlyAnnotation, layout, data, index))\n .filter((annotation): annotation is ChartAnnotation => annotation !== undefined);\n\n return converted.length > 0 ? converted : undefined;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, x };\n};\n\nexport const transformPlotlyJsonToAnnotationChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n _colorMap: React.RefObject<Map<string, string>>,\n _colorwayType: ColorwayType,\n _isDarkTheme?: boolean,\n): AnnotationOnlyChartProps => {\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot) ?? [];\n const titles = getTitles(input.layout);\n const layoutTitle = titles.chartTitle || undefined;\n\n const layoutWithMeta = input.layout as Partial<Layout> & { meta?: { description?: string } };\n const description =\n typeof layoutWithMeta?.meta?.description === 'string' ? layoutWithMeta.meta.description : undefined;\n\n const width = typeof input.layout?.width === 'number' ? input.layout.width : undefined;\n const height = typeof input.layout?.height === 'number' ? input.layout.height : undefined;\n const paperBackgroundColor = typeof input.layout?.paper_bgcolor === 'string' ? input.layout.paper_bgcolor : undefined;\n const plotBackgroundColor = typeof input.layout?.plot_bgcolor === 'string' ? input.layout.plot_bgcolor : undefined;\n const fontColor = typeof input.layout?.font?.color === 'string' ? input.layout.font.color : undefined;\n const fontFamily = typeof input.layout?.font?.family === 'string' ? input.layout.font.family : undefined;\n const margin = input.layout?.margin;\n\n return {\n annotations,\n chartTitle: layoutTitle,\n description,\n width,\n height,\n paperBackgroundColor,\n plotBackgroundColor,\n fontColor,\n fontFamily,\n margin,\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n // clear colorMap for donut chart to reassign colors as the colorMap initially gets assigned by\n // getAllupLegendsProps function without sorting labels by value\n colorMap.current!.clear();\n\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const markerColors = (firstData.marker?.colors as unknown as string[]) || undefined;\n const hasMarkerColors = Array.isArray(markerColors) && markerColors.length >= firstData.labels.length;\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n color: hasMarkerColors ? markerColors[index] : undefined,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value; when marker colors are present, keep color attached to the label\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string =\n pair.color ??\n resolveColor(\n colors,\n sortedIdx,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n // Build anticlockwise order by keeping the first item, reversing the rest\n const legends = Object.keys(mapLegendToDataPoint);\n const reorderedEntries =\n legends.length > 1\n ? ([\n [legends[0], mapLegendToDataPoint[legends[0]]],\n ...legends\n .slice(1)\n .reverse()\n .map(key => [key, mapLegendToDataPoint[key]] as const),\n ] as ReadonlyArray<readonly [string, ChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as ChartDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n order: 'sorted',\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const resolveXValue = getAxisValueResolver(getAxisType(input.data, getAxisObjects(input.data, input.layout).x));\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const validXYRanges = getValidXYRanges(series, resolveXValue);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXValue(x)!,\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n index2,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const xCategories = extractXCategories(input.data);\n\n (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .forEach((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (shape.xref === 'x domain') {\n if (val === 0) {\n return xCategories[0];\n }\n if (val === 1) {\n return xCategories[xCategories.length - 1];\n }\n }\n if (typeof val === 'number' && Array.isArray(xCategories)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\n }\n return val;\n };\n\n const x0Key = resolveX(shape.x0!);\n const x1Key = resolveX(shape.x1!);\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n const y0Val = resolveY(shape.y0!);\n const y1Val = resolveY(shape.y1!);\n if (mapXToDataPoints[x0Key as string]) {\n mapXToDataPoints[x0Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y0Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n }\n\n if (mapXToDataPoints[x1Key as string]) {\n mapXToDataPoints[x1Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y1Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n }\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const gvbcDataV2: GroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n const legend: string = legends[index1];\n const legendShape = getLegendShape(series);\n\n if (series.type === 'bar') {\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n gvbcDataV2.push({\n type: 'bar',\n legend,\n key: legend,\n data: (series.x as Datum[])\n .map((x, xIndex) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[xIndex])) {\n return;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[xIndex % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n xIndex,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, xIndex);\n const yVal = series.y![xIndex] as number;\n\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n };\n })\n .filter(item => typeof item !== 'undefined'),\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n } else if (series.type === 'scatter') {\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = getLineOptions(series.line);\n const opacity = getOpacity(series, index1);\n const validXYRanges = getValidXYRanges(series);\n\n validXYRanges.forEach(([rangeStart, rangeEnd]) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd) as Datum[];\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd) as Datum[];\n\n gvbcDataV2.push({\n type: 'line',\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => {\n const yVal = rangeYValues[i] as number;\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n };\n }),\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n });\n }\n });\n\n const annotations = getChartAnnotationsFromLayout(processedInput.layout, processedInput.data, isMultiPlot);\n\n return {\n dataV2: gvbcDataV2,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: true,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index) ?? 0;\n if (isInvalidValue(xVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst mapColorFillBars = (layout: Partial<Layout> | undefined) => {\n if (!Array.isArray(layout?.shapes)) {\n return [];\n }\n\n return layout.shapes\n .filter((shape: Partial<Shape>) => shape.type === 'rect')\n .map((shape: { x0?: Datum; x1?: Datum; fillcolor?: string }) => {\n //colorFillbars doesn't support string dates or categories\n if (typeof shape.x0 === 'string' || typeof shape.x1 === 'string') {\n return null;\n }\n return {\n color: shape.fillcolor!,\n data: [{ startX: shape.x0, endX: shape.x1 }],\n applyPattern: false,\n };\n });\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const xAxisType = getAxisType(input.data, getAxisObjects(input.data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType);\n const shouldWrapLabels = xAxisType === 'category';\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series, resolveXValue);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const markerColors = isArrayOrTypedArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : Array.isArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : undefined;\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXValue(x),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(markerColors ? { markerColor: markerColors[i] } : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n fill: series.fill,\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const xMinValue = chartData[0]?.data[0]?.x;\n const xMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.x;\n const yMinValue = chartData[0]?.data[0]?.y;\n const yMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.y;\n const xCategories = extractXCategories(input.data);\n const lineShape: LineChartPoints[] | ScatterChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (typeof val === 'number' && Array.isArray(xCategories)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\n }\n if (shape.xref === 'paper') {\n if (val === 0) {\n return xMinValue;\n }\n if (val === 1) {\n return xMaxValue;\n }\n if (typeof val === 'number' && typeof xMinValue === 'number' && typeof xMaxValue === 'number') {\n return xMinValue + val * (xMaxValue - xMinValue);\n }\n return val;\n }\n return val;\n };\n\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n return {\n legend: `Reference_${shapeIdx}`,\n data: [\n { x: resolveXValue(resolveX(shape.x0!)), y: resolveY(shape.y0!) },\n { x: resolveXValue(resolveX(shape.x1!)), y: resolveY(shape.y1!) },\n ],\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n } as LineChartPoints | ScatterChartPoints;\n });\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: [...chartData, ...(lineShape as LineChartPoints[])],\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: [...chartData, ...(lineShape as ScatterChartPoints[])],\n };\n\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n wrapXAxisLabels: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n ...(!isScatterChart &&\n (() => {\n const bars = mapColorFillBars(input.layout);\n return bars && !bars.includes(null) ? { colorFillBars: bars } : {};\n })()),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: isInvalidValue(series.x?.[i]) ? 0 : series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const data = input.data.filter((series: Partial<PlotData>) => series.type !== 'scatter' || series.mode !== 'markers');\n const { legends, hideLegend } = getLegendProps(data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const xAxisType = getAxisType(data, getAxisObjects(data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType, parseLocalDate);\n const resolveGanttXValue = (value: Datum) => {\n const resolvedValue = resolveXValue(value);\n return typeof resolvedValue === 'string' ? 0 : resolvedValue ?? 0;\n };\n const isXDate = xAxisType === 'date';\n const ganttData: GanttChartDataPoint[] = [];\n data.forEach((series: Partial<PlotData>, index: number) => {\n const legend = legends[index];\n\n if (series.type === 'bar') {\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n (series.y as Datum[]).forEach((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return;\n }\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n const base = +resolveGanttXValue(series.base?.[i] as Datum);\n const xVal = +resolveGanttXValue(series.x?.[i] as Datum);\n\n ganttData.push({\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal as string | number,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n });\n });\n } else if (series.type === 'scatter' && series.mode === 'none' && series.fill === 'toself') {\n for (let i = 0; i < series.y!.length; i += 5) {\n if (isInvalidValue(series.y![i]) || isInvalidValue(series.y![i + 3])) {\n continue;\n }\n\n const x0 = resolveGanttXValue(series.x![i] as Datum);\n const x1 = resolveGanttXValue(series.x![i + 1] as Datum);\n const y0 = series.y![i] as number;\n const y1 = series.y![i + 3] as number;\n\n ganttData.push({\n x: {\n start: x0,\n end: x1,\n },\n y: Math.round((y0 + y1) / 2),\n legend,\n color: series.fillcolor,\n });\n }\n }\n });\n\n return {\n data: ganttData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(data, input.layout),\n ...getBarProps(data, input.layout, true),\n ...getAxisTickProps(data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index) ?? 0;\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index])) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const extractedLinkColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n link?.color,\n colorMap,\n isDarkTheme,\n );\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(\n extractedNodeColors,\n index,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n const color = resolveColor(\n extractedLinkColors,\n index,\n validLink.target,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n ...validLink,\n color,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedIncreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedDecreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\n}\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(\n extractedColors,\n 0,\n category,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(\n extractedColors,\n i,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n\n if (isArrayOrTypedArray(pieSeries.labels)) {\n pieSeries.labels!.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(\n colors,\n labelIndex,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n }\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (\n series: Partial<PlotData>,\n resolveX?: (v: Datum) => Datum,\n resolveY?: (v: Datum) => Datum,\n): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (\n isInvalidValue(series.x![end]) ||\n (typeof resolveX === 'function' && isInvalidValue(resolveX(series.x![end] as Datum))) ||\n isInvalidValue(series.y![end]) ||\n (typeof resolveY === 'function' && isInvalidValue(resolveY(series.y![end] as Datum)))\n ) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie', 'annotation'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n result[propName] = 'data';\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = ax?.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n props.xAxis = {\n tickText: ax.ticktext,\n };\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n props.yAxis = {\n tickText: ax.ticktext,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\ninterface AxisObject extends Partial<LayoutAxis> {\n _id: string;\n}\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const makeAxisObject = (axLetter: 'x' | 'y', axId: number): AxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, AxisObject> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = makeAxisObject('x', xAxisId);\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = makeAxisObject('y', sortedYAxisIds[0]);\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = makeAxisObject('y', sortedYAxisIds[1]);\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], ax: AxisObject): AxisType => {\n if (!ax) {\n return 'category';\n }\n\n if (['linear', 'log', 'date', 'category'].includes(ax.type ?? '')) {\n return ax.type!;\n }\n\n const axLetter = ax._id[0] as 'x' | 'y';\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n const axId = series[`${axLetter}axis`];\n if ((axId === ax._id || (!axId && ax._id === axLetter)) && isArrayOrTypedArray(series[axLetter])) {\n series[axLetter]!.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n }\n });\n\n if (isNumberArray(values) && !isYearArray(values)) {\n return 'linear';\n }\n if (isDateArray(values)) {\n return 'date';\n }\n return 'category';\n};\n\nconst getAxisValueResolver = (axType: AxisType, dateParser?: (v: string | number) => Date) => {\n const toDate = (value: string | number): Date | null => {\n const date = dateParser ? dateParser(value) : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n };\n\n return (value: Datum): Datum => {\n if (isInvalidValue(value)) {\n return null;\n }\n\n switch (axType) {\n case 'linear':\n case 'log':\n return isNumber(value) ? +value! : null;\n\n case 'date':\n if (isNumber(value)) {\n return toDate(+value!);\n }\n if (typeof value === 'string') {\n return toDate(value);\n }\n return null;\n\n case 'category':\n return `${value}`;\n\n default:\n return null;\n }\n };\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","isScatterAreaChart","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getXMinMaxValues","xMinValue","xMaxValue","showRoundOffXTickValues","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","containsSecondaryYAxis","allLineSeries","forEach","yValues","y","Math","type","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","extractXCategories","from","Set","flatMap","trace","xData","flat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","encodeHtmlEntities","replace","toFiniteNumber","numeric","Number","isFinite","normalizeAxisRef","ref","axis","normalized","match","getAxisNumericRangeFromData","axisLayout","getAxisLayoutByRef","targetRef","traceAxisKey","minValue","maxValue","plotTrace","traceAxisRef","values","arrayLike","toNumericValue","convertDataValue","isNaN","transformRelativeYForChart","mapHorizontalAlign","mapVerticalAlign","appendPx","resolveRefType","endsWith","startsWith","defaultAxisKey","axisKey","dateValue","getTime","timestamp","toRelativeCoordinate","fallbackRange","start","end","current","relative","createAnnotationId","trim","slug","slice","DEFAULT_ARROW_OFFSET","mapArrowsideToArrow","annotation","includeStart","includeEnd","arrowSide","arrowside","endHead","arrowhead","startHead","startarrowhead","mapArrowDashToPattern","convertPlotlyAnnotation","visible","xRefType","xref","yRefType","yref","coordinates","xAxisLayout","yAxisLayout","xValue","yValue","yRefNormalized","chartRelativeY","yFallbackRange","yRelative","xFallbackRange","xRelative","textValue","rawText","String","encodedText","chartAnnotation","id","layoutProps","styleProps","showArrow","showarrow","clipOnAxis","cliponaxis","clipToBounds","horizontalAlign","xanchor","align","alignProp","verticalAlign","yanchor","valignProp","valign","offsetXComponents","hasExplicitOffset","ax","axRef","axref","push","xShift","xshift","offsetX","reduce","offsetYComponents","ay","ayRef","ayref","yShift","yshift","offsetY","maxWidth","width","bgcolor","backgroundColor","bordercolor","borderColor","borderWidth","borderwidth","borderPad","borderpad","padding","opacity","font","textColor","fontSize","size","weight","fontWeight","textAngle","textangle","rotation","parsedAngle","keys","style","arrowColor","arrowcolor","arrowWidth","arrowwidth","endPadding","standoff","startPadding","startstandoff","dashPattern","arrowdash","connector","strokeColor","dashArray","arrow","getChartAnnotationsFromLayout","isMultiPlot","annotations","annotationsArray","converted","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","allKeys","add","hasValidData","isNumericData","name","transformPlotlyJsonToAnnotationChartProps","input","_colorMap","_colorwayType","_isDarkTheme","layoutWithMeta","layoutTitle","description","meta","height","paperBackgroundColor","paper_bgcolor","plotBackgroundColor","plot_bgcolor","fontColor","fontFamily","family","margin","transformPlotlyJsonToDonutProps","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","clear","labels","markerColors","hasMarkerColors","labelValuePairs","label","getNumberAtIndexOrDefault","validPairs","pair","sort","a","b","sortedIdx","legend","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","legends","reorderedEntries","reverse","chartData","v","hideLegend","showlegend","showLabelsInPercent","roundCorners","order","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","getLegendProps","colorScale","resolveXValue","getAxisValueResolver","getAxisType","getAxisObjects","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","rangeYValues","index2","xAxisPoint","lineData","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","xCategories","shapes","shape","shapeIdx","resolveX","val","x0Key","x0","x1Key","x1","resolveY","y0Val","y0","y1Val","y1","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","roundedTicks","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","hasObjectArrayData","some","processedData","gvbcDataV2","xIndex","dataV2","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","xAxisCalloutData","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","mapColorFillBars","fillcolor","startX","endX","applyPattern","chartType","isScatterMarkers","isAreaChart","isScatterChart","xAxisType","shouldWrapLabels","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","markerColor","originXOffset","__polarOriginX","direction","polar","angularaxis","axisLabel","__axisLabel","lineShape","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","wrapXAxisLabels","optimizeLargeData","getAxisScaleTypeProps","bars","colorFillBars","transformPlotlyJsonToHorizontalBarWithAxisProps","point","chartHeight","l","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","parseLocalDate","resolveGanttXValue","resolvedValue","ganttData","base","round","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","source","target","extractedNodeColors","extractedLinkColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","chartValueFormat","variant","cleanText","formatValue","colIndex","cells","formatStr","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","textAlign","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","allX","allY","originX","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","templateRows","templateColumns","gridLayout","anchorIndex","domainXInfo","domainYInfo","xMatches","interval","yMatch","yIndex","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","autorange","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","tickmode","tickvals","tickValues","tickText","ticktext","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","charAt","dtickNum","xAxisId","yAxisIds","axisIds","makeAxisObject","_id","sortedYAxisIds","dateParser","toDate","isoDateRegex"],"mappings":"AAAA;;;;;;;;;;;;IAyGa6C,mBAAAA;;;IACAC,aAAAA;;;sBA0OAqF;eAAAA;;IA7FA1C,gBAAAA;;;uBAw2FGgnB;eAAAA;;IAyLH6B,oBAAAA;;;IAwJAsB,iBAAAA;;;IArDAxY,yBAAAA;;;oBAYAwC;eAAAA;;IAqCAkV,aAAAA;;;IA/2EAra,2BAAAA;;;2BAs3DA6V;eAAAA;;IAplFA5hB,iBAAAA;;;IA0yBA2M,yCAAAA;;;uCA4nBAgJ;eAAAA;;IAw6BA2J,oCAAAA;;;mCA//CAzR;eAAAA;;IAmpDAqT,qCAAAA;;;kCAz1CAnN;eAAAA;;wCAmqBAuF;eAAAA;;IAoWA6D,+BAAAA;;;IA/PAtD,iCAAAA;;;mDAtLAlB;eAAAA;;IApSA9C,mCAAAA;;;IA6nBAwG,gCAAAA;;;0CA5mBAvG;eAAAA;;IA/IAvB,6BAAAA;;;IAjYArE,8BAAAA;;;;;iEAlxCU,QAAQ;yBASxB,WAAW;yBAC2B,WAAW;0BACrB,YAAY;wBAsBG,yBAAyB;2BAcpE,4BAA4B;gCAmC5B,4BAA4B;yBACc,WAAW;oCAEa,uBAAuB;yBAC5E,WAAW;AAcxB,4BAA4B,WAAW;AACvC,sBAAsB,iBAAiB;AA6B9C,MAAM7V,cAAc;IAClBC,KAAK;QACHC,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAC,MAAM;QACJJ,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAE,UAAU;QACRL,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAG,SAAS;QACPN,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAI,aAAa;QACXP,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAK,OAAO;QACLR,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;AACF;AAEA,SAASM,UAAUC,MAAmC;QAEaA,eAC5CA,eAAoCA,gBAAuBA,qBAAAA,gBAC3DA,eAAoCA,gBAAuBA,qBAAAA;QAFfA,oBACeA,0BACAA;IAHhF,MAAMC,SAAS;QACbC,YAAY,QAAOF,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQG,KAAAA,AAAK,MAAK,WAAWH,OAAOG,KAAK,GAAGH,CAAAA,qBAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQG,KAAAA,AAAK,MAAA,QAAbH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeI,IAAI,AAAJA,MAAI,QAAnBJ,uBAAAA,KAAAA,IAAAA,qBAAuB;QACtFK,YAAY,OAAOL,YAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQM,KAAAA,AAAK,MAAA,QAAbN,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeG,KAAAA,AAAK,MAAK,WAAWH,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQM,KAAAA,AAAK,MAAA,QAAbN,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQM,KAAAA,AAAK,MAAA,QAAbN,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAeG,KAAAA,AAAK,MAAA,QAApBH,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAsBI,IAAAA,AAAI,MAAA,QAA1BJ,6BAAAA,KAAAA,IAAAA,2BAA8B;QAC5GO,YAAY,QAAOP,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQQ,KAAAA,AAAK,MAAA,QAAbR,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeG,KAAAA,AAAK,MAAK,WAAWH,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAAA,OAAQQ,KAAAA,AAAK,MAAA,QAAbR,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQQ,KAAAA,AAAK,MAAA,QAAbR,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAeG,KAAAA,AAAK,MAAA,QAApBH,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAsBI,IAAI,AAAJA,MAAI,QAA1BJ,6BAAAA,KAAAA,IAAAA,2BAA8B;IAC9G;IACA,OAAOC;AACT;AAEA,MAAMQ,qBAAqB,CAACC,QAAcV;IACxC,MAAMW,QAAQC,mBAAmBF,QAAQV;IACzC,IAAIW,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAOE,UAAU,EAAE;QACrB,OAAO;YACLC,UAAU,EAAEH,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAOE,UAAU;QAC/B;IACF;IAEA,OAAO,CAAC;AACV;AAEA,MAAME,qBAAqB,CAACL,QAAcV;IACxC,MAAMgB,QAAQC,mBAAmBP,QAAQV;IACzC,IAAIgB,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAOH,UAAU,EAAE;QACrB,OAAO;YACLK,qBAAiB7D,gBAAAA,EAAS2D,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAOH,UAAU;QAC7C;IACF;IAEA,OAAO,CAAC;AACV;AAEA,MAAMM,mBAAmB,CAACT,QAAcV;QACxBiB;IAAd,MAAMjE,QAAAA,CAAQiE,sBAAAA,mBAAmBP,QAAQV,OAAAA,MAAAA,QAA3BiB,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoCjE,KAAK;IACvD,IAAIA,SAASA,MAAMoE,MAAM,KAAK,GAAG;QAC/B,OAAO;YACLC,WAAWrE,KAAK,CAAC,EAAE;YACnBsE,WAAWtE,KAAK,CAAC,EAAE;QACrB;IACF;IACA,OAAO,CAAC;AACV;AAEA,MAAMuE,mBAAmB,CAACb,QAAcV;QACxBY;IAAd,MAAM5D,QAAAA,CAAQ4D,sBAAAA,mBAAmBF,QAAQV,OAAAA,MAAAA,QAA3BY,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoC5D,KAAK;IACvD,IAAIA,SAASA,MAAMoE,MAAM,KAAK,GAAG;QAC/B,OAAO;YACLI,WAAWxE,KAAK,CAAC,EAAE;YACnByE,WAAWzE,KAAK,CAAC,EAAE;YACnB0E,yBAAyB;QAC3B;IACF;IACA,OAAO,CAAC;AACV;AAEA,MAAMT,qBAAqB,CAACP,QAAcV;IACxC,OAAOA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQQ,KAAK;AACtB;AAEA,MAAMI,qBAAqB,CAACF,QAAcV;IACxC,OAAOA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQM,KAAK;AACtB;AAEA,MAAMqB,2BAA2B,CAC/BC,MACAC;IAEA,IAAI,QAAOA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAaX,eAAAA,AAAe,MAAK,cAAc,OAAOU,SAAS,UAAU;QAClF,OAAOC,YAAYX,eAAe,CAACU;IACrC;IACA,WAAOvD,oCAAAA,EAAqBuD;AAC9B;AAGO,yBAAyB,CAACG;IAC/B,MAAMC,cAAc,IAAIC,OAAOC,WAAW;IAC1C,IAAIH,QAAQX,MAAM,GAAG,KAAKe,MAAMC,OAAO,CAACL,OAAO,CAAC,EAAE,GAAG;QACnD,MAAM,IAAIM,MAAM;IAClB;IACA,MAAMC,QAASP,QAAoBQ,GAAG,CAACC,CAAAA;QACrC,MAAMC,aAAa,GAAGD,mBAAmB,KAAK,EAAER,aAAa;QAC7D,WAAOjE,sBAAAA,EAAO0E,cAAc,IAAIR,KAAKQ,cAAc;IACrD;IACA,MAAMC,yBAAyBJ,MAAMC,GAAG,CAAC,CAACI,MAAMC,QAAU;YAACD;YAAMC;SAAM,EAAEC,MAAM,CAAC,CAAC,CAACF,KAAK,GAAKA,SAAS;IAIrG,IAAK,IAAIG,IAAIJ,uBAAuBtB,MAAM,GAAG,GAAG0B,IAAI,GAAGA,IAAK;QAC1D,MAAMC,cAAcL,sBAAsB,CAACI,EAAE,CAAC,EAAE;QAChD,MAAME,eAAeN,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE;QACrD,MAAMG,eAAeF,YAAYG,QAAQ;QACzC,MAAMC,gBAAgBH,aAAaE,QAAQ;QAC3C,MAAME,cAAcL,YAAYb,WAAW;QAC3C,MAAMmB,eAAeL,aAAad,WAAW;QAC7C,IAAIiB,iBAAiBF,cAAc;YACjCP,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAACQ,WAAW,CAACF,cAAc;QAC7D,OAAO,IAAIC,eAAeD,aAAa;YACrCV,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAACQ,WAAW,CAACF;QAC/C;QACAd,KAAK,CAACI,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGJ,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE;IAC5E;IACAf,UAAWA,QAAoBQ,GAAG,CAAC,CAACgB,OAAOX;QACzC,IAAIN,KAAK,CAACM,MAAM,KAAK,MAAM;YACzB,OAAO;QACT;QACA,OAAO,GAAGW,MAAM,KAAK,EAAEjB,KAAK,CAACM,MAAM,CAAEV,WAAW,IAAI;IACtD;IACA,OAAOH;AACT,EAAE;AAEF,MAAMyB,sBAAsB,CAAC9C,QAA2BV;QACrBA,gBAAkCA;IAAnE,OAAOU,OAAOF,KAAK,KAAK,QAASR,CAAAA,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQyD,MAAAA,AAAM,MAAA,QAAdzD,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgB0D,MAAAA,AAAM,MAAK,OAAO1D,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kBAAAA,OAAQyD,MAAAA,AAAM,MAAA,QAAdzD,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAgB2D,IAAAA,AAAI,MAAK,OAAA,CAAM;AACpG;AAEA,MAAMC,0BAA0B,CAACC,MAAc7D;QAkCzCA,gBAOOA,iBAEIA,sBAAAA;IA1Cf,IAAI8D,yBAAyB;IAC7B,IAAIzC;IACJ,IAAIC;IACJ,IAAIyC,gBAAgB;IAEpBF,KAAKG,OAAO,CAAC,CAACtD;QACZ,IAAI8C,oBAAoB9C,QAAQV,SAAS;YACvC8D,yBAAyB;YAEzB,MAAMG,UAAUvD,OAAOwD,CAAC;YACxB,IAAID,SAAS;gBACX5C,YAAY8C,KAAKvH,GAAG,IAAIqH;gBACxB3C,YAAY6C,KAAKrH,GAAG,IAAImH;YAC1B;YAEA,IAAIvD,OAAO0D,IAAI,KAAK,iBAAa1F,kCAAAA,EAAmBgC,SAAS;gBAC3DqD,gBAAgB;YAClB;QACF;IACF;IAEA,IAAI,CAACD,wBAAwB;QAC3B,OAAO,CAAC;IACV;IAEA,IAAI,CAACC,eAAe;QAClB,IAAI,OAAO1C,cAAc,UAAU;YACjCA,YAAY8C,KAAKvH,GAAG,CAACyE,WAAW;QAClC;QACA,IAAI,OAAOC,cAAc,UAAU;YACjCA,YAAY6C,KAAKrH,GAAG,CAACwE,WAAW;QAClC;IACF;IACA,IAAItB,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQyD,MAAAA,AAAM,MAAA,QAAdzD,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgBhD,KAAK,EAAE;QACzBqE,YAAYrB,OAAOyD,MAAM,CAACzG,KAAK,CAAC,EAAE;QAClCsE,YAAYtB,OAAOyD,MAAM,CAACzG,KAAK,CAAC,EAAE;IACpC;IAEA,OAAO;QACLqH,qBACE,QAAOrE,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kBAAAA,OAAQyD,MAAAA,AAAM,MAAA,QAAdzD,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAgBG,KAAAA,AAAK,MAAK,WAC7BH,OAAOyD,MAAM,CAACtD,KAAK,GACnB,QAAOH,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kBAAAA,OAAQyD,MAAAA,AAAM,MAAA,QAAdzD,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,gBAAgBG,KAAAA,AAAK,MAAA,QAArBH,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAuBI,IAAAA,AAAI,MAAK,WACvCJ,OAAOyD,MAAM,CAACtD,KAAK,CAACC,IAAI,GACxBkE;QACNC,wBAAwB;YACtBlD;YACAC;QACF;IACF;AACF;AAEO,2BAA2B,CAChCmD,UACAC,cACAC,OACAC,UACAC;IAEA,MAAMC,sBAAkBhG,gCAAAA,EAAa2F,UAAUC,cAAcC,OAAOC,UAAUC;IAC9E,OAAO9F,oCAAAA,EAAa+F,iBAAiB,GAAG,IAAIF,UAAUH,UAAUI;AAClE,EAAE;AAEK,0BAA0B,CAC/BG,GACAC,iBACAC,WACAC,SACAC;IAEA,IAAIJ,MAAM,QAAQA,MAAMV,WAAW;QACjC,OAAO;IACT;IACA,IAAIW,iBAAiB;QACnB,OAAOD,EAAEK,QAAQ;IACnB;IACA,IAAIH,WAAW;QACb,IAAIC,SAAS;YACX,MAAMxC,OAAO,IAAIV,KAAK+C;YACtB,OAAOrC;QACT;QACA,IAAIyC,WAAW;YACb,OAAOE,WAAWN;QACpB;QACA,OAAOA;IACT;IACA,OAAOA;AACT,EAAE;AAEF;;;;CAIC,GACD,MAAMO,qBAAqB,CAAC1B;IAC1B,OAAO1B,MAAMqD,IAAI,CACf,IAAIC,IACD5B,CAAAA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,EAAA,AAAC,EACP6B,OAAO,CAACC,CAAAA;QACP,MAAMC,QAASD,MAA4BX,CAAC;QAC5C,IAAI,CAACY,OAAO;YACV,OAAO,EAAE;QACX;QACA,IAAIzD,MAAMC,OAAO,CAACwD,QAAQ;YACxB,OAAOA,MAAMC,IAAI,GAAGtD,GAAG,CAACyC,CAAAA;gBACtB,OAAOA;YACT;QACF;QACA,OAAO,EAAE;IACX,GACCnC,MAAM,CAACmC,CAAAA,IAAKA,MAAMV,aAAaU,MAAM;AAG9C;AAEA;;;;CAIC,GACD,MAAMc,kBAAkB,CAACC;IACvB,MAAMC,WAAWD,IAAIE,WAAW;IAChC,IAAID,SAASE,QAAQ,CAAC,YAAYF,aAAa,SAAS;QACtD,OAAO;IACT;IACA,kDAAkD;IAClD,yEAAyE;IACzE,MAAMG,cAAc,IAAIC,OACtB,kHACE,8GACA,kGACA,4FACF;IAEF,IAAID,YAAYE,IAAI,CAACL,WAAW;QAC9B,OAAO;IACT;IACA,OAAO;AACT;AAEA;;;;;CAKC,GACD,MAAMM,gBAAgB,CAACC,KAA8BC,SAAiB,EAAE;IACtE,MAAMC,YAAqC,CAAC;IAE5C,IAAK,MAAMV,OAAOQ,IAAK;QACrB,IAAIG,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACN,KAAKR,MAAM;YAClD,MAAMe,SAASN,SAAS,GAAGA,OAAO,CAAC,EAAET,KAAK,GAAGA;YAC7C,MAAMgB,QAAQR,GAAG,CAACR,IAAI;YAEtB,IAAI,OAAOgB,UAAU,YAAYA,UAAU,QAAQ,CAAC5E,MAAMC,OAAO,CAAC2E,UAAU,CAAEA,CAAAA,iBAAiB9E,IAAAA,CAAG,EAAI;gBACpG,qCAAqC;gBACrCyE,OAAOM,MAAM,CAACP,WAAWH,cAAcS,OAAkCD;YAC3E,OAAO;gBACLL,SAAS,CAACK,OAAO,GAAGC;YACtB;QACF;IACF;IAEA,OAAON;AACT;AAIA,MAAMQ,qBAAqB,CAACF,QAC1BA,MACGG,OAAO,CAAC,MAAM,SACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM,UACdA,OAAO,CAAC,MAAM;AAEnB,MAAMC,iBAAiB,CAACJ;IACtB,IAAIA,UAAUzC,aAAayC,UAAU,MAAM;QACzC,OAAOzC;IACT;IACA,MAAM8C,UAAU,OAAOL,UAAU,WAAWA,QAAQM,OAAON;IAC3D,OAAOM,OAAOC,QAAQ,CAACF,WAAWA,UAAU9C;AAC9C;AAEA;;CAEC,GACD,MAAMiD,mBAAmB,CAACC,KAAyBC;IACjD,IAAI,CAACD,KAAK;QACR,OAAOC;IACT;IAEA,MAAMC,aAAaF,IAAIvB,WAAW;IAClC,IACEyB,eAAeD,QACfC,eAAe,GAAGD,KAAK,IAAI,CAAC,IAC5BC,eAAe,GAAGD,KAAK,KAAK,CAAC,IAC7BC,eAAe,GAAGD,KAAK,CAAC,CAAC,EACzB;QACA,OAAOA;IACT;IAEA,MAAME,QAAQD,WAAWC,KAAK,CAAC;IAC/B,IAAIA,SAASA,KAAK,CAAC,EAAE,KAAKF,QAAQE,KAAK,CAAC,EAAE,EAAE;QAC1C,OAAOA,KAAK,CAAC,EAAE,KAAK,MAAMF,OAAO,GAAGA,OAAOE,KAAK,CAAC,EAAE,EAAE;IACvD;IAEA,OAAOD;AACT;AAEA;;CAEC,GACD,MAAME,8BAA8B,CAClCH,MACAD,KACAxH,QACA6D;IAEA,IAAI,CAACA,QAAQA,KAAKzC,MAAM,KAAK,GAAG;QAC9B,OAAOkD;IACT;IAEA,MAAMuD,aAAaC,mBAAmB9H,QAAQwH,KAAKC;IACnD,MAAMM,YAAYR,iBAAiBC,KAAKC;IACxC,MAAMO,eAAeP,SAAS,MAAM,UAAU;IAE9C,IAAIQ;IACJ,IAAIC;IAEJrE,KAAKG,OAAO,CAAC2B,CAAAA;QACX,MAAMwC,YAAYxC;QAClB,MAAMyC,eAAeb,iBAAiBY,SAAS,CAACH,aAAkC,EAAwBP;QAC1G,IAAIW,iBAAiBL,WAAW;YAC9B;QACF;QAEA,MAAMM,SAAUZ,SAAS,MAAMU,UAAUnD,CAAC,GAAGmD,UAAUjE,CAAC;QACxD,IAAI,KAACpG,mCAAAA,EAAoBuK,SAAS;YAChC;QACF;QAEA,MAAMC,YAAYD;QAClB,IAAK,IAAIzF,QAAQ,GAAGA,QAAQ0F,UAAUlH,MAAM,EAAEwB,QAAS;YACrD,MAAMmE,QAAQuB,SAAS,CAAC1F,MAAM;YAC9B,MAAMwE,UAAUmB,eAAeC,iBAAiBzB,OAAOc;YACvD,IAAIT,YAAY9C,aAAa+C,OAAOoB,KAAK,CAACrB,UAAU;gBAClD;YACF;YACAa,WAAWA,aAAa3D,YAAY8C,UAAUjD,KAAKvH,GAAG,CAACqL,UAAUb;YACjEc,WAAWA,aAAa5D,YAAY8C,UAAUjD,KAAKrH,GAAG,CAACoL,UAAUd;QACnE;IACF;IAEA,IAAIa,aAAa3D,aAAa4D,aAAa5D,aAAa2D,aAAaC,UAAU;QAC7E,OAAO5D;IACT;IAEA,OAAO;QAAC2D;QAAUC;KAAS;AAC7B;AAEA;;CAEC,GACD,MAAMQ,6BAA6B,CAAC3B;IAClC,IAAIA,UAAUzC,WAAW;QACvB,OAAOA;IACT;IACA,IAAI,CAAC+C,OAAOC,QAAQ,CAACP,QAAQ;QAC3B,OAAOzC;IACT;IACA,OAAO,IAAIyC;AACb;AAEA,MAAM4B,qBAAqB,CAACjF;IAC1B,OAASA,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU,EAAA,CAAC,CAAGuC,WAAW;QAChC,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT;YACE,OAAO3B;IACX;AACF;AAEA,MAAMsE,mBAAmB,CAAClF;IACxB,OAASA,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU,EAAA,CAAC,CAAGuC,WAAW;QAChC,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT;YACE,OAAO3B;IACX;AACF;AAEA,MAAMuE,WAAW,CAAC9B;IAChB,IAAIA,UAAUzC,aAAayC,UAAU,MAAM;QACzC,OAAOzC;IACT;IACA,IAAI,OAAOyC,UAAU,UAAU;QAC7B,OAAOA;IACT;IACA,IAAI,OAAOA,UAAU,YAAYM,OAAOC,QAAQ,CAACP,QAAQ;QACvD,OAAO,GAAGA,MAAM,EAAE,CAAC;IACrB;IACA,OAAOzC;AACT;AAEA;;CAEC,GACD,MAAMwE,iBAAiB,CAACtB,KAAyBC;IAC/C,IAAI,CAACD,KAAK;QACR,OAAO;IACT;IACA,MAAME,aAAaF,IAAIvB,WAAW;IAClC,IAAIyB,eAAe,SAAS;QAC1B,OAAO;IACT;IACA,IAAIA,eAAe,SAAS;QAC1B,OAAO;IACT;IACA,IAAIA,WAAWqB,QAAQ,CAAC,YAAY;QAClC,OAAOrB,WAAWsB,UAAU,CAACvB,QAAQ,aAAanD;IACpD;IACA,MAAMqD,QAAQD,WAAWC,KAAK,CAAC;IAC/B,IAAIA,SAASA,KAAK,CAAC,EAAE,KAAKF,MAAM;QAC9B,OAAO;IACT;IACA,OAAOnD;AACT;AAEA;;CAEC,GACD,MAAMwD,qBAAqB,CACzB9H,QACAwH,KACAC;IAEA,IAAI,CAACzH,QAAQ;QACX,OAAOsE;IACT;IACA,MAAM2E,iBAAiB,GAAGxB,KAAK,IAAI,CAAC;IACpC,IAAI,CAACD,KAAK;QACR,OAAOxH,MAAM,CAACiJ,eAAe;IAC/B;IACA,MAAMvB,aAAaF,IAAIvB,WAAW;IAClC,IAAIyB,eAAe,WAAWA,eAAe,WAAWA,WAAWqB,QAAQ,CAAC,YAAY;QACtF,OAAO/I,MAAM,CAACiJ,eAAe;IAC/B;IACA,MAAMtB,QAAQD,WAAWC,KAAK,CAAC;IAC/B,IAAIA,SAASA,KAAK,CAAC,EAAE,KAAKF,MAAM;QAC9B,MAAM7E,QAAQ+E,KAAK,CAAC,EAAE;QACtB,IAAI/E,SAASA,UAAU,MAAMA,UAAU,KAAK;YAC1C,MAAMsG,UAAU,GAAGzB,KAAK,IAAI,EAAE7E,OAAO;YACrC,OAAO5C,MAAM,CAACkJ,QAAQ;QACxB;QACA,OAAOlJ,MAAM,CAACiJ,eAAe;IAC/B;IACA,OAAOjJ,MAAM,CAACiJ,eAAe;AAC/B;AAEA;;CAEC,GACD,MAAMT,mBAAmB,CACvBzB,OACAc;IAEA,IAAId,UAAUzC,aAAayC,UAAU,MAAM;QACzC,OAAOzC;IACT;IACA,IAAIuD,CAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYzD,IAAAA,AAAI,MAAK,cAAUrG,sBAAAA,EAAOgJ,QAAQ;QAChD,MAAMoC,YAAYpC,iBAAiB9E,OAAO8E,QAAQ,IAAI9E,KAAK8E;QAC3D,OAAOM,OAAOoB,KAAK,CAACU,UAAUC,OAAO,MAAM9E,YAAY6E;IACzD;IACA,IAAI,OAAOpC,UAAU,UAAU;QAC7B,OAAOA;IACT;IACA,IAAIc,CAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYzD,IAAAA,AAAI,MAAK,YAAYyD,CAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYzD,IAAAA,AAAI,MAAK,OAAO;QAC/D,MAAMgD,UAAUC,OAAON;QACvB,OAAOM,OAAOC,QAAQ,CAACF,WAAWA,UAAU9C;IAC9C;IACA,IAAIyC,iBAAiB9E,MAAM;QACzB,OAAO8E;IACT;IACA,OAAOA;AACT;AAEA,MAAMwB,iBAAiB,CAACxB;IACtB,IAAIA,iBAAiB9E,MAAM;QACzB,MAAMoH,YAAYtC,MAAMqC,OAAO;QAC/B,OAAO/B,OAAOC,QAAQ,CAAC+B,aAAaA,YAAY/E;IAClD;IACA,IAAI,OAAOyC,UAAU,UAAU;QAC7B,OAAOM,OAAOC,QAAQ,CAACP,SAASA,QAAQzC;IAC1C;IACA,IAAI,OAAOyC,UAAU,UAAU;QAC7B,MAAMK,UAAUC,OAAON;QACvB,OAAOM,OAAOC,QAAQ,CAACF,WAAWA,UAAU9C;IAC9C;IACA,OAAOA;AACT;AAEA,MAAMgF,uBAAuB,CAC3BvC,OACAc,YACA0B;IAEA,MAAMvM,QAAQmF,MAAMC,OAAO,CAACyF,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY7K,KAAK,IAAI6K,WAAY7K,KAAK,GAAGsH;IAErE,IAAIkF,QAAQxM,SAASA,MAAMoE,MAAM,IAAI,IAAImH,eAAeC,iBAAiBxL,KAAK,CAAC,EAAE,EAAE6K,eAAevD;IAClG,IAAImF,MAAMzM,SAASA,MAAMoE,MAAM,IAAI,IAAImH,eAAeC,iBAAiBxL,KAAK,CAAC,EAAE,EAAE6K,eAAevD;IAEhG,IAAKkF,CAAAA,UAAUlF,aAAamF,QAAQnF,aAAakF,UAAUC,GAAAA,CAAE,IAAMF,eAAe;QAChF,CAACC,OAAOC,IAAI,GAAGF;IACjB;IAEA,MAAMG,UAAUnB,eAAeC,iBAAiBzB,OAAOc;IAEvD,IAAI2B,UAAUlF,aAAamF,QAAQnF,aAAaoF,YAAYpF,aAAakF,UAAUC,KAAK;QACtF,OAAOnF;IACT;IAEA,MAAMqF,WAAYD,CAAAA,UAAUF,KAAAA,CAAI,IAAMC,MAAMD,KAAAA,CAAI;IAChD,OAAOnC,OAAOC,QAAQ,CAACqC,YAAYA,WAAWrF;AAChD;AAEA,MAAMsF,qBAAqB,CAACxJ,MAAcwC;IACxC,MAAM8E,aAAatH,KAAK8G,OAAO,CAAC,QAAQ,KAAK2C,IAAI;IACjD,IAAInC,YAAY;QACd,MAAMoC,OAAOpC,WACVzB,WAAW,GACXiB,OAAO,CAAC,eAAe,KACvBA,OAAO,CAAC,YAAY,IACpB6C,KAAK,CAAC,GAAG;QACZ,IAAID,MAAM;YACR,OAAO,CAAC,WAAW,EAAElH,MAAM,CAAC,EAAEkH,MAAM;QACtC;IACF;IACA,OAAO,CAAC,WAAW,EAAElH,OAAO;AAC9B;AAEA,MAAMoH,uBAAuB,CAAC;AAE9B,MAAMC,sBAAsB,CAACC;IAC3B,IAAIC,eAAe;IACnB,IAAIC,aAAa;IAEjB,MAAMC,YAAY,OAAOH,gBAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYI,SAAAA,AAAS,MAAK,WAAWJ,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYI,SAAS,CAACrE,WAAW,KAAK3B;IACpG,IAAI+F,WAAW;QACbF,eAAeE,UAAUnE,QAAQ,CAAC;QAClCkE,aAAaC,UAAUnE,QAAQ,CAAC;IAClC;IAEA,MAAMqE,UAAUpD,eAAe+C,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYM,SAAS;IACpD,MAAMC,YAAYtD,eAAgB+C,WAA2CQ,cAAc;IAE3F,IAAIH,YAAYjG,aAAaiG,UAAU,GAAG;QACxCH,aAAa;IACf;IACA,IAAIK,cAAcnG,aAAamG,YAAY,GAAG;QAC5CN,eAAe;IACjB;IAEA,IAAIA,gBAAgBC,YAAY;QAC9B,OAAO;IACT;IACA,IAAID,cAAc;QAChB,OAAO;IACT;IACA,IAAIC,YAAY;QACd,OAAO;IACT;IACA,OAAO;AACT;AAEA,MAAMO,wBAAwB,CAAC5D;IAC7B,IAAI,CAACA,OAAO;QACV,OAAOzC;IACT;IAEA,MAAMoD,aAAaX,MAAM8C,IAAI,GAAG5D,WAAW;IAE3C,OAAQyB;QACN,KAAK;YACH,OAAOpD;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT;YACE,IAAI,kBAAkB+B,IAAI,CAACqB,WAAWR,OAAO,CAAC,QAAQ,OAAO;gBAC3D,OAAOQ,WAAWR,OAAO,CAAC,QAAQ;YACpC;YACA,OAAOH;IACX;AACF;AAEA;;;CAGC,GACD,MAAM6D,0BAA0B,CAC9BV,YACAlK,QACA6D,MACAjB;IAEA,IAAI,CAACsH,cAAeA,WAAqCW,OAAO,KAAK,OAAO;QAC1E,OAAOvG;IACT;IAEA,MAAMwG,WAAWhC,eAAeoB,WAAWa,IAAI,EAAwB;IACvE,MAAMC,WAAWlC,eAAeoB,WAAWe,IAAI,EAAwB;IAEvE,IAAI,CAACH,YAAY,CAACE,UAAU;QAC1B,OAAO1G;IACT;IAEA,IAAI4G;IAEJ,IAAIJ,aAAa,UAAUE,aAAa,QAAQ;QAC9C,MAAMG,cAAcrD,mBAAmB9H,QAAQkK,WAAWa,IAAI,EAAwB;QACtF,MAAMK,cAActD,mBAAmB9H,QAAQkK,WAAWe,IAAI,EAAwB;QACtF,MAAMI,SAAS7C,iBAAiB0B,WAAWlF,CAAC,EAAEmG;QAC9C,MAAMG,SAAS9C,iBAAiB0B,WAAWhG,CAAC,EAAEkH;QAC9C,IAAIC,WAAW/G,aAAagH,WAAWhH,WAAW;YAChD,OAAOA;QACT;QACA,MAAMiH,iBAAiB,OAAOrB,WAAWe,IAAI,KAAK,WAAWf,WAAWe,IAAI,CAAChF,WAAW,KAAK3B;QAC7F4G,cAAc;YACZ9G,MAAM;YACNY,GAAGqG;YACHnH,GAAGoH;YACH,GAAIC,mBAAmB,OAAO;gBAAEvK,OAAO;YAAqB,IAAI,CAAC,CAAC;QACpE;IACF,OAAO,IAAI8J,aAAa,cAAcE,aAAa,YAAY;QAC7D,MAAMK,SAASlE,eAAe+C,WAAWlF,CAAC;QAC1C,MAAMsG,SAASnE,eAAe+C,WAAWhG,CAAC;QAC1C,MAAMsH,iBAAiB9C,2BAA2B4C;QAClD,IAAID,WAAW/G,aAAakH,mBAAmBlH,WAAW;YACxD,OAAOA;QACT;QACA4G,cAAc;YACZ9G,MAAM;YACNY,GAAGqG;YACHnH,GAAGsH;QACL;IACF,OAAO,IAAIV,aAAa,cAAcE,aAAa,QAAQ;QACzD,MAAMK,SAASlE,eAAe+C,WAAWlF,CAAC;QAC1C,MAAMoG,cAActD,mBAAmB9H,QAAQkK,WAAWe,IAAI,EAAwB;QACtF,MAAMQ,iBAAiB7D,4BAA4B,KAAKsC,WAAWe,IAAI,EAAwBjL,QAAQ6D;QACvG,MAAM6H,YAAYpC,qBAAqBY,WAAWhG,CAAC,EAAEkH,aAAaK;QAClE,MAAMD,iBAAiB9C,2BAA2BgD;QAClD,IAAIL,WAAW/G,aAAakH,mBAAmBlH,WAAW;YACxD,OAAOA;QACT;QACA4G,cAAc;YACZ9G,MAAM;YACNY,GAAGqG;YACHnH,GAAGsH;QACL;IACF,OAAO,IAAIV,aAAa,UAAUE,aAAa,YAAY;QACzD,MAAMM,SAASnE,eAAe+C,WAAWhG,CAAC;QAC1C,MAAMiH,cAAcrD,mBAAmB9H,QAAQkK,WAAWa,IAAI,EAAwB;QACtF,MAAMY,iBAAiB/D,4BAA4B,KAAKsC,WAAWa,IAAI,EAAwB/K,QAAQ6D;QACvG,MAAM+H,YAAYtC,qBAAqBY,WAAWlF,CAAC,EAAEmG,aAAaQ;QAClE,MAAMH,iBAAiB9C,2BAA2B4C;QAClD,IAAIM,cAActH,aAAakH,mBAAmBlH,WAAW;YAC3D,OAAOA;QACT;QACA4G,cAAc;YACZ9G,MAAM;YACNY,GAAG4G;YACH1H,GAAGsH;QACL;IACF,OAAO,IAAIV,aAAa,WAAWE,aAAa,SAAS;QACvD,MAAMK,SAASlE,eAAe+C,WAAWlF,CAAC;QAC1C,MAAMsG,SAASnE,eAAe+C,WAAWhG,CAAC;QAC1C,IAAImH,WAAW/G,aAAagH,WAAWhH,WAAW;YAChD,OAAOA;QACT;QACA4G,cAAc;YACZ9G,MAAM;YACNY,GAAGqG;YACHnH,GAAGoH;QACL;IACF,OAAO;QACL,OAAOhH;IACT;IAEA,MAAMuH,YAAY3B,WAAW9J,IAAI;IACjC,MAAM0L,UAAUD,cAAcvH,aAAauH,cAAc,OAAO,KAAKE,OAAOF;IAC5E,MAAMG,cAAc/E,mBAAmB6E;IAEvC,MAAMG,kBAAmC;QACvCC,IAAItC,mBAAmBoC,aAAapJ;QACpCxC,MAAM4L;QACNd;IACF;IAEA,MAAMiB,cAAmD,CAAC;IAC1D,MAAMC,aAAiD,CAAC;IACxD,MAAMC,YAAYnC,WAAWoC,SAAS,KAAKhI,YAAY,QAAQ,CAAC,CAAC4F,WAAWoC,SAAS;IAErF,MAAMC,aAAcrC,WAAwCsC,UAAU;IACtE,IAAID,eAAejI,WAAW;QAC5B6H,YAAYM,YAAY,GAAG,CAAC,CAACF;IAC/B,OAAO,IAAIrB,YAAY9G,IAAI,KAAK,QAAQ;QACtC+H,YAAYM,YAAY,GAAG;IAC7B;IAEA,MAAMC,kBAAkB/D,mBAAmBuB,WAAWyC,OAAO;IAC7D,IAAID,iBAAiB;QACnBP,YAAYS,KAAK,GAAGF;IACtB;IAEA,IAAI,CAACP,YAAYS,KAAK,EAAE;QACtB,MAAMC,YAAYlE,mBAAoBuB,WAAkC0C,KAAK;QAC7E,IAAIC,WAAW;YACbV,YAAYS,KAAK,GAAGC;QACtB;IACF;IAEA,MAAMC,gBAAgBlE,iBAAiBsB,WAAW6C,OAAO;IACzD,IAAID,eAAe;QACjBX,YAAYW,aAAa,GAAGA;IAC9B;IAEA,IAAI,CAACX,YAAYW,aAAa,EAAE;QAC9B,MAAME,aAAapE,iBAAkBsB,WAAmC+C,MAAM;QAC9E,IAAID,YAAY;YACdb,YAAYW,aAAa,GAAGE;QAC9B;IACF;IAEA,MAAME,oBAA8B,EAAE;IACtC,IAAIC,oBAAoB;IACxB,MAAMC,KAAKjG,eAAe+C,WAAWkD,EAAE;IACvC,MAAMC,QAAQ,OAAOnD,WAAWoD,KAAK,KAAK,WAAWpD,WAAWoD,KAAK,CAACrH,WAAW,KAAK3B;IACtF,IAAI8I,OAAO9I,aAAc+I,CAAAA,UAAU/I,aAAa+I,UAAU,OAAA,CAAM,EAAI;QAClEH,kBAAkBK,IAAI,CAACH;QACvBD,oBAAoB;IACtB;IACA,MAAMK,SAASrG,eAAe+C,WAAWuD,MAAM;IAC/C,IAAID,WAAWlJ,WAAW;QACxB4I,kBAAkBK,IAAI,CAACC;QACvBL,oBAAoB;IACtB;IACA,IAAID,kBAAkB9L,MAAM,GAAG,GAAG;QAChC,MAAMsM,UAAUR,kBAAkBS,MAAM,CAAC,CAACjR,KAAKqK,QAAUrK,MAAMqK,OAAO;QACtE,IAAI2G,YAAY,GAAG;YACjBvB,YAAYuB,OAAO,GAAGA;QACxB;IACF;IAEA,MAAME,oBAA8B,EAAE;IACtC,MAAMC,KAAK1G,eAAe+C,WAAW2D,EAAE;IACvC,MAAMC,QAAQ,OAAO5D,WAAW6D,KAAK,KAAK,WAAW7D,WAAW6D,KAAK,CAAC9H,WAAW,KAAK3B;IACtF,IAAIuJ,OAAOvJ,aAAcwJ,CAAAA,UAAUxJ,aAAawJ,UAAU,OAAA,CAAM,EAAI;QAClEF,kBAAkBL,IAAI,CAACM;QACvBV,oBAAoB;IACtB;IACA,MAAMa,SAAS7G,eAAe+C,WAAW+D,MAAM;IAC/C,IAAID,WAAW1J,WAAW;QACxBsJ,kBAAkBL,IAAI,CAACS;QACvBb,oBAAoB;IACtB;IACA,IAAIS,kBAAkBxM,MAAM,GAAG,GAAG;QAChC,MAAM8M,UAAUN,kBAAkBD,MAAM,CAAC,CAACjR,KAAKqK,QAAUrK,MAAMqK,OAAO;QACtE,IAAImH,YAAY,GAAG;YACjB/B,YAAY+B,OAAO,GAAGA;QACxB;IACF;IAEA,IAAI7B,aAAa,CAACc,qBAAqBhB,YAAY+B,OAAO,KAAK5J,WAAW;QACxE6H,YAAY+B,OAAO,GAAGlE;IACxB;IAEA,MAAMmE,WAAWhH,eAAe+C,WAAWkE,KAAK;IAChD,IAAID,aAAa7J,WAAW;QAC1B6H,YAAYgC,QAAQ,GAAGA;IACzB;IAEA,IAAIjE,WAAWmE,OAAO,EAAE;QACtBjC,WAAWkC,eAAe,GAAGpE,WAAWmE,OAAO;IACjD;IAEA,IAAInE,WAAWqE,WAAW,EAAE;QAC1BnC,WAAWoC,WAAW,GAAGtE,WAAWqE,WAAW;IACjD;IAEA,MAAME,cAActH,eAAe+C,WAAWwE,WAAW;IACzD,IAAID,gBAAgBnK,WAAW;QAC7B8H,WAAWqC,WAAW,GAAGA;IAC3B;IAEA,MAAME,YAAY9F,SAASqB,WAAW0E,SAAS;IAC/C,IAAID,WAAW;QACbvC,WAAWyC,OAAO,GAAGF;IACvB;IAEA,MAAMG,UAAU3H,eAAe+C,WAAW4E,OAAO;IACjD,IAAIA,YAAYxK,WAAW;QACzB8H,WAAW0C,OAAO,GAAGA;IACvB;IAEA,IAAI5E,WAAW6E,IAAI,EAAE;QACnB,MAAMA,OAAO7E,WAAW6E,IAAI;QAK5B,IAAIA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMpK,KAAK,EAAE;YACfyH,WAAW4C,SAAS,GAAGD,KAAKpK,KAAK;QACnC;QACA,MAAMsK,WAAWpG,SAASkG,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMG,IAAI;QACpC,IAAID,UAAU;YACZ7C,WAAW6C,QAAQ,GAAGA;QACxB;QACA,IAAIF,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMI,MAAM,EAAE;YAChB/C,WAAWgD,UAAU,GAAGL,KAAKI,MAAM;QACrC;IACF;IAEA,MAAME,YAAanF,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAgDoF,SAAS;IAC5E,IAAI,OAAOD,cAAc,YAAY,CAAChI,OAAOoB,KAAK,CAAC4G,YAAY;QAC7DjD,WAAWmD,QAAQ,GAAGF;IACxB,OAAO,IAAI,OAAOA,cAAc,YAAYA,UAAUpJ,WAAW,OAAO,QAAQ;QAC9E,MAAMuJ,cAAcnI,OAAOgI;QAC3B,IAAI,CAAChI,OAAOoB,KAAK,CAAC+G,cAAc;YAC9BpD,WAAWmD,QAAQ,GAAGC;QACxB;IACF;IACA,IAAI9I,OAAO+I,IAAI,CAACtD,aAAa/K,MAAM,GAAG,GAAG;QACvC6K,gBAAgBjM,MAAM,GAAGmM;IAC3B;IAEA,IAAIzF,OAAO+I,IAAI,CAACrD,YAAYhL,MAAM,GAAG,GAAG;QACtC6K,gBAAgByD,KAAK,GAAGtD;IAC1B;IAEA,IAAIC,WAAW;YACOnC;QAApB,MAAMyF,aAAa,CAACzF,yBAAAA,WAAW0F,UAAAA,AAAU,MAAA,QAArB1F,2BAAAA,KAAAA,IAAAA,yBAAoCkC,WAAW4C,SAAS;QAC5E,MAAMa,aAAa1I,eAAe+C,WAAW4F,UAAU;QACvD,MAAMC,aAAa5I,eAAe+C,WAAW8F,QAAQ;QACrD,MAAMC,eAAe9I,eAAgB+C,WAA0CgG,aAAa;QAC5F,MAAMC,cAAcxF,sBAAuBT,WAAsCkG,SAAS;QAE1FnE,gBAAgBoE,SAAS,GAAG;YAC1B,GAAIV,aAAa;gBAAEW,aAAaX;YAAW,IAAI,CAAC,CAAC;YACjD,GAAIE,eAAevL,YAAY;gBAAE9E,aAAaqQ;YAAW,IAAI,CAAC,CAAC;YAC/D,GAAIE,eAAezL,YAAY;gBAAEyL,YAAY5L,KAAKrH,GAAG,CAACiT,YAAY;YAAG,IAAI,CAAC,CAAC;YAC3E,GAAIE,iBAAiB3L,YAAY;gBAAE2L,cAAc9L,KAAKrH,GAAG,CAACmT,cAAc;YAAG,IAAI,CAAC,CAAC;YACjF,GAAIE,cAAc;gBAAEI,WAAWJ;YAAY,IAAI,CAAC,CAAC;YACjDK,OAAOvG,oBAAoBC;QAC7B;IACF;IAEA,OAAO+B;AACT;AAEA,MAAMwE,gCAAgC,CACpCzQ,QACA6D,MACA6M;IAEA,IAAIA,eAAe,EAAC1Q,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQ2Q,WAAAA,AAAW,GAAE;QACvC,OAAOrM;IACT;IACA,MAAMsM,mBAAmBzO,MAAMC,OAAO,CAACpC,OAAO2Q,WAAW,IAAI3Q,OAAO2Q,WAAW,GAAG;QAAC3Q,OAAO2Q,WAAW;KAAC;IACtG,MAAME,YAAYD,iBACfrO,GAAG,CAAC,CAAC2H,YAAYtH,QAAUgI,wBAAwBV,YAAgClK,QAAQ6D,MAAMjB,QACjGC,MAAM,CAAC,CAACqH,aAA8CA,eAAe5F;IAExE,OAAOuM,UAAUzP,MAAM,GAAG,IAAIyP,YAAYvM;AAC5C;AAQO,oCAAoC,CACzCT,MACAkN;IAEA,IAAI,CAAClN,QAAQA,KAAKzC,MAAM,KAAK,GAAG;QAC9B,OAAO;YAAE4P,QAAQ,EAAE;YAAEhM,GAAG,EAAE;QAAC;IAC7B;IAEA,8EAA8E;IAC9E,MAAMA,IAAI+L,WAAWA,QAAQ3P,MAAM,KAAKyC,KAAKzC,MAAM,GAAG2P,UAAUlN,KAAKtB,GAAG,CAAC,CAAC0O,GAAGrO,QAAU,CAAC,KAAK,EAAEA,QAAQ,GAAG;IAE1G,+EAA+E;IAC/E,MAAMsO,mBAAmBrN,KAAKtB,GAAG,CAAC,CAAC4O,MAAMvO;QACvC,IAAI,OAAOuO,SAAS,YAAYA,SAAS,MAAM;YAC7C,MAAM1K,YAAYH,cAAc6K;YAChC,2FAA2F;YAC3F,MAAMC,WAAoC,CAAC;YAC3C1K,OAAO+I,IAAI,CAAChJ,WAAWzC,OAAO,CAAC+B,CAAAA;gBAC7B,MAAMgB,QAAQN,SAAS,CAACV,IAAI;gBAC5B,IAAI,CAACD,gBAAgBC,QAAS,CAAA,OAAOgB,UAAU,YAAa,OAAOA,UAAU,gBAAYzI,wBAAAA,EAASyI,MAAAA,CAAM,EAAI;oBAC1GqK,QAAQ,CAACrL,IAAI,GAAGgB;gBAClB;YACF;YACA,OAAOqK;QACT,OAAO,IAAI,OAAOD,SAAS,YAAa,OAAOA,SAAS,YAAY7S,4BAAAA,EAAS6S,OAAQ;YACnF,qCAAqC;YACrC,OAAO;gBAAE,CAACnM,CAAC,CAACpC,MAAM,IAAI,CAAC,KAAK,EAAEA,OAAO,CAAC,EAAEuO;YAAK;QAC/C,OAAO;YACL,0DAA0D;YAC1D,OAAO,CAAC;QACV;IACF;IAEA,6CAA6C;IAC7C,MAAME,UAAU,IAAI5L;IACpByL,iBAAiBlN,OAAO,CAACuC,CAAAA;QACvBG,OAAO+I,IAAI,CAAClJ,KAAKvC,OAAO,CAAC+B,CAAAA,MAAOsL,QAAQC,GAAG,CAACvL;IAC9C;IAEA,wCAAwC;IACxC,MAAMiL,SAAyC,EAAE;IAEjDK,QAAQrN,OAAO,CAAC+B,CAAAA;QACd,MAAM9B,UAAoB,EAAE;QAC5B,IAAIsN,eAAe;QACnB,IAAIC,gBAAgB;QAEpBN,iBAAiBlN,OAAO,CAAC,CAACuC,KAAK3D;YAC7B,MAAMmE,QAAQR,GAAG,CAACR,IAAI;YACtB,IAAI,OAAOgB,UAAU,UAAU;gBAC7B9C,QAAQsJ,IAAI,CAACxG;gBACbwK,eAAe;gBACfC,gBAAgB;YAClB,OAAO,IAAI,OAAOzK,UAAU,gBAAYzI,wBAAAA,EAASyI,QAAQ;gBACvD9C,QAAQsJ,IAAI,CAACjI,WAAWyB;gBACxBwK,eAAe;gBACfC,gBAAgB;YAClB;QACF;QAEA,kDAAkD;QAClD,IAAID,gBAAgBC,eAAe;YACjC,MAAM7L,QAAiC;gBACrCvB,MAAM;gBACNqN,MAAM1L;gBACNf;gBACAd,GAAGD;YACL;YAEA+M,OAAOzD,IAAI,CAAC5H;QACd;IACF;IAEA,OAAO;QAAEqL;QAAQhM;IAAE;AACrB,EAAE;AAEK,kDAAkD,CACvD2M,OACAjB,aACAkB,WACAC,eACAC;QAQSC,sBAEYJ,eACCA,gBACcA,gBACDA,gBACVA,oBAAAA,gBACCA,qBAAAA,gBACXA;QAdKlB;IAApB,MAAME,cAAcF,CAAAA,iCAAAA,8BAA8BkB,MAAM3R,MAAM,EAAE2R,MAAM9N,IAAI,EAAE6M,YAAAA,MAAAA,QAAxDD,mCAAAA,KAAAA,IAAAA,iCAAwE,EAAE;IAC9F,MAAMxQ,SAASF,UAAU4R,MAAM3R,MAAM;IACrC,MAAMgS,cAAc/R,OAAOC,UAAU,IAAIoE;IAEzC,MAAMyN,iBAAiBJ,MAAM3R,MAAM;IACnC,MAAMiS,cACJ,QAAOF,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAgBG,IAAAA,AAAI,MAAA,QAApBH,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAsBE,WAAAA,AAAW,MAAK,WAAWF,eAAeG,IAAI,CAACD,WAAW,GAAG3N;IAE5F,MAAM8J,QAAQ,OAAA,CAAA,CAAOuD,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcvD,KAAAA,AAAK,MAAK,WAAWuD,MAAM3R,MAAM,CAACoO,KAAK,GAAG9J;IAC7E,MAAM6N,SAAS,OAAA,CAAA,CAAOR,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAK,WAAWR,MAAM3R,MAAM,CAACmS,MAAM,GAAG7N;IAChF,MAAM8N,uBAAuB,OAAA,CAAOT,AAAP,kBAAOA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,aAAAA,AAAa,MAAK,WAAWV,MAAM3R,MAAM,CAACqS,aAAa,GAAG/N;IAC5G,MAAMgO,sBAAsB,OAAA,CAAA,CAAOX,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcY,YAAAA,AAAY,MAAK,WAAWZ,MAAM3R,MAAM,CAACuS,YAAY,GAAGjO;IACzG,MAAMkO,YAAY,OAAA,CAAA,CAAOb,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAAA,eAAc5C,IAAAA,AAAI,MAAA,QAAlB4C,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAoBhN,KAAAA,AAAK,MAAK,WAAWgN,MAAM3R,MAAM,CAAC+O,IAAI,CAACpK,KAAK,GAAGL;IAC5F,MAAMmO,aAAa,OAAA,CAAA,AAAOd,kBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAc5C,IAAAA,AAAI,MAAA,QAAlB4C,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBe,MAAM,AAANA,MAAW,WAAWf,MAAM3R,MAAM,CAAC+O,IAAI,CAAC2D,MAAM,GAAGpO;IAC/F,MAAMqO,SAAAA,CAAShB,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcgB,MAAM;IAEnC,OAAO;QACLhC;QACAzQ,YAAY8R;QACZC;QACA7D;QACA+D;QACAC;QACAE;QACAE;QACAC;QACAE;IACF;AACF,EAAE;AAEK,wCAAwC,CAC7ChB,OACAjB,aACA9L,UACAF,cACAG;QAQE8M,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6BkB,mBAkDTlB,gBACCA,gBA4BMA,gBACpBA;IAxFT,MAAMkB,YAAYlB,MAAM9N,IAAI,CAAC,EAAE;QAM7B8N,2BAEAA;IANF,2CAA2C;IAC3C,+BAA+B;IAC/B,+CAA+C;IAC/C,MAAMmB,aAA+ChU,gCAAAA,EACnD6S,CAAAA,4BAAAA,CAAAA,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,8BAAAA,KAAAA,IAAAA,4BAAAA,CAA6BA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACrEC,cACAiN,8BAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,+BAAAA,KAAAA,IAAAA,6BAA6BkB,cAAAA,QAAAA,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,oBAAAA,UAAWI,MAAAA,AAAM,MAAA,QAAjBJ,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAmBC,MAAM,EACtDlO,UACAC,aACA;IAEF,MAAMqO,uBAAuD,CAAC;IAC9D,+FAA+F;IAC/F,gEAAgE;IAChEtO,SAAS8E,OAAO,CAAEyJ,KAAK;IAEvB,iDAAiD;IACjD,IAAIN,UAAUO,MAAM,IAAIP,UAAUxK,MAAM,EAAE;YAClBwK;QAAtB,MAAMQ,eAAe,CAAA,AAACR,sBAAAA,UAAUI,MAAAA,AAAM,MAAA,QAAhBJ,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAkBC,MAAAA,AAAM,KAA4BxO;QAC1E,MAAMgP,kBAAkBnR,MAAMC,OAAO,CAACiR,iBAAiBA,aAAajS,MAAM,IAAIyR,UAAUO,MAAM,CAAChS,MAAM;QACrG,MAAMmS,kBAAkBV,UAAUO,MAAM,CAAC7Q,GAAG,CAAC,CAACiR,OAAO5Q,QAAW,CAAA;gBAC9D4Q;gBACAzM,OAAO0M,0BAA0BZ,UAAUxK,MAAM,EAAEzF;gBACnDA;gBACA+B,OAAO2O,kBAAkBD,YAAY,CAACzQ,MAAM,GAAG0B;aACjD,CAAA;QACA,4BAA4B;QAC5B,MAAMoP,aAAaH,gBAAgB1Q,MAAM,CAAC8Q,CAAAA,OAAQ,KAACvV,8BAAAA,EAAeuV,KAAK5M,KAAK;QAC5E,6FAA6F;QAC7F2M,WAAWE,IAAI,CAAC,CAACC,GAAGC,IAAOA,EAAE/M,KAAK,GAAe8M,EAAE9M,KAAK;QACxD2M,WAAW1P,OAAO,CAAC,CAAC2P,MAAMI;gBASpBpC,eAA6BA,+BAAAA,wBAAAA;YARjC,MAAMqC,SAAS,GAAGL,KAAKH,KAAK,EAAE;gBAQ1B7B,2BANFgC;YADF,MAAMhP,QACJgP,CAAAA,cAAAA,KAAKhP,KAAAA,AAAK,MAAA,QAAVgP,gBAAAA,KAAAA,IAAAA,kBACA5U,gCAAAA,EACE+T,QACAiB,WACAC,QACApP,UACA+M,CAAAA,4BAAAA,CAAAA,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,8BAAAA,KAAAA,IAAAA,4BAAAA,CAA6BA,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACrEI,aACA;YAGJ,IAAI,CAACqO,oBAAoB,CAACc,OAAO,EAAE;gBACjCd,oBAAoB,CAACc,OAAO,GAAG;oBAC7BA;oBACAnQ,MAAM8P,KAAK5M,KAAK;oBAChBpC;gBACF;YACF,OAAO;gBACLuO,oBAAoB,CAACc,OAAO,CAACnQ,IAAI,IAAK8P,KAAK5M,KAAK;YAClD;QACF;IACF;QAEsB4K;IAAtB,MAAMvD,QAAgBuD,CAAAA,sBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAAA,AAAK,MAAA,QAAnBuD,wBAAAA,KAAAA,IAAAA,sBAAuB;QACtBA;IAAvB,MAAMQ,SAAiBR,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAM,AAANA,MAAM,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;IAC/C,MAAMsC,aAAsBpB,UAAUqB,QAAQ,GAC1C,CAAC;QAAC;QAAS;QAAW;KAAgB,CAAChO,QAAQ,CAAC2M,UAAUqB,QAAQ,IAClE;IACJ,MAAMC,wBAAgCF,aAAa,IAAI;IACvD,MAAMG,sBAA8B,KAAMH,CAAAA,aAAa,IAAI,EAAA,CAAC;IAC5D,MAAMI,cAAsBxB,UAAUyB,IAAI,GACtCzB,UAAUyB,IAAI,GAAInQ,CAAAA,KAAKvH,GAAG,CAACwR,QAAQ+F,uBAAuBhC,SAASiC,wBAAuB,CAAA,GAC1FzW,2BAAAA;IACJ,MAAM,EAAEuC,UAAU,EAAE,GAAGH,UAAU4R,MAAM3R,MAAM;IAC7C,0EAA0E;IAC1E,MAAMuU,UAAU7N,OAAO+I,IAAI,CAACyD;IAC5B,MAAMsB,mBACJD,QAAQnT,MAAM,GAAG,IACZ;QACC;YAACmT,OAAO,CAAC,EAAE;YAAErB,oBAAoB,CAACqB,OAAO,CAAC,EAAE,CAAC;SAAC;WAC3CA,QACAxK,KAAK,CAAC,GACN0K,OAAO,GACPlS,GAAG,CAACwD,CAAAA,MAAO;gBAACA;gBAAKmN,oBAAoB,CAACnN,IAAI;aAAC;KAC/C,GACDwO,QAAQhS,GAAG,CAACwD,CAAAA,MAAO;YAACA;YAAKmN,oBAAoB,CAACnN,IAAI;SAAC;IAEzD,OAAO;QACLlC,MAAM;YACJ3D;YACAwU,WAAWF,iBAAiBjS,GAAG,CAAC,CAAC,GAAGoS,EAAE,GAAKA;QAC7C;QACAC,YAAYlE,eAAeiB,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAckD,UAAAA,AAAU,MAAK;QACxDzG,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D;QACAkC;QACAJ;QACAa,qBAAqBjC,UAAUqB,QAAQ,GAAG;YAAC;YAAW;SAAgB,CAAChO,QAAQ,CAAC2M,UAAUqB,QAAQ,IAAI;QACtGa,cAAc;QACdC,OAAO;IACT;AACF,EAAE;AAEK,uCAAuC,CAC5CrD,OACAjB,aACA9L,UACAF,cACAG,aACAqQ;QA0GCvD,eAqEQA,gBACCA,gBAMgBwD;IApL1B,MAAMC,mBAAiE,CAAC;IACxE,IAAI9T,YAAY;IAChB,IAAID,YAAY;IAChB,MAAMgU,uBAAuBzR,wBAAwB+N,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM;IAC7E,MAAM,EAAEuU,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAe3D,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAE0Q;IACzE,IAAI6E,aAAsDjR;IAC1D,MAAMpD,kBAAkBH,mBAAmB4Q,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM;IACtE,MAAMwV,gBAAgBC,qBAAqBC,YAAY/D,MAAM9N,IAAI,EAAE8R,eAAehE,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAEgF,CAAC;IAC7G2M,MAAM9N,IAAI,CAACG,OAAO,CAAC,CAACtD,QAA2BkV;YAI3CjE,+BAAAA,wBAAAA,eAEAjR,gBAMAiR,gCAAAA,yBAAAA,gBAEAjR;QAbF6U,iBAAavW,oCAAAA,EAAiB2S,MAAM3R,MAAM,EAAEU,QAAQ6U;QACpD,+CAA+C;QAC/C,MAAMM,yBAAqB/W,gCAAAA,EAAAA,CACzB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,0BAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cAAAA,CACAhE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,EACpBC,UACAC;QAEF,gDAAgD;QAChD,MAAMiR,0BAAsBhX,gCAAAA,EAAAA,CAC1B6S,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cAAAA,AACAhE,gBAAAA,OAAOqV,IAAAA,AAAI,MAAA,QAAXrV,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaiE,KAAK,EAClBC,UACAC;QAGF,MAAMmR,gBAAgBC,iBAAiBvV,QAAQ8U;QAC/CQ,cAAchS,OAAO,CAAC,CAAC,CAACkS,YAAYC,SAAS,EAAEC;YAC7C,MAAMC,eAAe3V,OAAOsE,CAAC,CAAE+E,KAAK,CAACmM,YAAYC;YACjD,MAAMG,eAAe5V,OAAOwD,CAAC,CAAE6F,KAAK,CAACmM,YAAYC;YAEhDE,aAAyBrS,OAAO,CAAC,CAACgB,GAAoBuR;oBAY3B7V,gBAC+BA,iBAA7CA,sBAAAA,iBAQNiR,+BAAAA,wBAAAA;gBApBN,IAAI,CAACyD,gBAAgB,CAACpQ,EAAE,EAAE;oBACxBoQ,gBAAgB,CAACpQ,EAAE,GAAG;wBACpBwR,YAAYhB,cAAcxQ;wBAC1B0P,WAAW,EAAE;wBACb+B,UAAU,EAAE;oBACd;gBACF;gBACA,MAAMzC,SAAiBO,OAAO,CAACqB,OAAO;gBACtC,+EAA+E;gBAC/E,MAAMjR,QAAQ4Q,aACVA,WACEzX,uCAAAA,EAAAA,AAAoB4C,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,IAAA,CAClCjE,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAAA,gBAAeiE,KAAK,AAALA,MAAK,QAApBjE,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAkC,CAAC6V,SAAS,CAAA,CAAC7V,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAAA,AAAK,EAAavD,MAAM,CAAC,GACvF,SAENrC,gCAAAA,EACE8W,oBACAU,QACAvC,QACApP,UAAAA,CACA+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCI;gBAEN,MAAMiK,cAAUjQ,8BAAAA,EAAW6B,QAAQ6V;gBACnC,MAAM3U,OAAwB0U,YAAY,CAACC,OAAO;gBAClD,MAAMG,mBAAmB/U,yBAAyBC,MAAMV;gBACxD,IAAIR,OAAO0D,IAAI,KAAK,OAAO;wBAIhBnF;oBAHTmW,gBAAgB,CAACpQ,EAAE,CAAC0P,SAAS,CAACnH,IAAI,CAAC;wBACjCyG;wBACAnQ,MAAMjC;wBACN+C,OAAO1F,CAAAA,2BAAAA,YAAAA,EAAI0F,OAAOgS,IAAI,CAAC;4BAAE7H;wBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAAvC3X,yBAAAA,KAAAA,IAAAA,uBAA6C0F;wBACpD+R;oBACF;oBACA,IAAI,OAAO9U,SAAS,UAAU;wBAC5BN,YAAY6C,KAAKrH,GAAG,CAACwE,WAAWM;oBAClC;gBACF,OAAO,IAAIlB,OAAO0D,IAAI,KAAK,aAAa,CAAC,CAAC8Q,cAAc;wBAMpDvD,gCAAAA,yBAAAA,gBAGmBjR;oBARrB,MAAMmW,gBAAY9X,gCAAAA,EAChB+W,qBACAF,QACA5B,QACApP,UAAAA,CACA+M,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCI;oBAEF,MAAMiS,cAAc,CAAA,CAAA,CAACpW,eAAAA,OAAOqW,IAAAA,AAAI,MAAA,QAAXrW,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAawF,QAAQ,CAAC,OAAA,IAAU8Q,eAAetW,OAAOqV,IAAI,IAAIzR;oBACnF,MAAM2S,cAAcC,eAAexW;wBAK1BzB;oBAJTmW,gBAAgB,CAACpQ,EAAE,CAACyR,QAAQ,CAAElJ,IAAI,CAAC;wBACjCyG,QAAQA,SAAUgC,CAAAA,cAAc5U,MAAM,GAAG,IAAI,CAAC,CAAC,EAAEgV,WAAW,GAAG,GAAG,EAAA,CAAC;wBACnEa;wBACA/S,GAAGtC;wBACH+C,OAAO1F,CAAAA,wBAAAA,gBAAAA,EAAI4X,WAAWF,IAAI,CAAC;4BAAE7H;wBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAA3C3X,0BAAAA,KAAAA,IAAAA,wBAAiD0F;wBACxDmS,aAAa;4BACX,GAAIA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,cAAe,CAAC,CAAC;4BACrBC,MAAMrW,OAAOqW,IAAI;wBACnB;wBACAI,oBAAoB3T,oBAAoB9C,QAAQiR,MAAM3R,MAAM;wBAC5D0W;oBACF;oBACA,IAAI,CAAClT,oBAAoB9C,QAAQiR,MAAM3R,MAAM,KAAK,OAAO4B,SAAS,UAAU;wBAC1EN,YAAY6C,KAAKrH,GAAG,CAACwE,WAAWM;wBAChCP,YAAY8C,KAAKvH,GAAG,CAACyE,WAAWO;oBAClC;gBACF;gBACAN,YAAY6C,KAAKrH,GAAG,CAACwE,WAAWM;YAClC;QACF;IACF;IAEA,MAAMwV,cAAc7R,mBAAmBoM,MAAM9N,IAAI;QAEhD8N;KAAAA,wBAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAc0F,MAAAA,AAAM,MAAA,QAApB1F,yBAAAA,KAAAA,IAAAA,uBAAwB,EAAC,AAAD,EACtB9O,MAAM,CAACyU,CAAAA,QAASA,MAAMlT,IAAI,KAAK,QAC/BJ,OAAO,CAAC,CAACsT,OAAOC;YACGD;QAAlB,MAAMT,YAAAA,CAAYS,cAAAA,MAAMvB,IAAAA,AAAI,MAAA,QAAVuB,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY3S,KAAK;QACnC,MAAM6S,WAAW,CAACC;YAChB,IAAIH,MAAMvM,IAAI,KAAK,YAAY;gBAC7B,IAAI0M,QAAQ,GAAG;oBACb,OAAOL,WAAW,CAAC,EAAE;gBACvB;gBACA,IAAIK,QAAQ,GAAG;oBACb,OAAOL,WAAW,CAACA,YAAYhW,MAAM,GAAG,EAAE;gBAC5C;YACF;YACA,IAAI,OAAOqW,QAAQ,YAAYtV,MAAMC,OAAO,CAACgV,cAAc;gBACzD,IAAIA,WAAW,CAACK,IAAI,KAAKnT,WAAW;oBAClC,OAAO8S,WAAW,CAACK,IAAI;gBACzB,OAAO;oBACL,OAAOL,WAAW,CAACG,SAAS;gBAC9B;YACF;YACA,OAAOE;QACT;QAEA,MAAMC,QAAQF,SAASF,MAAMK,EAAE;QAC/B,MAAMC,QAAQJ,SAASF,MAAMO,EAAE;QAC/B,MAAMC,WAAW,CAACL;YAChB,IAAIH,MAAMrM,IAAI,KAAK,SAAS;gBAC1B,IAAIwM,QAAQ,GAAG;oBACb,OAAOpW;gBACT;gBACA,IAAIoW,QAAQ,GAAG;oBACb,OAAOnW;gBACT;gBACA,IAAI,OAAOmW,QAAQ,UAAU;oBAC3B,OAAOpW,YAAYoW,MAAOnW,CAAAA,YAAYD,SAAAA,CAAQ;gBAChD;gBACA,OAAOoW;YACT;YACA,OAAOA;QACT;QAEA,MAAMM,QAAQD,SAASR,MAAMU,EAAE;QAC/B,MAAMC,QAAQH,SAASR,MAAMY,EAAE;QAC/B,IAAI9C,gBAAgB,CAACsC,MAAgB,EAAE;gBAI5BzY;YAHTmW,gBAAgB,CAACsC,MAAgB,CAACjB,QAAQ,CAAElJ,IAAI,CAAC;gBAC/CyG,QAAQ,CAAC,UAAU,EAAEuD,UAAU;gBAC/BrT,GAAG6T;gBACHpT,OAAO1F,CAAAA,sBAAAA,YAAAA,EAAI4X,WAAYD,UAAU,EAAA,MAAA,QAA1B3X,oBAAAA,KAAAA,IAAAA,kBAAgC4X;gBACvCC,aAAaE,eAAeM,MAAMvB,IAAI;gBACtCoB,oBAAoB;YACtB;QACF;QAEA,IAAI/B,gBAAgB,CAACwC,MAAgB,EAAE;gBAI5B3Y;YAHTmW,gBAAgB,CAACwC,MAAgB,CAACnB,QAAQ,CAAElJ,IAAI,CAAC;gBAC/CyG,QAAQ,CAAC,UAAU,EAAEuD,UAAU;gBAC/BrT,GAAG+T;gBACHtT,OAAO1F,wBAAAA,YAAAA,EAAI4X,WAAYD,UAAU,EAAA,MAAA,QAA1B3X,qBAAAA,KAAAA,IAAAA,mBAAgC4X;gBACvCC,aAAaE,eAAeM,MAAMvB,IAAI;gBACtCoB,oBAAoB;YACtB;QACF;IACF;IAEF,MAAMhC,WAAWzO,OAAO2B,MAAM,CAAC+M;IAC/B,MAAMzE,cAAcF,8BAA8BkB,MAAM3R,MAAM,EAAE2R,MAAM9N,IAAI,EAAE6M;QAKlEiB;IAHV,OAAO;QACL9N,MAAMsR;QACN/G,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChCwG,UAAU;QACV7W;QACAD;QACA0V,MAAM;QACN,GAAG1B,oBAAoB;QACvB+C,iBAAiB,OAAA,CAAA,CAAOjD,aAAAA,QAAQ,CAAC,EAAA,AAAE,MAAA,QAAXA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAaqB,UAAAA,AAAU,MAAK;QACpD6B,iBAAiB;QACjBC,WAAW;QACX1D;QACAG,cAAc;QACdwD,iBAAiB;QACjBC,qBAAqB;QACrBC,wBAAwB;QACxBC,cAAc;QACd,GAAGnX,iBAAiBoQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAGD,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAGS,mBAAmBkR,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAGyX,0BAA0BhH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QACtD,GAAG4Y,YAAYjH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QACxC,GAAGmB,iBAAiBwQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAG6Y,iBAAiBlH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QAC7C,GAAI2Q,cAAc;YAAEA;QAAY,IAAI,CAAC,CAAC;IACxC;AACF,EAAE;AAEK,uCAAuC,CAC5CgB,OACAjB,aACA9L,UACAF,cACAG;QAoJSkU,wBACCA;IAnJV,iEAAiE;IACjE,IAAIA,iBAAiB;QAAE,GAAGpH,KAAK;IAAC;IAEhC,yDAAyD;IACzD,MAAMqH,qBAAqBrH,MAAM9N,IAAI,CAACoV,IAAI,CACxC,CAACvY,SAA8BA,OAAO0D,IAAI,KAAK,aAAS7F,6BAAAA,EAAcmC,OAAOwD,CAAC;IAGhF,IAAI8U,oBAAoB;QACtB,oDAAoD;QACpD,MAAME,gBAAgBvH,MAAM9N,IAAI,CAC7BtB,GAAG,CAAC,CAAC7B,QAA2BkC;YAC/B,IAAIlC,OAAO0D,IAAI,KAAK,aAAS7F,6BAAAA,EAAcmC,OAAOwD,CAAC,GAAG;gBACpD,gEAAgE;gBAChE,MAAM,EAAE8M,MAAM,EAAE,GAAGF,4BACjBpQ,OAAOwD,CAAC,EACR/B,MAAMC,OAAO,CAAC1B,OAAOsE,CAAC,IAAKtE,OAAOsE,CAAC,GAAgBV;gBAGrD,2EAA2E;gBAC3E,OAAO0M,OAAOzO,GAAG,CAAC,CAACoD,QAAoC,CAAA;wBACrD,GAAGA,KAAK;wBACR,2DAA2D;wBAC3DsN,QAAQvS,OAAOuS,MAAM;qBACvB,CAAA;YACF;YACA,OAAO;gBAACvS;aAAO;QACjB,GACCmF,IAAI;QAEPkT,iBAAiB;YACf,GAAGpH,KAAK;YACR9N,MAAMqV;QACR;IACF;IACA,MAAMC,aAAqD,EAAE;IAC7D,MAAM9D,uBAAuBzR,wBAAwBmV,eAAelV,IAAI,EAAEkV,eAAe/Y,MAAM;IAC/F,MAAM,EAAEuU,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAeyD,eAAelV,IAAI,EAAEkV,eAAe/Y,MAAM,EAAE0Q;IAE3F,IAAI6E,aAAsDjR;IAC1D,MAAMpD,kBAAkBH,mBAAmBgY,eAAelV,IAAI,CAAC,EAAE,EAAEkV,eAAe/Y,MAAM;IACxF+Y,eAAelV,IAAI,CAACG,OAAO,CAAC,CAACtD,QAA2BkV;QACtDL,iBAAavW,oCAAAA,EAAiB+Z,eAAe/Y,MAAM,EAAEU,QAAQ6U;QAC7D,MAAMvB,SAAiBO,OAAO,CAACqB,OAAO;QACtC,MAAMqB,cAAcC,eAAexW;QAEnC,IAAIA,OAAO0D,IAAI,KAAK,OAAO;gBAGvB2U,wCAAAA,iCAAAA,wBAEArY;YAJF,+CAA+C;YAC/C,MAAMmV,yBAAqB/W,gCAAAA,EAAAA,CACzBia,yBAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kCAAAA,uBAAuB/F,QAAAA,AAAQ,MAAA,QAA/B+F,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yCAAAA,gCAAiC/Y,MAAAA,AAAM,MAAA,QAAvC+Y,2CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uCAAyCtU,QAAQ,EACjDC,cAAAA,CACAhE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,EACpBC,UACAC;YAGFsU,WAAW5L,IAAI,CAAC;gBACdnJ,MAAM;gBACN4P;gBACAjO,KAAKiO;gBACLnQ,MAAOnD,OAAOsE,CAAC,CACZzC,GAAG,CAAC,CAACyC,GAAGoU;wBACiC1Y,WAOdA,gBAC+BA,iBAA7CA,sBAAAA,iBAQNqY,wCAAAA,iCAAAA;oBAhBN,QAAI3a,8BAAAA,EAAe4G,MAAM5G,kCAAAA,EAAAA,CAAesC,YAAAA,QAAQ,AAADwD,MAAC,QAARxD,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAAC0Y,OAAO,GAAG;wBAC3D;oBACF;oBAEA,+EAA+E;oBAC/E,MAAMzU,QAAQ4Q,aACVA,eACEzX,mCAAAA,EAAAA,CAAoB4C,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,IAAA,CAClCjE,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,gBAAeiE,KAAAA,AAAK,MAAA,QAApBjE,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAkC,CAAC0Y,SAAS,CAAA,CAAC1Y,kBAAAA,OAAOuS,MAAM,AAANA,MAAM,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAAA,AAAK,EAAavD,MAAM,CAAC,GACvF,SAENrC,gCAAAA,EACE8W,oBACAuD,QACApF,QACApP,UAAAA,CACAmU,yBAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kCAAAA,uBAAuB/F,QAAAA,AAAQ,MAAA,QAA/B+F,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yCAAAA,gCAAiC/Y,MAAAA,AAAM,MAAA,QAAvC+Y,2CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uCAAyCtU,QAAQ,EACjDI;oBAEN,MAAMiK,cAAUjQ,8BAAAA,EAAW6B,QAAQ0Y;oBACnC,MAAMxX,OAAOlB,OAAOwD,CAAE,CAACkV,OAAO;wBAMrBna;oBAJT,OAAO;wBACL+F,GAAGA,EAAGK,QAAQ;wBACdnB,GAAGtC;wBACH8U,kBAAkB/U,yBAAyBC,MAAMV;wBACjDyD,OAAO1F,CAAAA,uBAAAA,gBAAAA,EAAI0F,OAAOgS,IAAI,CAAC;4BAAE7H;wBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAAvC3X,yBAAAA,KAAAA,IAAAA,uBAA6C0F;oBACtD;gBACF,GACC9B,MAAM,CAACsO,CAAAA,OAAQ,OAAOA,SAAS;gBAClCgG,oBAAoB3T,oBAAoB9C,QAAQqY,eAAe/Y,MAAM;YACvE;QACF,OAAO,IAAIU,OAAO0D,IAAI,KAAK,WAAW;gBAGlC2U,yCAAAA,kCAAAA,yBAEArY,cASAqY,yCAAAA,kCAAAA;YAbF,gDAAgD;YAChD,MAAMjD,0BAAsBhX,gCAAAA,EAAAA,CAC1Bia,0BAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,mCAAAA,wBAAuB/F,QAAAA,AAAQ,MAAA,QAA/B+F,qCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0CAAAA,iCAAiC/Y,MAAAA,AAAM,MAAA,QAAvC+Y,4CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wCAAyCtU,QAAQ,EACjDC,cAAAA,CACAhE,eAAAA,OAAOqV,IAAI,AAAJA,MAAI,QAAXrV,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaiE,KAAK,EAClBC,UACAC;YAEF,MAAMgS,gBAAY9X,gCAAAA,EAChB+W,qBACAF,QACA5B,QACApP,UAAAA,CACAmU,0BAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oCAAAA,wBAAuB/F,QAAAA,AAAQ,MAAA,QAA/B+F,qCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0CAAAA,iCAAiC/Y,MAAM,AAANA,MAAM,QAAvC+Y,4CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wCAAyCtU,QAAQ,EACjDI;YAEF,MAAMiS,cAAcE,eAAetW,OAAOqV,IAAI;YAC9C,MAAMjH,cAAUjQ,8BAAAA,EAAW6B,QAAQkV;YACnC,MAAMI,gBAAgBC,iBAAiBvV;YAEvCsV,cAAchS,OAAO,CAAC,CAAC,CAACkS,YAAYC,SAAS;gBAC3C,MAAME,eAAe3V,OAAOsE,CAAC,CAAE+E,KAAK,CAACmM,YAAYC;gBACjD,MAAMG,eAAe5V,OAAOwD,CAAC,CAAE6F,KAAK,CAACmM,YAAYC;oBAcxClX;gBAZTka,WAAW5L,IAAI,CAAC;oBACdnJ,MAAM;oBACN4P;oBACAiD;oBACApT,MAAMwS,aAAa9T,GAAG,CAAC,CAACyC,GAAGlC;wBACzB,MAAMlB,OAAO0U,YAAY,CAACxT,EAAE;wBAC5B,OAAO;4BACLkC,GAAGA,EAAGK,QAAQ;4BACdnB,GAAGtC;4BACH8U,kBAAkB/U,yBAAyBC,MAAMV;wBACnD;oBACF;oBACAyD,OAAO1F,CAAAA,2BAAAA,YAAAA,EAAI4X,WAAWF,IAAI,CAAC;wBAAE7H;oBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAA3C3X,yBAAAA,KAAAA,IAAAA,uBAAiD4X;oBACxDC,aAAa;wBACX,GAAIA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,cAAe,CAAC,CAAC;wBACrBC,MAAMrW,OAAOqW,IAAI;oBACnB;oBACAI,oBAAoB3T,oBAAoB9C,QAAQqY,eAAe/Y,MAAM;gBACvE;YACF;QACF;IACF;IAEA,MAAM2Q,cAAcF,8BAA8BsI,eAAe/Y,MAAM,EAAE+Y,eAAelV,IAAI,EAAE6M;QAKpFqI;IAHV,OAAO;QACLM,QAAQF;QACR/K,KAAK,EAAA,CAAE2K,yBAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uBAAuB3K,KAAK;QACnC+D,QAAQ4G,CAAAA,gCAAAA,CAAAA,0BAAAA,eAAe/Y,MAAAA,AAAM,MAAA,QAArB+Y,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAuB5G,MAAAA,AAAM,MAAA,QAA7B4G,kCAAAA,KAAAA,IAAAA,gCAAiC;QACzCZ,UAAU;QACVpB,MAAM;QACN,GAAG1B,oBAAoB;QACvBgD,iBAAiB;QACjBD,iBAAiB;QACjBxD;QACAG,cAAc;QACdwD,iBAAiB;QACjBG,cAAc;QACd,GAAGnX,iBAAiBwX,eAAelV,IAAI,CAAC,EAAE,EAAEkV,eAAe/Y,MAAM,CAAC;QAClE,GAAGD,UAAUgZ,eAAe/Y,MAAM,CAAC;QACnC,GAAG2Y,0BAA0BI,eAAelV,IAAI,EAAEkV,eAAe/Y,MAAM,CAAC;QACxE,GAAGmB,iBAAiB4X,eAAelV,IAAI,CAAC,EAAE,EAAEkV,eAAe/Y,MAAM,CAAC;QAClE,GAAGS,mBAAmBsY,eAAelV,IAAI,CAAC,EAAE,EAAEkV,eAAe/Y,MAAM,CAAC;QACpE,GAAGkB,eAAe;QAClB,GAAG0X,YAAYG,eAAelV,IAAI,EAAEkV,eAAe/Y,MAAM,CAAC;QAC1D,GAAG6Y,iBAAiBE,eAAelV,IAAI,EAAEkV,eAAe/Y,MAAM,CAAC;QAC/D,GAAI2Q,cAAc;YAAEA;QAAY,IAAI,CAAC,CAAC;IACxC;AACF,EAAE;AAEK,sCAAsC,CAC3CgB,OACAjB,aACA9L,UACAF,cACAG;QAsFS8M,eACCA,gBAGgB4H;IAxF1B,MAAMA,UAAuC,EAAE;IAC/C,MAAM,EAAEhF,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAe3D,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAE0Q;IACzE,IAAI6E,aAAsDjR;IAE1DqN,MAAM9N,IAAI,CAACG,OAAO,CAAC,CAACtD,QAA2B8Y;YAS3C7H,+BAAAA,wBAAAA,eAEAjR,gBAmBgCA,eAAqBA,gBAAmBA;QA7B1E,IAAI,CAACA,OAAOsE,CAAC,EAAE;YACb;QACF;QAEAuQ,iBAAavW,oCAAAA,EAAiB2S,MAAM3R,MAAM,EAAEU,QAAQ6U;QAEpD,2CAA2C;QAC3C,MAAMzQ,sBAAkBhG,gCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cAAAA,CACAhE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,EACpBC,UACAC;QAEF,MAAM9C,UAA+B,EAAE;QACvC,MAAMkC,UAAoB,EAAE;QAC5BvD,OAAOsE,CAAC,CAAChB,OAAO,CAAC,CAACyV,MAAM7W;gBACT6Q;YAAb,MAAM7R,OAAO6R,CAAAA,6BAAAA,0BAA0B/S,OAAOwD,CAAC,EAAEtB,MAAAA,MAAAA,QAApC6Q,+BAAAA,KAAAA,IAAAA,6BAA8C;YAC3D,QAAIrV,8BAAAA,EAAeqb,OAAO;gBACxB;YACF;YAEA1X,QAAQwL,IAAI,CAACkM;YACbxV,QAAQsJ,IAAI,CAAC3L;QACf;QAEA,MAAMsD,gBAAYhH,6BAAAA,EAAc6D;QAChC,kFAAkF;QAClF,sFAAsF;QACtF,MAAM2X,QAAQC,WAAW5X,SAAAA,CAASrB,gBAAAA,OAAOkZ,KAAAA,AAAK,MAAA,QAAZlZ,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAc8I,KAAK,EAAA,CAAE9I,iBAAAA,OAAOkZ,KAAAA,AAAK,MAAA,QAAZlZ,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAc+I,GAAG,EAAA,CAAE/I,iBAAAA,OAAOkZ,KAAAA,AAAK,MAAA,QAAZlZ,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcwO,IAAI;QAC5F,MAAM2K,QAAoBH,MAAMnX,GAAG,CAAC,IAAM,EAAE;QAC5C,IAAIuX,QAAQ;QAEZ/X,QAAQiC,OAAO,CAAC,CAACyV,MAAM7W;YACrB,MAAMmX,SAASC,aAAaN,OAAOD,MAAMvU;YACzC,IAAI6U,WAAW,CAAC,GAAG;gBACjBF,KAAK,CAACE,OAAO,CAACxM,IAAI,CAACtJ,OAAO,CAACrB,MAAM;YACnC;QACF;QAEA,MAAMsB,IAAI2V,MAAMtX,GAAG,CAACjG,CAAAA;YAClB,MAAMsF,OAAOqY,kBAAkBvZ,OAAOwZ,QAAQ,EAAE5d;YAChDwd,SAASlY;YACT,OAAOA;QACT;QAEA8X,MAAM1V,OAAO,CAAC,CAAC1H,KAAKsG;gBAKQlC,gBAC8BA,iBAA5CA,sBAAAA,iBAG+CiR,+BAAAA,wBAAAA;YAR3D,MAAMqC,SAAiBO,OAAO,CAACiF,UAAU;YACzC,+EAA+E;YAC/E,MAAM7U,QAAQ4Q,aACVA,eACEzX,mCAAAA,EAAAA,CAAoB4C,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,IAAA,CAClCjE,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,gBAAeiE,KAAAA,AAAK,MAAA,QAApBjE,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAkC,CAACkC,QAAQ,CAAA,CAAClC,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAAA,AAAK,EAAavD,MAAM,CAAC,GACtF,SAENrC,gCAAAA,EAAa+F,iBAAiBlC,OAAOoR,QAAQpP,UAAAA,CAAU+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,0BAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EAAEI;YACrG,MAAMiK,cAAUjQ,8BAAAA,EAAW6B,QAAQkC;YACnC,MAAMhB,OAAOuY,kBACXzZ,OAAO0Z,QAAQ,EACflW,CAAC,CAACtB,MAAM,EACRkX,OACA5U,YAAY5I,IAAI8E,MAAM,GAAGiZ,WAAW/d;gBAO7B2C;YAJTsa,QAAQhM,IAAI,CAAC;gBACXvI,GAAGE,YAAY5I,IAAIge,IAAI,CAAC,QAAQC,aAAaje;gBAC7C4H,GAAGtC;gBACHoS;gBACArP,OAAO1F,CAAAA,2BAAAA,YAAAA,EAAI0F,OAAOgS,IAAI,CAAC;oBAAE7H;gBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAAvC3X,yBAAAA,KAAAA,IAAAA,uBAA6C0F;gBACpD,GAAIO,YACA,CAAC,IACD;oBAAEsV,kBAAkB,CAAC,CAAC,EAAGle,IAA4Bqb,EAAE,CAAC,GAAG,EAAGrb,IAA4Bub,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;YACvG;QACF;IACF;IAEA,MAAMlH,cAAcF,8BAA8BkB,MAAM3R,MAAM,EAAE2R,MAAM9N,IAAI,EAAE6M;QAIlEiB;IAHV,OAAO;QACL9N,MAAM0V;QACNnL,KAAK,EAAA,CAAEuD,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChCoF,MAAM;QACNsB,iBAAiB;QACjBD,iBAAiB,OAAA,CAAA,CAAOmB,YAAAA,OAAO,CAAC,EAAA,AAAE,MAAA,QAAVA,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYvU,AAAC,MAAK;QAC1CyV,aAAa;QACb7F;QACAG,cAAc;QACdwD,iBAAiB;QACjBG,cAAc;QACd,GAAGnX,iBAAiBoQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAGD,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAGmB,iBAAiBwQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAG2Y,0BAA0BhH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QACtD,GAAI2Q,cAAc;YAAEA;QAAY,IAAI,CAAC,CAAC;IACxC;AACF,EAAE;AAEK,4CAA4C,CACjDgB,OACAjB,aACA9L,UACAF,cACAG;IAEA,OAAO8V,uCACLhJ,OACAjB,aACA,QACA9L,UACAF,cACAG;AAEJ,EAAE;AAEK,4CAA4C,CACjD8M,OACAjB,aACA9L,UACAF,cACAG;IAEA,OAAO8V,uCACLhJ,OACAjB,aACA,QACA9L,UACAF,cACAG;AAEJ,EAAE;AAEK,+CAA+C,CACpD8M,OACAjB,aACA9L,UACAF,cACAG;IAEA,OAAO8V,uCACLhJ,OACAjB,aACA,WACA9L,UACAF,cACAG;AAEJ,EAAE;AAEF,MAAMiW,mBAAmB,CAAC9a;IACxB,IAAI,CAACmC,MAAMC,OAAO,CAACpC,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQqX,MAAM,GAAG;QAClC,OAAO,EAAE;IACX;IAEA,OAAOrX,OAAOqX,MAAM,CACjBxU,MAAM,CAAC,CAACyU,QAA0BA,MAAMlT,IAAI,KAAK,QACjD7B,GAAG,CAAC,CAAC+U;QACJ,0DAA0D;QAC1D,IAAI,OAAOA,MAAMK,EAAE,KAAK,YAAY,OAAOL,MAAMO,EAAE,KAAK,UAAU;YAChE,OAAO;QACT;QACA,OAAO;YACLlT,OAAO2S,MAAMyD,SAAS;YACtBlX,MAAM;gBAAC;oBAAEmX,QAAQ1D,MAAMK,EAAE;oBAAEsD,MAAM3D,MAAMO,EAAE;gBAAC;aAAE;YAC5CqD,cAAc;QAChB;IACF;AACJ;AAEA,MAAMP,yCAAyC,CAC7ChJ,OACAjB,aACAyK,WACAvW,UACAF,cACAG;QAWY8M,cAgGM+C,mBAAAA,aACAA,oBAAAA,cACAA,oBAAAA,cACAA,oBAAAA,cAE2C/C,eA4EpDA,gBACCA;IA3LV,MAAMyJ,mBAAmB;QACvB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAAClV,QAAQ,CAAA,CAAEyL,eAAAA,MAAM9N,IAAI,CAAC,EAAA,AAAE,MAAA,QAAb8N,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAA4BoF,IAAI;IAC5C,MAAMsE,cAAcF,cAAc;IAClC,MAAMG,iBAAiBH,cAAc;IACrC,MAAM9F,uBAAuBzR,wBAAwB+N,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM;IAC7E,IAAI+W,OAAe;IACnB,MAAM,EAAExC,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAe3D,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAE0Q;IACzE,MAAMxP,kBAAkBH,mBAAmB4Q,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM;IACtE,MAAMub,YAAY7F,YAAY/D,MAAM9N,IAAI,EAAE8R,eAAehE,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAEgF,CAAC;IACpF,MAAMwQ,gBAAgBC,qBAAqB8F;IAC3C,MAAMC,mBAAmBD,cAAc;IACvC,MAAM7G,YAA+B/C,MAAM9N,IAAI,CAC5CtB,GAAG,CAAC,CAAC7B,QAA2BkC;YAE3BlC,cACEA,cACAA,gBACFA,eAGFiR,+BAAAA,wBAAAA,eAcAA,gCAAAA,yBAAAA,gBAOCjR;QA5BH,MAAMoS,SAASsI,mBACX1a,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,OAAQqW,IAAAA,AAAI,MAAA,QAAZrW,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAcwF,QAAQ,CAAC,OAAA,IAAA,CACrBxF,eAAAA,OAAOqV,IAAI,AAAJA,MAAI,QAAXrV,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaiE,KAAK,GAAA,CAClBjE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,GACtBjE,AADsB,iBACtBA,OAAOqV,IAAAA,AAAI,MAAA,QAAXrV,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAaiE,KAAK;QACtB,2CAA2C;QAC3C,MAAMG,kBAAkBhG,oCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cACAoO,QACAlO,UACAC;QAEF,MAAM9C,UAAUrB,OAAOsE,CAAC;QACxB,MAAMgP,SAAiBO,OAAO,CAAC3R,MAAM;QACrC,kEAAkE;QAClE,MAAM6Y,kBAAc1c,gCAAAA,EAClB+F,iBACAlC,OACAoR,QACApP,UAAAA,CACA+M,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCI;QAEF,MAAM6W,oBAAgB7c,8BAAAA,EAAW6B,QAAQkC;QACzCmU,OAAOrW,OAAOib,IAAI,KAAK,YAAY,YAAY;QAC/C,gFAAgF;QAChF,MAAM7E,cACJ,CAAA,CAAA,CAACpW,gBAAAA,OAAOqW,IAAAA,AAAI,MAAA,QAAXrW,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAawF,QAAQ,CAAC,OAAA,KAAWxF,OAAO0D,IAAI,KAAK,iBAAiB4S,eAAetW,OAAOqV,IAAI,IAAIzR;QACnG,MAAM2S,cAAcC,eAAexW;QAEnC,MAAMsV,gBAAgBC,iBAAiBvV,QAAQ8U;QAC/C,OAAOQ,cAAczT,GAAG,CAAC,CAAC,CAAC2T,YAAYC,SAAS,EAAEC;gBAGR1V,gBAGCA,iBAEvBA,iBA4BQiR,eACLA,iCAAAA,qBAAAA,gBACDA,kCAAAA,sBAAAA;YArCpB,MAAM0E,eAAetU,QAAQgI,KAAK,CAACmM,YAAYC;YAC/C,MAAMG,eAAe5V,OAAOwD,CAAC,CAAE6F,KAAK,CAACmM,YAAYC;YACjD,MAAMyF,kBAAc9d,mCAAAA,EAAAA,CAAoB4C,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAewO,IAAI,IACtDxO,OAAOuS,MAAM,CAAE/D,IAAI,CAAcnF,KAAK,CAACmM,YAAYC,YACpD,EAAE;YACN,MAAM9C,mBAAevV,mCAAAA,EAAAA,CAAoB4C,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAK,IACxDjE,OAAOuS,MAAM,CAAEtO,KAAK,CAAcoF,KAAK,CAACmM,YAAYC,YACrDhU,MAAMC,OAAO,CAAA,CAAC1B,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAK,IACjCjE,OAAOuS,MAAM,CAAEtO,KAAK,CAAcoF,KAAK,CAACmM,YAAYC,YACrD7R;YACJ,MAAMuX,aAAa1Z,MAAMC,OAAO,CAAC1B,OAAON,IAAI,IAAIM,OAAON,IAAI,CAAC2J,KAAK,CAACmM,YAAYC,YAAY7R;gBAiBjFrF;YAfT,OAAO;gBACL+U;gBACAiD;gBACApT,MAAMwS,aAAa9T,GAAG,CAAC,CAACyC,GAAGlC;wBAGPpC,gBAEPA;2BAL6B;wBACxCsE,GAAGwQ,cAAcxQ;wBACjBd,GAAGoS,YAAY,CAACxT,EAAE;wBAClB,GAAIX,MAAMC,OAAO,CAAA,CAAC1B,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAewO,IAAI,IACjC;4BAAE4M,YAAYF,WAAW,CAAC9Y,EAAE;wBAAC,IAC7B,OAAA,CAAA,CAAOpC,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAewO,IAAAA,AAAI,MAAK,WAC/B;4BAAE4M,YAAYpb,OAAOuS,MAAM,CAAC/D,IAAI;wBAAC,IACjC,CAAC,CAAC;wBACN,GAAImE,eAAe;4BAAE0I,aAAa1I,YAAY,CAACvQ,EAAE;wBAAC,IAAI,CAAC,CAAC;wBACxD,GAAI+Y,aAAa;4BAAEzb,MAAMyb,UAAU,CAAC/Y,EAAE;wBAAC,IAAI,CAAC,CAAC;wBAC7C4T,kBAAkB/U,yBAAyB2U,YAAY,CAACxT,EAAE,EAAY5B;oBACxE;;gBACAyD,OAAO1F,CAAAA,2BAAAA,YAAAA,EAAIwc,aAAa9E,IAAI,CAAC;oBAAE7H,SAAS4M;gBAAc,GAAG9E,UAAU,EAAA,MAAA,QAA5D3X,yBAAAA,KAAAA,IAAAA,uBAAkEwc;gBACzE3E,aAAa;oBACX,GAAIA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,cAAe,CAAC,CAAC;oBACrBC,MAAMrW,OAAO0D,IAAI,KAAK,iBAAiB1D,OAAOqW,IAAI,GAAG;oBACrD,sGAAsG;oBACtG,sDAAsD;oBACtD,GAAIrW,OAAO0D,IAAI,KAAK,iBAChB;wBACE4X,aAAa,EAAA,CAAGrK,gBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAA0DsK,cAAc;wBACxFC,SAAS,EAAA,CAAEvK,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAcwK,KAAAA,AAAK,MAAA,QAAnBxK,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kCAAAA,oBAAqByK,WAAAA,AAAW,MAAA,QAAhCzK,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gCAAkCuK,SAAS;wBACtD3M,QAAQ,EAAA,CAAEoC,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAcwK,KAAAA,AAAK,MAAA,QAAnBxK,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,mCAAAA,qBAAqByK,WAAW,AAAXA,MAAW,QAAhCzK,qCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iCAAkCpC,QAAQ;wBACpD8M,WAAY3b,OAAqC4b,WAAW,GACvD5b,OAAqC4b,WAAW,GACjD,CAAC;wBACLX,MAAMjb,OAAOib,IAAI;oBACnB,IACA,CAAC,CAAC;gBACR;gBACAxE,oBAAoB3T,oBAAoB9C,QAAQiR,MAAM3R,MAAM;YAC9D;QACF;IACF,GACC6F,IAAI;IAEP,MAAMrE,YAAAA,CAAYkT,cAAAA,SAAS,CAAC,EAAE,AAAF,MAAE,QAAZA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,oBAAAA,YAAc7Q,IAAI,CAAC,EAAA,AAAE,MAAA,QAArB6Q,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAuB1P,CAAC;IAC1C,MAAMvD,YAAAA,CAAYiT,eAAAA,SAAS,CAAC,EAAA,AAAE,MAAA,QAAZA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,qBAAAA,aAAc7Q,IAAI,CAAC6Q,SAAS,CAAC,EAAE,CAAC7Q,IAAI,CAACzC,MAAM,GAAG,EAAA,AAAE,MAAA,QAAhDsT,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAkD1P,CAAC;IACrE,MAAM3D,YAAAA,CAAYqT,eAAAA,SAAS,CAAC,EAAA,AAAE,MAAA,QAAZA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,qBAAAA,aAAc7Q,IAAI,CAAC,EAAA,AAAE,MAAA,QAArB6Q,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAuBxQ,CAAC;IAC1C,MAAM5C,YAAAA,CAAYoT,eAAAA,SAAS,CAAC,EAAA,AAAE,MAAA,QAAZA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAAA,aAAc7Q,IAAI,CAAC6Q,SAAS,CAAC,EAAE,CAAC7Q,IAAI,CAACzC,MAAM,GAAG,EAAA,AAAE,MAAA,QAAhDsT,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAkDxQ,CAAC;IACrE,MAAMkT,cAAc7R,mBAAmBoM,MAAM9N,IAAI;QACY8N;IAA7D,MAAM4K,YAAuD5K,CAAAA,CAAAA,uBAAAA,CAAAA,gBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAc0F,MAAAA,AAAM,MAAA,QAApB1F,yBAAAA,KAAAA,IAAAA,uBAAwB,EAAA,AAAC,EACnF9O,MAAM,CAACyU,CAAAA,QAASA,MAAMlT,IAAI,KAAK,QAC/B7B,GAAG,CAAC,CAAC+U,OAAOC;YACOD;QAAlB,MAAMT,YAAAA,CAAYS,cAAAA,MAAMvB,IAAAA,AAAI,MAAA,QAAVuB,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY3S,KAAK;QACnC,MAAM6S,WAAW,CAACC;YAChB,IAAI,OAAOA,QAAQ,YAAYtV,MAAMC,OAAO,CAACgV,cAAc;gBACzD,IAAIA,WAAW,CAACK,IAAI,KAAKnT,WAAW;oBAClC,OAAO8S,WAAW,CAACK,IAAI;gBACzB,OAAO;oBACL,OAAOL,WAAW,CAACG,SAAS;gBAC9B;YACF;YACA,IAAID,MAAMvM,IAAI,KAAK,SAAS;gBAC1B,IAAI0M,QAAQ,GAAG;oBACb,OAAOjW;gBACT;gBACA,IAAIiW,QAAQ,GAAG;oBACb,OAAOhW;gBACT;gBACA,IAAI,OAAOgW,QAAQ,YAAY,OAAOjW,cAAc,YAAY,OAAOC,cAAc,UAAU;oBAC7F,OAAOD,YAAYiW,MAAOhW,aAAYD,SAAAA,CAAQ;gBAChD;gBACA,OAAOiW;YACT;YACA,OAAOA;QACT;QAEA,MAAMK,WAAW,CAACL;YAChB,IAAIH,MAAMrM,IAAI,KAAK,SAAS;gBAC1B,IAAIwM,QAAQ,GAAG;oBACb,OAAOpW;gBACT;gBACA,IAAIoW,QAAQ,GAAG;oBACb,OAAOnW;gBACT;gBACA,IAAI,OAAOmW,QAAQ,UAAU;oBAC3B,OAAOpW,YAAYoW,MAAOnW,CAAAA,YAAYD,SAAAA,CAAQ;gBAChD;gBACA,OAAOoW;YACT;YACA,OAAOA;QACT;YAQSxY;QANT,OAAO;YACL+U,QAAQ,CAAC,UAAU,EAAEuD,UAAU;YAC/B1T,MAAM;gBACJ;oBAAEmB,GAAGwQ,cAAcgC,SAASF,MAAMK,EAAE;oBAAKzT,GAAG4T,SAASR,MAAMU,EAAE;gBAAG;gBAChE;oBAAEhT,GAAGwQ,cAAcgC,SAASF,MAAMO,EAAE;oBAAK3T,GAAG4T,SAASR,MAAMY,EAAE;gBAAG;aACjE;YACDvT,OAAO1F,CAAAA,sBAAAA,YAAAA,EAAI4X,WAAYD,UAAU,EAAA,MAAA,QAA1B3X,oBAAAA,KAAAA,IAAAA,kBAAgC4X;YACvCC,aAAaE,eAAeM,MAAMvB,IAAI;YACtCoB,oBAAoB;QACtB;IACF;IAEF,MAAMqF,UAAUrb,iBAAiBwQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM;IAC5D,IAAIwc,QAAQnb,SAAS,KAAKiD,aAAakY,QAAQlb,SAAS,KAAKgD,WAAW;QACtE,MAAMmY,gBAAgBhf,mCAAAA,EAAqBiX;QAC3C8H,QAAQnb,SAAS,GAAGob,cAAcC,UAAU;QAC5CF,QAAQlb,SAAS,GAAGmb,cAAcE,QAAQ;IAC5C;IACA,MAAMC,gBAAgBlI,UAAU/G,MAAM,CAAC,CAACmM,OAAO+C,kBAAoB/C,QAAQ+C,gBAAgBhZ,IAAI,CAACzC,MAAM,EAAE;IAExG,MAAM0b,aAAyB;QAC7BC,eAAe;eAAIrI;eAAe6H;SAAgC;IACpE;IAEA,MAAMS,oBAAgC;QACpCC,kBAAkB;eAAIvI;eAAe6H;SAAmC;IAC1E;IAEA,MAAM5L,cAAcF,8BAA8BkB,MAAM3R,MAAM,EAAE2R,MAAM9N,IAAI,EAAE6M;QAMlEiB;IAJV,MAAMuL,cAAc;QAClBC,qBAAqB;QACrB,GAAG9H,oBAAoB;QACvBjH,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC0G,iBAAiB;QACjBzD;QACAwI,QAAQ;QACRC,iBAAiB7B;QACjB8B,mBAAmBV,gBAAgB;QACnCrE,iBAAiB;QACjBG,cAAc;QACd,GAAGnX,iBAAiBoQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAGD,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAGS,mBAAmBkR,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAGqc,sBAAsB5L,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QAClD,GAAG6Y,iBAAiBlH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QAC7C,GAAI2Q,cAAc;YAAEA;QAAY,IAAI,CAAC,CAAC;IACxC;IAEA,IAAI0K,aAAa;QACf,OAAO;YACLxX,MAAMiZ;YACN/F;YACA,GAAGmG,WAAW;QAChB;IACF,OAAO;QACL,OAAO;YACLrZ,MAAMyX,iBAAiB0B,oBAAoBF;YAC3C,GAAGI,WAAW;YACd,GAAGV,OAAO;YACV,GAAIlB,iBACA;gBACE7C,wBAAwB;gBACxB,GAAGE,0BAA0BhH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;YACxD,IACA,CAAC,CAAC;YACN,GAAI,CAACsb,kBACF,CAAA;gBACC,MAAMkC,OAAO1C,iBAAiBnJ,MAAM3R,MAAM;gBAC1C,OAAOwd,QAAQ,CAACA,KAAKtX,QAAQ,CAAC,QAAQ;oBAAEuX,eAAeD;gBAAK,IAAI,CAAC;aACnE,CAAA,EAAI;QACR;IACF;AACF;AAEO,wDAAwD,CAC7D7L,OACAjB,aACA9L,UACAF,cACAG;QA2C4B8M,eACLA,sBAAAA,gBACCA,uBAAAA,gBAUbA,sBAAAA,gBACHA,uBAAAA,gBACAA,4BAAAA,uBAAAA,gBAICA;IA3DT,MAAM,EAAE4C,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAe3D,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAE0Q;IACzE,IAAI6E,aAAsDjR;IAC1D,MAAMoQ,YAAmD/C,MAAM9N,IAAI,CAChEtB,GAAG,CAAC,CAAC7B,QAA2BkC;YAI7B+O,+BAAAA,wBAAAA,eAEAjR;QALF6U,iBAAavW,oCAAAA,EAAiB2S,MAAM3R,MAAM,EAAEU,QAAQ6U;QACpD,2CAA2C;QAC3C,MAAMzQ,kBAAkBhG,oCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cAAAA,CACAhE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,EACpBC,UACAC;QAEF,MAAMmP,SAASO,OAAO,CAAC3R,MAAM;QAC7B,OAAQlC,OAAOwD,CAAC,CACb3B,GAAG,CAAC,CAAC+I,QAAQxI;gBAQcpC,gBAC0BA,iBAAxCA,sBAAAA,iBAG2CiR,+BAAAA,wBAAAA,eAInCjR;YAfpB,QAAItC,8BAAAA,EAAekN,SAAS;gBAC1B,OAAO;YACT;YAEA,+EAA+E;YAC/E,MAAM3G,QAAQ4Q,aACVA,eACEzX,mCAAAA,EAAAA,CAAoB4C,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,IAAA,CAClCjE,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,gBAAeiE,KAAAA,AAAK,MAAA,QAApBjE,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAkC,CAACoC,IAAI,CAAA,CAACpC,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAK,AAALA,EAAkBvD,MAAM,CAAC,GAClF,SAENrC,gCAAAA,EAAa+F,iBAAiBhC,GAAGkR,QAAQpP,UAAAA,CAAU+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EAAEI;YACjG,MAAMiK,UAAUjQ,kCAAAA,EAAW6B,QAAQoC;gBAM1B7D;YAJT,OAAO;gBACL+F,OAAG5G,8BAAAA,EAAAA,CAAesC,YAAAA,QAAQ,AAADsE,MAAC,QAARtE,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAACoC,EAAE,IAAI,IAAIpC,OAAOsE,CAAE,CAAClC,EAAE;gBACnDoB,GAAGoH;gBACH0I;gBACArP,OAAO1F,CAAAA,2BAAAA,YAAAA,EAAI0F,OAAOgS,IAAI,CAAC;oBAAE7H;gBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAAvC3X,yBAAAA,KAAAA,IAAAA,uBAA6C0F;YACtD;QACF,GACC9B,MAAM,CAAC8a,CAAAA,QAASA,UAAU;IAC/B,GACC9X,IAAI;QAEqB8L;IAA5B,MAAMiM,cAAsBjM,CAAAA,uBAAAA,CAAAA,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcQ,MAAM,AAANA,MAAM,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAC7BA;IAAvB,MAAMgB,SAAiBhB,CAAAA,yBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAcgB,MAAAA,AAAM,MAAA,QAApBhB,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAsBkM,AAAC,MAAA,QAAvBlM,2BAAAA,KAAAA,IAAAA,yBAA2B;QAC1BA;IAAxB,MAAM9C,UAAkB8C,CAAAA,2BAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAcgB,MAAAA,AAAM,MAAA,QAApBhB,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAsBmM,GAAAA,AAAG,MAAA,QAAzBnM,6BAAAA,KAAAA,IAAAA,2BAA6B;IACrD,MAAMoM,kBAA0BH,cAAcjL,SAAS9D;IACvD,MAAMmP,eAAe,IAAIvY,IAAIiP,UAAUnS,GAAG,CAAC0b,CAAAA,IAAKA,EAAE/Z,CAAC,GAAGgL,IAAI,IAAI;IAC9D,MAAMgP,gBAAgB;IACtB,MAAMC,YAAY,IAAK,CAAA,IAAID,gBAAgBF,YAAAA,CAAW;IACtD,MAAMI,YAAYL,kBAAmBC,CAAAA,eAAgB,CAAA,IAAIG,SAAAA,CAAQ,CAAC;IAElE,OAAO;QACLta,MAAM6Q;QACNrQ,qBACE,OAAA,CAAA,CAAOsN,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAclO,MAAAA,AAAM,MAAA,QAApBkO,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAsBxR,KAAK,AAALA,MAAU,WAAA,AACnCwR,kBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAclO,MAAAA,AAAM,MAAA,QAApBkO,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAsBxR,KAAK,GAC3BwR,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAclO,MAAAA,AAAM,MAAA,QAApBkO,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,6BAAAA,sBAAsBxR,KAAAA,AAAK,MAAA,QAA3BwR,+BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAA6BvR,IAAAA,AAAI,KAAI;QAC3Cge;QACA7F,iBAAiB;QACjBpG,QAAQyL;QACRxP,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1BiK,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxB7D;QACAG,cAAc;QACd2D,cAAc;QACd,GAAGnX,iBAAiBoQ,MAAM9N,IAAI,CAAC,EAAE,EAAE8N,MAAM3R,MAAM,CAAC;QAChD,GAAGD,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAG2Y,0BAA0BhH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;QACtD,GAAG4Y,YAAYjH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,EAAE,KAAK;QAC9C,GAAG6Y,iBAAiBlH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;IAC/C;AACF,EAAE;AAEK,6CAA6C,CAClD2R,OACAjB,aACA9L,UACAF,cACAG;QAiFU8M,eACDA;IAhFT,MAAM9N,OAAO8N,MAAM9N,IAAI,CAAChB,MAAM,CAAC,CAACnC,SAA8BA,OAAO0D,IAAI,KAAK,aAAa1D,OAAOqW,IAAI,KAAK;IAC3G,MAAM,EAAExC,OAAO,EAAEK,UAAU,EAAE,GAAGU,eAAezR,MAAM8N,MAAM3R,MAAM,EAAE0Q;IACnE,IAAI6E,aAAsDjR;IAC1D,MAAMiX,YAAY7F,YAAY7R,MAAM8R,eAAe9R,MAAM8N,MAAM3R,MAAM,EAAEgF,CAAC;IACxE,MAAMwQ,gBAAgBC,qBAAqB8F,WAAW+C;IACtD,MAAMC,qBAAqB,CAACxX;QAC1B,MAAMyX,gBAAgBhJ,cAAczO;QACpC,OAAO,OAAOyX,kBAAkB,WAAW,IAAIA,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,gBAAiB;IAClE;IACA,MAAMrZ,UAAUoW,cAAc;IAC9B,MAAMkD,YAAmC,EAAE;IAC3C5a,KAAKG,OAAO,CAAC,CAACtD,QAA2BkC;QACvC,MAAMoR,SAASO,OAAO,CAAC3R,MAAM;QAE7B,IAAIlC,OAAO0D,IAAI,KAAK,OAAO;gBAKvBuN,+BAAAA,wBAAAA,eAEAjR;YANF6U,aAAavW,wCAAAA,EAAiB2S,MAAM3R,MAAM,EAAEU,QAAQ6U;YAEpD,2CAA2C;YAC3C,MAAMzQ,sBAAkBhG,gCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cAAAA,CACAhE,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,EACpBC,UACAC;YAGDnE,OAAOwD,CAAC,CAAaF,OAAO,CAAC,CAACpC,MAAMkB;oBAOTpC,gBAC0BA,iBAAxCA,sBAAAA,iBAG2CiR,+BAAAA,wBAAAA,eAEtBjR,cACAA;gBAbjC,IAAItC,kCAAAA,EAAewD,OAAO;oBACxB;gBACF;gBACA,+EAA+E;gBAC/E,MAAM+C,QAAQ4Q,aACVA,eACEzX,mCAAAA,EAAAA,CAAoB4C,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeiE,KAAK,IAAA,CAClCjE,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAAA,gBAAeiE,KAAAA,AAAK,MAAA,QAApBjE,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAkC,CAACoC,IAAI,CAAA,CAACpC,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAAA,AAAK,EAAavD,MAAM,CAAC,GAClF,SAENrC,gCAAAA,EAAa+F,iBAAiBhC,GAAGkR,QAAQpP,UAAAA,CAAU+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EAAEI;gBACjG,MAAMiK,cAAUjQ,8BAAAA,EAAW6B,QAAQoC;gBACnC,MAAM4b,OAAO,CAACH,mBAAAA,CAAmB7d,eAAAA,OAAOge,IAAI,AAAJA,MAAI,QAAXhe,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,CAACoC,EAAE;gBACjD,MAAM2W,OAAO,CAAC8E,mBAAAA,CAAmB7d,YAAAA,QAAOsE,AAAC,MAAA,QAARtE,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAACoC,EAAE;oBASrC7D;gBAPTwf,UAAUlR,IAAI,CAAC;oBACbvI,GAAG;wBACDwE,OAAOrE,UAAU,IAAIlD,KAAKyc,QAAQA;wBAClCjV,KAAKtE,UAAU,IAAIlD,KAAKyc,OAAOjF,QAAQiF,OAAOjF;oBAChD;oBACAvV,GAAGtC;oBACHoS;oBACArP,OAAO1F,CAAAA,uBAAAA,gBAAAA,EAAI0F,OAAOgS,IAAI,CAAC;wBAAE7H;oBAAQ,GAAG8H,UAAU,EAAA,MAAA,QAAvC3X,yBAAAA,KAAAA,IAAAA,uBAA6C0F;gBACtD;YACF;QACF,OAAO,IAAIjE,OAAO0D,IAAI,KAAK,aAAa1D,OAAOqW,IAAI,KAAK,UAAUrW,OAAOib,IAAI,KAAK,UAAU;YAC1F,IAAK,IAAI7Y,IAAI,GAAGA,IAAIpC,OAAOwD,CAAC,CAAE9C,MAAM,EAAE0B,KAAK,EAAG;gBAC5C,QAAI1E,8BAAAA,EAAesC,OAAOwD,CAAE,CAACpB,EAAE,SAAK1E,8BAAAA,EAAesC,OAAOwD,CAAE,CAACpB,IAAI,EAAE,GAAG;oBACpE;gBACF;gBAEA,MAAM6U,KAAK4G,mBAAmB7d,OAAOsE,CAAE,CAAClC,EAAE;gBAC1C,MAAM+U,KAAK0G,mBAAmB7d,OAAOsE,CAAE,CAAClC,IAAI,EAAE;gBAC9C,MAAMkV,KAAKtX,OAAOwD,CAAE,CAACpB,EAAE;gBACvB,MAAMoV,KAAKxX,OAAOwD,CAAE,CAACpB,IAAI,EAAE;gBAE3B2b,UAAUlR,IAAI,CAAC;oBACbvI,GAAG;wBACDwE,OAAOmO;wBACPlO,KAAKoO;oBACP;oBACA3T,GAAGC,KAAKwa,KAAK,CAAE3G,CAAAA,KAAKE,EAAAA,CAAC,GAAK;oBAC1BlE;oBACArP,OAAOjE,OAAOqa,SAAS;gBACzB;YACF;QACF;IACF;QAKUpJ;IAHV,OAAO;QACL9N,MAAM4a;QACNlG,iBAAiB;QACjBpG,QAAQR,CAAAA,uBAAAA,CAAAA,gBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChCvD,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1BiK,iBAAiB;QACjBzD;QACA4D,qBAAqB;QACrBC,wBAAwB;QACxB1D,cAAc;QACdqI,QAAQ;QACR,GAAGrd,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAG2Y,0BAA0B9U,MAAM8N,MAAM3R,MAAM,CAAC;QAChD,GAAG4Y,YAAY/U,MAAM8N,MAAM3R,MAAM,EAAE,KAAK;QACxC,GAAG6Y,iBAAiBhV,MAAM8N,MAAM3R,MAAM,CAAC;IACzC;AACF,EAAE;AAEK,0CAA0C,CAC/C2R,OACAjB,aACA9L,UACAF,cACAG;QA0GE8M,eACAA,yBAAAA,gBACAA,+BAAAA,wBAAAA,gBACqCA,0CAAAA,yCAAAA,6BAAAA,yBAAAA,gBACrCA,sCAAAA,qCAAAA,8BAAAA,yBAAAA,gBAoCOA,gBACCA;IAjJV,MAAMkB,YAAYlB,MAAM9N,IAAI,CAAC,EAAE;IAC/B,MAAMgb,oBAA6C,EAAE;IACrD,IAAIC,OAAOzX,OAAO0X,iBAAiB;IACnC,IAAIC,OAAO3X,OAAO4X,iBAAiB;IAEnC,IAAIpM,UAAUzO,IAAI,KAAK,eAAe;YAIpCyO,cAakCA,kBAAwBA,mBAAsBA,mBAC9CA,kBAAwBA,mBAAsBA;QAjBhF,MAAM9Q,UAA+B,EAAE;QACvC,MAAMkC,UAA+B,EAAE;QACvC,MAAMib,UAAoB,EAAE;SAC5BrM,eAAAA,WAAU7N,AAAC,MAAA,QAAX6N,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAa7O,OAAO,CAAC,CAACyV,MAAM7W;gBAEiBiQ;gBAD9BY;YAAb,MAAM0L,OAAO1L,CAAAA,6BAAAA,0BAA0BZ,UAAUuM,CAAC,EAAExc,MAAAA,MAAAA,QAAvC6Q,+BAAAA,KAAAA,IAAAA,6BAAiD;YAC9D,QAAIrV,8BAAAA,EAAeqb,aAASrb,8BAAAA,EAAAA,CAAeyU,eAAAA,WAAU3O,AAAC,MAAA,QAAX2O,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,CAACjQ,MAAM,GAAG;gBAChE;YACF;YAEAb,QAAQwL,IAAI,CAACkM;YACbxV,QAAQsJ,IAAI,CAACsF,UAAU3O,CAAE,CAACtB,MAAM;YAChCsc,QAAQ3R,IAAI,CAAC4R;QACf;QAEA,MAAMja,gBAAYhH,6BAAAA,EAAc6D;QAChC,MAAMsd,gBAAYnhB,6BAAAA,EAAc+F;QAChC,MAAMyV,QAAQC,WAAW5X,SAAAA,CAAS8Q,mBAAAA,UAAU+G,KAAAA,AAAK,MAAA,QAAf/G,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBrJ,KAAK,EAAA,CAAEqJ,oBAAAA,UAAU+G,KAAAA,AAAK,MAAA,QAAf/G,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBpJ,GAAG,EAAA,CAAEoJ,oBAAAA,UAAU+G,KAAAA,AAAK,MAAA,QAAf/G,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiB3D,IAAI;QACrG,MAAM2K,QAAQF,WAAW1V,SAAAA,CAAS4O,mBAAAA,UAAUyM,KAAAA,AAAK,MAAA,QAAfzM,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBrJ,KAAK,EAAA,CAAEqJ,oBAAAA,UAAUyM,KAAAA,AAAK,MAAA,QAAfzM,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBpJ,GAAG,EAAA,CAAEoJ,oBAAAA,UAAUyM,KAAAA,AAAK,MAAA,QAAfzM,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiB3D,IAAI;QACrG,MAAMqQ,QAAsB1F,MAAMtX,GAAG,CAAC,IAAMmX,MAAMnX,GAAG,CAAC,IAAM,EAAE;QAC9D,IAAIuX,QAAQ;QAEZ/X,QAAQiC,OAAO,CAAC,CAACyV,MAAM7W;YACrB,MAAM4c,UAAUxF,aAAaN,OAAOD,MAAMvU;YAC1C,MAAMua,UAAUzF,aAAaH,OAAO5V,OAAO,CAACrB,MAAM,EAAEyc;YAEpD,IAAIG,YAAY,CAAC,KAAKC,YAAY,CAAC,GAAG;gBACpCF,KAAK,CAACE,QAAQ,CAACD,QAAQ,CAACjS,IAAI,CAAC2R,OAAO,CAACtc,MAAM;YAC7C;QACF;QAEA,MAAMwc,IAAIG,MAAMhd,GAAG,CAACmd,CAAAA;YAClB,OAAOA,IAAInd,GAAG,CAACjG,CAAAA;gBACb,MAAM6iB,OAAOlF,kBAAkBpH,UAAUqH,QAAQ,EAAE5d;gBACnDwd,SAASqF;gBACT,OAAOA;YACT;QACF;QAEAzF,MAAM1V,OAAO,CAAC,CAAC2b,MAAMC;YACnB/F,MAAM7V,OAAO,CAAC,CAAC6b,MAAMC;gBACnB,MAAMX,OAAOhF,kBACXtH,UAAUuH,QAAQ,EAClBgF,CAAC,CAACU,KAAK,CAACF,KAAK,EACb9F,OACA5U,YAAYya,KAAKve,MAAM,GAAGiZ,WAAWsF,OACrCN,YAAYQ,KAAKze,MAAM,GAAGiZ,WAAWwF;gBAGvChB,kBAAkBtR,IAAI,CAAC;oBACrBvI,GAAGE,YAAYya,KAAKrF,IAAI,CAAC,QAAQC,aAAaoF;oBAC9Czb,GAAGmb,YAAYQ,KAAKvF,IAAI,CAAC,QAAQC,aAAasF;oBAC9C9Y,OAAOoY;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BL,OAAO3a,KAAKvH,GAAG,CAACkiB,MAAMK;oBACtBH,OAAO7a,KAAKrH,GAAG,CAACkiB,MAAMG;gBACxB;YACF;QACF;IACF,OAAO;YACJtM;SAAAA,gBAAAA,WAAW,AAAD7N,MAAC,QAAX6N,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAyB7O,OAAO,CAAC,CAACyV,MAAMmG;gBACvC,AACA/M,8DAD8D;aAC9DA,eAAAA,WAAU3O,AAAC,MAAA,QAAX2O,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAa7O,OAAO,CAAC,CAACpC,MAAWke;oBAClB,mBAACjN,cAGTlB,qBAAAA,eACAA,qBAAAA;gBAJL,MAAMwN,OAAAA,AAAQtM,gBAAAA,UAAUuM,CAAC,MAAA,QAAXvM,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAD,oBAACA,YAA4B,CAACiN,KAAAA,AAAK,MAAA,QAAnC,sBAAA,KAAA,IAAA,KAAA,IAAA,iBAAqC,CAACF,KAAK;gBAExDf,kBAAkBtR,IAAI,CAAC;oBACrBvI,GAAG2M,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,cAAcrR,KAAAA,AAAK,MAAA,QAAnBqR,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAqBvN,IAAAA,AAAI,MAAK,SAAUqV,OAAgBA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ;oBACnEvV,GAAGyN,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAcnR,KAAAA,AAAK,MAAA,QAAnBmR,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAqBvN,IAAAA,AAAI,MAAK,SAAUxC,OAAgBA;oBAC3DmF,OAAOoY;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BL,OAAO3a,KAAKvH,GAAG,CAACkiB,MAAMK;oBACtBH,OAAO7a,KAAKrH,GAAG,CAACkiB,MAAMG;gBACxB;YACF;QACF;IACF;QAGUtM;IADV,MAAMmN,cAAgC;QACpChM,QAAQnB,CAAAA,kBAAAA,UAAUpB,IAAAA,AAAI,MAAA,QAAdoB,oBAAAA,KAAAA,IAAAA,kBAAkB;QAC1BhP,MAAMgb;QACN9X,OAAO;IACT;IAEA,gDAAgD;IAChD,MAAMkZ,gBAAgB;QAACnB;SAAOE,OAAOF,IAAAA,CAAG,GAAK;QAAGE;KAAK;IACrD,MAAMkB,eAAe;YACnB3iB,yBAAAA,EAAkBD,sBAAAA,CAAe6iB,MAAM;YACvC5iB,yBAAAA,EAAkBD,sBAAAA,CAAe8iB,MAAM;YACvC7iB,yBAAAA,EAAkBD,sBAAAA,CAAe+iB,MAAM;KACxC;QAGCxN,uBAAAA,MAAAA,OAAAA,OAAAA;IADF,IAAIyN,aACFzN,SAAAA,CAAAA,QAAAA,CAAAA,QAAAA,CAAAA,OAAAA,CAAAA,wBAAAA,cAAAA,QAAAA,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,UAAWyN,UAAAA,AAAU,MAAA,QAArBzN,0BAAAA,KAAAA,IAAAA,wBAAAA,CACAlB,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAc2O,UAAAA,AAAU,MAAA,QADxBzN,SAAAA,KAAAA,IAAAA,OAAAA,CAEAlB,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAc4O,SAAAA,AAAS,MAAA,QAAvB5O,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAyB2O,UAAAA,AAAU,MAAA,QAFnCzN,UAAAA,KAAAA,IAAAA,QAAAA,CAGAlB,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgC2O,UAAAA,AAAU,MAAA,QAH1CzN,UAAAA,KAAAA,IAAAA,QAICA,UAAUzO,IAAI,KAAK,iBAAA,CAAA,CAAiBuN,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAAAA,eAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,8BAAAA,wBAAwB9N,IAAAA,AAAI,MAAA,QAA5B8N,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0CAAAA,4BAA8B6O,WAAAA,AAAW,MAAA,QAAzC7O,4CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,2CAAAA,uCAA2C,CAAC,EAAA,AAAE,MAAA,QAA9CA,6CAAAA,KAAAA,IAAAA,KAAAA,IAAAA,yCAAgD2O,UAAAA,AAAU,OAAA,QAJ/FzN,UAAAA,KAAAA,IAAAA,QAAAA,CAKAlB,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,wBAAwB9N,IAAAA,AAAI,MAAA,QAA5B8N,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uCAAAA,6BAA8B8O,OAAO,AAAPA,MAAO,QAArC9O,wCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uCAAAA,mCAAuC,CAAC,EAAA,AAAE,MAAA,QAA1CA,yCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qCAA4C2O,UAAU;IAExD,4FAA4F;IAC5F,IACEA,cACA,OAAOA,eAAe,YACrB,CAAA,eAAeA,cAAc,gBAAgBA,cAAc,qBAAqBA,UAAAA,CAAS,EAC1F;QACA,MAAMI,cAAc5B,OAAO,KAAKE,OAAO,GAAG,+CAA+C;QACzF,MAAM2B,eAAe7B,QAAQ,GAAG,4BAA4B;QAC5D,MAAM8B,oBAAoB5B,QAAQ,GAAG,4BAA4B;QAEjE,IAAI0B,aAAa;YACfJ,aAAaA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYO,SAAS;QACpC,OAAO,IAAIF,cAAc;YACvBL,aAAaA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYQ,UAAU;QACrC,OAAO,IAAIF,mBAAmB;YAC5BN,aAAaA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYS,eAAe;QAC1C;IACF;IAEA,MAAMC,4BAAsC7e,MAAMC,OAAO,CAACke,cACrDA,WAAuC/d,GAAG,CAAC0e,CAAAA,MAAOA,GAAG,CAAC,EAAE,GAAIjC,CAAAA,OAAOF,IAAAA,CAAG,GAAKA,QAC5EmB;IAEJ,MAAMiB,2BAAqC/e,MAAMC,OAAO,CAACke,cACpDA,WAAuC/d,GAAG,CAAC0e,CAAAA,MAAOA,GAAG,CAAC,EAAE,IACzDf;QAUMvO;IARV,OAAO;QACL9N,MAAM;YAACmc;SAAY;QACnBgB;QACAE;QACAtM,YAAY;QACZ2D,iBAAiB;QACjB4I,WAAW;QACX/S,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,kBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC0G,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxBL,iBAAiB;QACjB,GAAGrY,UAAU4R,MAAM3R,MAAM,CAAC;QAC1B,GAAG2Y,0BAA0B;YAAC9F;SAAU,EAAElB,MAAM3R,MAAM,CAAC;QACvD,GAAG6Y,iBAAiBlH,MAAM9N,IAAI,EAAE8N,MAAM3R,MAAM,CAAC;IAC/C;AACF,EAAE;AAEK,yCAAyC,CAC9C2R,OACAjB,aACA9L,UACAF,cACAG;QAmBE8M,+BAAAA,wBAAAA,eAOAA,gCAAAA,yBAAAA,gBAQO0P,aA8CA1P,gBACCA;IA/EV,MAAM,EAAE2P,IAAI,EAAED,IAAI,EAAE,GAAG1P,MAAM9N,IAAI,CAAC,EAAE;QAChByd;IAApB,MAAMC,aAAcD,EAAAA,cAAAA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMva,KAAAA,AAAK,MAAA,QAAXua,gBAAAA,KAAAA,IAAAA,cAAe,EAAC,AAAD,EAChC/e,GAAG,CAAC,CAACkV,KAAa7U;YACyB0e,cAAyCA;QAAnF,QAAIljB,8BAAAA,EAAeqZ,YAAQrZ,8BAAAA,EAAekjB,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,KAAME,MAAM,AAANA,MAAM,QAAZF,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAc,CAAC1e,MAAM,SAAKxE,8BAAAA,EAAekjB,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAAA,KAAMG,MAAAA,AAAM,MAAA,QAAZH,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAc,CAAC1e,MAAM,GAAG;YACzG,OAAO;QACT;QAEA,OAAO;YACLmE,OAAO0Q;YACP+J,MAAM,EAAEF,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAME,MAAO,CAAC5e,MAAM;YAC5B6e,MAAM,EAAEH,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMG,MAAO,CAAC7e,MAAM;QAC9B;IACF,GACA,gFAAgF;KAC/EC,MAAM,CAACmC,CAAAA,IAAKA,MAAM,QAAQA,EAAEwc,MAAM,IAAI,KAAKxc,EAAEyc,MAAM,IAAI,KAAKzc,EAAEwc,MAAM,KAAKxc,EAAEyc,MAAM;IAEpF,MAAMC,0BAAsB5iB,gCAAAA,EAAAA,CAC1B6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cACA2c,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAM1c,KAAK,EACXC,UACAC;IAEF,MAAM8c,sBAAsB7iB,oCAAAA,EAAAA,CAC1B6S,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cACA4c,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAM3c,KAAK,EACXC,UACAC;IAGF,MAAM+c,kBAAkB;QACtBC,KAAK,EAAA,CAAER,cAAAA,KAAK7N,KAAAA,AAAK,MAAA,QAAV6N,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY9e,GAAG,CAAC,CAACiR,OAAe5Q;gBAMnC+O,+BAAAA,wBAAAA;YALF,MAAMhN,YAAQ5F,gCAAAA,EACZ2iB,qBACA9e,OACA4Q,OACA5O,UAAAA,AACA+M,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCI;YAGF,OAAO;gBACLid,QAAQlf;gBACR6O,MAAM+B;gBACN7O;YACF;QACF;QACA,8DAA8D;QAC9Dod,OAAOR,WAAWhf,GAAG,CAAC,CAACyf,WAAgBpf;gBAMnC+O,+BAAAA,wBAAAA;YALF,MAAMhN,YAAQ5F,gCAAAA,EACZ4iB,qBACA/e,OACAof,UAAUP,MAAM,EAChB7c,UAAAA,CACA+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCI;YAEF,OAAO;gBACL,GAAGmd,SAAS;gBACZrd;YACF;QACF;IACF;IAEA,+CAA+C;IAC/C,YAAY;IACZ,kFAAkF;IAClF,OAAO;IACP,KAAK;IAEL,MAAM,EAAEzE,UAAU,EAAE,GAAGH,UAAU4R,MAAM3R,MAAM;QAQnC2R;IANV,OAAO;QACL9N,MAAM;YACJ3D;YACA+hB,iBAAiBL;QACnB;QACAxT,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAAA,AAAM,MAAA,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;IAGlC;AACF,EAAE;AAEK,wCAAwC,CAC7CA,OACAjB,aACA9L,UACAF,cACAG;QAGoBgO,kBAElBlB,+BAAAA,wBAAAA,eAOekB,wBAAAA,mBAqBqBA,6BAAAA,uBAAAA,mBAE5BlB,gCAAAA,yBAAAA,gBAEAkB,wBAAAA,mBAOKA,8BAAAA,wBAAAA,mBAOXA,kBAqDeA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBACjDA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBAE3DlB,gBACCA,gBAGCkB,yBAAAA;IA7GX,MAAMA,YAAYlB,MAAM9N,IAAI,CAAC,EAAE;IAC/B,MAAMse,cAActP,CAAAA,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBwP,KAAAA,AAAK,IAAGxP,UAAUuP,KAAK,CAACC,KAAK,CAAC9f,GAAG,CAAC+f,CAAAA,OAAQA,KAAK3d,KAAK,IAAIL;IAC7F,MAAMQ,kBAAkBhG,oCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cACAyd,aACAvd,UACAC;QAwBoCgO,8BAAxBA,kBAWCA,+BAA6CA;IAhC5D,MAAM0P,WAAW1P,CAAAA,CAAAA,oBAAAA,UAAUuP,KAAK,AAALA,MAAK,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,0BAAAA,kBAAiBwP,KAAAA,AAAK,MAAA,QAAtBxP,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uBAAwBzR,MAAAA,AAAM,IAE3CyR,UAAUuP,KAAK,CAACC,KAAK,CAAC9f,GAAG,CAAC,CAAC+f,MAAW1f;YAOlC+O,+BAAAA,wBAAAA,eAKM2Q,aAAkBA;QAX1B,MAAMtO,SAASsO,KAAK7Q,IAAI,IAAI,CAAC,QAAQ,EAAE7O,QAAQ,GAAG;QAClD,MAAM+B,YAAQ5F,gCAAAA,EACZ+F,iBACAlC,OACAoR,QACApP,UAAAA,CACA+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCI;QAEF,OAAO;YACLmP;YACA9E,MAAMoT,CAAAA,CAAAA,cAAAA,KAAKtlB,KAAAA,AAAK,MAAA,QAAVslB,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY,CAAC,EAAA,AAAE,IAAA,CAAA,CAAGA,eAAAA,KAAKtlB,KAAAA,AAAK,MAAA,QAAVslB,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY,CAAC,EAAE,AAAF;YACrC3d;QACF;IACF,KACA;QACE;YACEqP,QAAQ;YACR9E,MAAM2D,oBAAAA,UAAU9L,KAAAA,AAAK,MAAA,QAAf8L,qBAAAA,KAAAA,IAAAA,mBAAmB,IAAKA,CAAAA,CAAAA,+BAAAA,CAAAA,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,8BAAAA,sBAAuB7V,KAAK,AAALA,MAAK,QAA5B6V,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAA8B,CAAC,EAAA,AAAE,MAAA,QAAjCA,iCAAAA,KAAAA,IAAAA,gCAAqC,CAAA;YACnElO,OAAOH,mBAAAA,CACLmN,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cAAAA,CACAmO,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uBAAuBlO,KAAK,EAC5BC,UACAC;QAEJ;QACA;YACEmP,QAAQ;YACR9E,MAAO2D,CAAAA,CAAAA,gCAAAA,CAAAA,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuB7V,KAAK,AAALA,MAAK,QAA5B6V,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAA,AAAE,MAAA,QAAjCA,kCAAAA,KAAAA,IAAAA,gCAAqC,GAAA,CAAE,IAAMA,CAAAA,oBAAAA,UAAU9L,KAAAA,AAAK,MAAA,QAAf8L,sBAAAA,KAAAA,IAAAA,qBAAmB,CAAA;YACvElO,OAAOrH,sBAAAA,CAAeklB,QAAQ;QAChC;KACD;IAEL,IAAIC;IACJ,IAAIC;IACJ,IAAA,CAAI7P,mBAAAA,UAAU8P,KAAAA,AAAK,MAAA,QAAf9P,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiB+P,SAAS,EAAE;QAC9B,MAAMC,OAAOhQ,UAAU9L,KAAK,GAAG8L,UAAU8P,KAAK,CAACC,SAAS;QACxD,IAAIC,QAAQ,GAAG;gBAGXlR,gCAAAA,yBAAAA,gBAEAkB,6BAAAA,mBASAlB,gCAAAA,yBAAAA;YAbF8Q,WAAW,CAAC,OAAO,EAAEI,MAAM;YAC3B,MAAMC,qCAAiChkB,gCAAAA,EAAAA,CACrC6S,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cAAAA,CACAmO,oBAAAA,UAAU8P,KAAAA,AAAK,MAAA,QAAf9P,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAAA,kBAAiBkQ,UAAAA,AAAU,MAAA,QAA3BlQ,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA6BlO,KAAK,EAClCC,UACAC;YAEF,MAAMF,YAAQ5F,gCAAAA,EACZ+jB,gCACA,GACA,IACAle,UAAAA,CACA+M,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCI;YAEF6d,gBAAgB/d;QAClB,OAAO;gBAGHgN,gCAAAA,yBAAAA,gBAEAkB,6BAAAA,mBASAlB,gCAAAA,yBAAAA;YAbF8Q,WAAW,CAAC,OAAO,EAAEte,KAAK6e,GAAG,CAACH,OAAO;YACrC,MAAMI,qCAAiCnkB,gCAAAA,EAAAA,AACrC6S,kBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cAAAA,CACAmO,oBAAAA,UAAU8P,KAAAA,AAAK,MAAA,QAAf9P,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,8BAAAA,kBAAiBqQ,UAAU,AAAVA,MAAU,QAA3BrQ,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA6BlO,KAAK,EAClCC,UACAC;YAEF,MAAMF,YAAQ5F,gCAAAA,EACZkkB,gCACA,GACA,IACAre,UAAAA,CACA+M,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCI;YAEF6d,gBAAgB/d;QAClB;IACF;IAEA,MAAMwe,SAAS;QACbV,UAAUC;IACZ;IAEA,MAAM,EAAExiB,UAAU,EAAE,GAAGH,UAAU4R,MAAM3R,MAAM;QAI/B6S,mBAQJlB;IAVV,OAAO;QACL4Q;QACAa,YAAYvQ,CAAAA,oBAAAA,UAAU9L,KAAAA,AAAK,MAAA,QAAf8L,sBAAAA,KAAAA,IAAAA,oBAAmB;QAC/B3S;QACAuiB;QACA,2BAA2B;QAC3Bxa,UAAU,OAAA,CAAA,AAAO4K,qBAAAA,UAAUuP,KAAK,AAALA,MAAK,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuB7V,KAAAA,AAAK,MAAA,QAA5B6V,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAA,AAAE,MAAK,WAAA,AAAWA,qBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAI,AAAJA,MAAI,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuB7V,KAAAA,AAAK,MAAA,QAA5B6V,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,GAAGvO;QACtG4D,UAAU,OAAA,CAAA,CAAO2K,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuB7V,KAAAA,AAAK,MAAA,QAA5B6V,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAA,AAAE,MAAK,WAAA,CAAWA,oBAAAA,UAAUuP,KAAAA,AAAK,MAAA,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBpL,IAAAA,AAAI,MAAA,QAArBoL,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuB7V,KAAAA,AAAK,MAAA,QAA5B6V,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,GAAGvO;QACtG+e,kBAAkB;gBAAMxQ;gBAAAA;mBAAAA,CAAAA,4BAAAA,CAAAA,mBAAAA,UAAU9L,KAAAA,AAAK,MAAA,QAAf8L,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBxN,QAAQ,EAAA,MAAA,QAAzBwN,8BAAAA,KAAAA,IAAAA,4BAA+B;;QACvDzE,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,QAAQR,CAAAA,uBAAAA,kBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAM,AAANA,MAAM,QAApBR,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC,OAAO;QACP,UAAU;QACV2R,SAASzQ,CAAAA,qBAAAA,UAAUuP,KAAK,AAALA,MAAK,QAAfvP,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,kBAAiBwP,KAAAA,AAAK,MAAA,QAAtBxP,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAwBzR,MAAAA,AAAM,IAAG,sBAAsB;QAChE+hB;QACApO,cAAc;IAChB;AACF,EAAE;AAEF,MAAMwO,YAAY,CAACnjB;IACjB,OAAOA,KACJ8G,OAAO,CAAC,mBAAmB,IAC3BA,OAAO,CAAC,YAAY,IACpBA,OAAO,CAAC,sCAAsC,IAC9CA,OAAO,CAAC,cAAc,KACtB2C,IAAI;AACT;AAEA,MAAM2Z,cAAc,CAClBzc,OACA0c,UACAC;IAEA,IAAI3c,UAAU,QAAQ,OAAOA,UAAU,WAAW;QAChD,OAAOA;IACT;IAEA,MAAM4c,YAAYxhB,MAAMC,OAAO,CAACshB,MAAOtmB,MAAM,IAAIsmB,MAAOtmB,MAAM,CAACqmB,SAAS,GAAGC,MAAOtmB,MAAM;IACxF,MAAMoJ,SAASrE,MAAMC,OAAO,CAACshB,MAAOld,MAAM,IAAIkd,MAAOld,MAAM,CAACid,SAAS,GAAGC,MAAOld,MAAM;IACrF,MAAMod,SAASzhB,MAAMC,OAAO,CAACshB,MAAOE,MAAM,IAAIF,MAAOE,MAAM,CAACH,SAAS,GAAGC,MAAOE,MAAM;IACrF,IAAIC,YAAY9c;IAChB,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI,OAAO4c,cAAc,UAAU;YACjC,IAAI;gBACFE,gBAAYxmB,gBAAAA,EAASsmB,WAAW5c;YAClC,EAAE,OAAM;gBACN8c,gBAAYnmB,qCAAAA,EAA2BqJ;YACzC;QACF,OAAO;YACL8c,gBAAYnmB,qCAAAA,EAA2BqJ;QACzC;IACF;IACA,OAAO,GAAGP,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU,KAAKqd,YAAYD,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU,IAAI;AACrD;AAEA,SAASE,iBAAoBC,GAAgC,EAAEC,QAAgB,EAAEP,QAAgB;IAC/F,IAAIthB,MAAMC,OAAO,CAAC2hB,MAAM;YACLA;QAAjB,MAAME,WAAWF,CAAAA,gBAAAA,GAAG,CAACN,SAAS,AAATA,MAAS,QAAbM,kBAAAA,KAAAA,IAAAA,gBAAiBA,GAAG,CAAC,EAAE;QACxC,IAAI5hB,MAAMC,OAAO,CAAC6hB,WAAW;gBACpBA;YAAP,OAAOA,CAAAA,qBAAAA,QAAQ,CAACD,SAAAA,AAAS,MAAA,QAAlBC,uBAAAA,KAAAA,IAAAA,qBAAsBA,QAAQ,CAAC,EAAE;QAC1C;QACA,OAAOA;IACT;IACA,OAAOF;AACT;AAEA,SAASG,WAAWC,UAA+B,EAAEC,aAAkC;QAE3ED,oBAAAA,MACDA,mBAGDC,qBACAD,kBAIAC,qBACAD,kBAGEA,oBACAA,oBACAA;IAhBV,OAAO;QACL9b,QAAQ8b,CAAAA,OAAAA,CAAAA,qBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY9b,MAAAA,AAAM,MAAA,QAAlB8b,uBAAAA,KAAAA,IAAAA,qBAAsBC,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAe/b,MAAAA,AAAM,MAAA,QAA3C8b,SAAAA,KAAAA,IAAAA,OAA+C,EAAE;QACzDvX,OAAOuX,CAAAA,oBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYvX,KAAK,AAALA,MAAK,QAAjBuX,sBAAAA,KAAAA,IAAAA,oBAAqBC,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAexX,KAAK;QAEhD+O,MAAM;YACJ,GAAIyI,CAAAA,sBAAAA,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAezI,IAAAA,AAAI,MAAA,QAAnByI,wBAAAA,KAAAA,IAAAA,sBAAuB,CAAC,CAAC;YAC7B,GAAID,CAAAA,mBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYxI,IAAAA,AAAI,MAAA,QAAhBwI,qBAAAA,KAAAA,IAAAA,mBAAoB,CAAC,CAAC;QAC5B;QAEApV,MAAM;YACJ,GAAIqV,CAAAA,sBAAAA,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAerV,IAAAA,AAAI,MAAA,QAAnBqV,wBAAAA,KAAAA,IAAAA,sBAAuB,CAAC,CAAC;YAC7B,GAAID,CAAAA,mBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYpV,IAAAA,AAAI,MAAA,QAAhBoV,qBAAAA,KAAAA,IAAAA,mBAAoB,CAAC,CAAC;QAC5B;QAEA/mB,QAAQ+mB,CAAAA,qBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY/mB,MAAAA,AAAM,MAAA,QAAlB+mB,uBAAAA,KAAAA,IAAAA,qBAAsBC,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAehnB,MAAM;QACnDoJ,QAAQ2d,CAAAA,qBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY3d,MAAAA,AAAM,MAAA,QAAlB2d,uBAAAA,KAAAA,IAAAA,qBAAsBC,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAe5d,MAAM;QACnDod,QAAQO,CAAAA,qBAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYP,MAAAA,AAAM,MAAA,QAAlBO,uBAAAA,KAAAA,IAAAA,qBAAsBC,kBAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeR,MAAM;IACrD;AACF;AAEO,6CAA6C,CAClDjS,OACAjB,aACA9L,UACAF,cACAG;QAqCgByf,kBAC0B3S,oCAAAA,mCAAAA,6BAAAA,wBAAAA,eAkClCA,oBAAAA,gBAIeA,qCAAAA,oCAAAA,8BAAAA,yBAAAA,gBAiBK2S,mBAEnB3S,gBACCA;IA9FV,MAAM2S,YAAY3S,MAAM9N,IAAI,CAAC,EAAE;IAE/B,MAAM0gB,mBAAmB,CACvBlc,QACAmc;QAEA,MAAMC,gBAAsDtiB,MAAMC,OAAO,CAACiG,MAAM,CAAC,EAAE,IAC9EA,OAAsB9F,GAAG,CAACmd,CAAAA,MACzBA,IACGnd,GAAG,CAACmiB,CAAAA,OAAQnB,UAAUmB,OACtB7hB,MAAM,CAAC8hB,SACPrK,IAAI,CAAC,QAETjS,OAAoB9F,GAAG,CAACmiB,CAAAA,OAAQnB,UAAUmB;QAE/C,OAAOD,cAAcliB,GAAG,CAAC,CAACwE,OAAO0c;gBAGIe,cACDA,eACOA;YAJzC,+BAA+B;YAC/B,MAAMR,WAAW;YACjB,MAAMxR,YAAYsR,iBAAiBU,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,OAAQzV,IAAAA,AAAI,MAAA,QAAZyV,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAc7f,KAAK,EAAEqf,UAAUP;YAClE,MAAMxU,WAAW6U,iBAAiBU,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQzV,IAAAA,AAAI,MAAA,QAAZyV,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAActV,IAAI,EAAE8U,UAAUP;YAChE,MAAMnV,kBAAkBwV,iBAAiBU,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,OAAQ7I,IAAAA,AAAI,MAAA,QAAZ6I,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAc7f,KAAK,EAAEqf,UAAUP;YACxE,MAAMmB,YAAYd,iBAAiBU,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQ5X,KAAK,EAAEoX,UAAUP;YAI5D,MAAM/T,QAA6B;gBACjC,GAAI,OAAO8C,cAAc,WAAW;oBAAE7N,OAAO6N;gBAAU,IAAI,CAAC,CAAC;gBAC7D,GAAI,OAAOvD,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAI,OAAOX,oBAAoB,WAAW;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAClE,GAAIsW,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBAAE7d;gBAAO2I;YAAM;QACxB;IACF;QACgB4U;IAAhB,MAAMO,UAAUP,CAAAA,0BAAAA,CAAAA,mBAAAA,UAAUZ,KAAAA,AAAK,MAAA,QAAfY,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBjc,MAAAA,AAAM,MAAA,QAAvBic,4BAAAA,KAAAA,IAAAA,0BAA2B,EAAE;IAC7C,MAAMZ,QAAQQ,WAAWI,UAAUZ,KAAK,EAAA,CAAE/R,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,8BAAAA,uBAAwB9N,IAAAA,AAAI,MAAA,QAA5B8N,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,oCAAAA,4BAA8BmT,KAAAA,AAAK,MAAA,QAAnCnT,sCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,qCAAAA,iCAAqC,CAAC,EAAE,AAAF,MAAE,QAAxCA,uCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mCAA0C+R,KAAK;IACzF,MAAMqB,OAAOF,OAAO,CAAC,EAAE,CAACtiB,GAAG,CAAC,CAAC0O,GAAG+S,WAC9Ba,QAAQtiB,GAAG,CAAC,CAACyiB,KAAKvB;gBASmBC,aACDA,cACOA;YAVzC,MAAMuB,YAAYD,GAAG,CAAChB,SAAS;YAC/B,MAAMkB,aAAa,OAAOD,cAAc,WAAW1B,UAAU0B,aAAaA;YAE1E,MAAME,iBACJ,OAAOD,eAAe,YAAY,OAAOA,eAAe,WACpD1B,YAAY0B,YAAYzB,UAAUC,SAClCwB;YAEN,MAAM1S,YAAYsR,iBAAiBJ,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,cAAAA,MAAO3U,IAAAA,AAAI,MAAA,QAAX2U,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa/e,KAAK,EAAEqf,UAAUP;YACjE,MAAMxU,WAAW6U,iBAAiBJ,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,MAAO3U,IAAAA,AAAI,MAAA,QAAX2U,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaxU,IAAI,EAAE8U,UAAUP;YAC/D,MAAMnV,kBAAkBwV,iBAAiBJ,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,cAAAA,MAAO/H,IAAAA,AAAI,MAAA,QAAX+H,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa/e,KAAK,EAAEqf,UAAUP;YACvE,MAAMmB,YAAYd,iBAAiBJ,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAO9W,KAAK,EAAEoX,UAAUP;YAI3D,MAAM/T,QAA6B;gBACjC,GAAI8C,YAAY;oBAAE7N,OAAO6N;gBAAU,IAAI,CAAC,CAAC;gBACzC,GAAI,OAAOvD,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAIX,kBAAkB;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAC9C,GAAIsW,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBACL7d,OAAOoe;gBACPzV;YACF;QACF;IAGF,MAAMyT,SAAoC;QACxCiC,MAAM;YACJ,GAAIzT,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAAA,eAAc5C,IAAAA,AAAI,MAAA,QAAlB4C,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAoBzC,IAAAA,AAAI,IAAG;gBAAED,UAAU0C,MAAM3R,MAAM,CAAC+O,IAAI,CAACG,IAAI;YAAC,IAAI,CAAC,CAAC;QAC1E;IACF;IAEA,MAAMmW,iBAAAA,CAAiB1T,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAAAA,eAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,wBAAwB9N,IAAAA,AAAI,MAAA,QAA5B8N,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,qCAAAA,6BAA8BmT,KAAAA,AAAK,MAAA,QAAnCnT,uCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uCAAAA,kCAAqC,CAAC,EAAA,AAAE,MAAA,QAAxCA,wCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oCAA0C6S,MAAM;IACvE,MAAMc,cAAchB,UAAUE,MAAM;QAG3Bc,oBAEDD,sBACAC,mBAGAD,sBACAC,mBAEEA,qBAAAA;IAVV,MAAMd,SAAS;QACb5X,OAAO0Y,CAAAA,qBAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa1Y,KAAK,AAALA,MAAK,QAAlB0Y,uBAAAA,KAAAA,IAAAA,qBAAsBD,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgBzY,KAAK;QAClD+O,MAAM;YACJ,GAAI0J,CAAAA,uBAAAA,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgB1J,IAAAA,AAAI,MAAA,QAApB0J,yBAAAA,KAAAA,IAAAA,uBAAwB,CAAC,CAAC;YAC9B,GAAIC,CAAAA,oBAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa3J,IAAAA,AAAI,MAAA,QAAjB2J,sBAAAA,KAAAA,IAAAA,oBAAqB,CAAC,CAAC;QAC7B;QACAvW,MAAM;YACJ,GAAIsW,CAAAA,uBAAAA,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgBtW,IAAAA,AAAI,MAAA,QAApBsW,yBAAAA,KAAAA,IAAAA,uBAAwB,CAAC,CAAC;YAC9B,GAAIC,qBAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAavW,IAAAA,AAAI,MAAA,QAAjBuW,sBAAAA,KAAAA,IAAAA,oBAAqB,CAAC,CAAC;QAC7B;QACAjd,QAAQid,CAAAA,OAAAA,CAAAA,sBAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAajd,MAAAA,AAAM,MAAA,QAAnBid,wBAAAA,KAAAA,IAAAA,sBAAuBD,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgBhd,MAAAA,AAAM,MAAA,QAA7Cid,SAAAA,KAAAA,IAAAA,OAAiD,EAAE;IAC7D;QAG4BhB;IAD5B,OAAO;QACLiB,SAAShB,iBAAiBD,CAAAA,2BAAAA,CAAAA,oBAAAA,UAAUE,MAAAA,AAAM,MAAA,QAAhBF,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAkBjc,MAAAA,AAAM,MAAA,QAAxBic,6BAAAA,KAAAA,IAAAA,2BAA4B,EAAE,EAAEE;QAC1DO;QACA3W,KAAK,EAAA,CAAEuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvD,KAAK;QAC1B+D,MAAM,EAAA,CAAER,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAM;QAC5BgR;IACF;AACF,EAAE;AAEF,SAASqC,uBAAuB9kB,MAAyB;IAIvD,MAAM+kB,cAAc/kB,OAAO+kB,WAAW,IAAI;QAChC/kB,gBAAAA;IAAV,MAAMwD,IAAIxD,CAAAA,OAAAA,CAAAA,iBAAAA,OAAO0S,MAAAA,AAAM,MAAA,QAAb1S,mBAAAA,KAAAA,IAAAA,iBAAiBA,QAAQ,AAADwD,MAAC,QAAzBxD,SAAAA,KAAAA,IAAAA,OAA6BA,OAAOglB,KAAK;QACzChlB,gBAAAA;IAAV,MAAMsE,IAAItE,CAAAA,QAAAA,kBAAAA,OAAO2H,MAAAA,AAAM,MAAA,QAAb3H,mBAAAA,KAAAA,IAAAA,iBAAiBA,QAAQ,AAADsE,MAAC,QAAzBtE,UAAAA,KAAAA,IAAAA,QAA6BA,OAAOqG,KAAK;IACnD,MAAM4e,gBAAYznB,6BAAAA,EAAc8G;IAChC,MAAM4gB,gBAAY1nB,6BAAAA,EAAcgG;IAChC,MAAM2hB,YAAY5nB,iCAAAA,EAAc+G;IAChC,MAAM8gB,gBAAY7nB,6BAAAA,EAAciG;IAEhC,8CAA8C;IAC9C,MAAM6hB,UAAU,CAAC9E;QACf,IAAI9e,MAAMC,OAAO,CAAC6e,MAAM;YACtB,OAAOA;QACT;QACA,IAAI,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,UAAU;YACtD,OAAO;gBAACA;aAAI;QACd;QACA,OAAO,EAAE;IACX;IAEA,IAAIwE,gBAAgB,KAAK;QACvB,IAAIG,aAAaC,WAAW;YAC1B,OAAO;gBAAEG,YAAYD,QAAQ7hB;gBAAImE,QAAQ0d,QAAQ/gB;YAAG;QACtD,OAAO,IAAI2gB,aAAaG,WAAW;YACjC,OAAO;gBAAEE,YAAYD,QAAQ/gB;gBAAIqD,QAAQ0d,QAAQ7hB;YAAG;QACtD,OAAO;YACL,OAAO;gBAAE8hB,YAAYJ,YAAYG,QAAQ7hB,KAAK6hB,QAAQ/gB;gBAAIqD,QAAQud,YAAYG,QAAQ/gB,KAAK+gB,QAAQ7hB;YAAG;QACxG;IACF,OAAO;QACL,IAAIyhB,aAAaG,WAAW;YAC1B,OAAO;gBAAEE,YAAYD,QAAQ/gB;gBAAIqD,QAAQ0d,QAAQ7hB;YAAG;QACtD,OAAO,IAAI0hB,aAAaC,WAAW;YACjC,OAAO;gBAAEG,YAAYD,QAAQ7hB;gBAAImE,QAAQ0d,QAAQ/gB;YAAG;QACtD,OAAO;YACL,OAAO;gBAAEghB,YAAYL,YAAYI,QAAQ/gB,KAAK+gB,QAAQ7hB;gBAAImE,QAAQsd,YAAYI,QAAQ7hB,KAAK6hB,QAAQ/gB;YAAG;QACxG;IACF;AACF;AAEO,8CAA8C,CACnD2M,OACAjB,aACA9L,UACAF,cACAG;QAsGS8M,eACCA,gBACMA,cACaA;IAvG7B,MAAMuU,aAAqC,EAAE;IAE7C,wFAAwF;IACxF,MAAMC,YACJxU,MAAM9N,IAAI,CAACzC,MAAM,GAAG,KACpBuQ,MAAM9N,IAAI,CAACuiB,KAAK,CAAC,CAAC1lB;YACDA,gBAAAA;QAAf,MAAM2H,SAAS3H,CAAAA,OAAAA,CAAAA,iBAAAA,OAAO2H,MAAAA,AAAM,MAAA,QAAb3H,mBAAAA,KAAAA,IAAAA,iBAAiBA,OAAOsE,CAAC,MAAA,QAAzBtE,SAAAA,KAAAA,IAAAA,OAA6BA,OAAOqG,KAAK;YACzCrG,gBAAAA;QAAf,MAAM0S,SAAS1S,CAAAA,QAAAA,kBAAAA,OAAO0S,MAAAA,AAAM,MAAA,QAAb1S,mBAAAA,KAAAA,IAAAA,iBAAiBA,QAAQ,AAADwD,MAAC,QAAzBxD,UAAAA,KAAAA,IAAAA,QAA6BA,OAAOglB,KAAK;QACxD,OAAOvjB,MAAMC,OAAO,CAACgR,WAAWjR,MAAMC,OAAO,CAACiG,WAAWA,OAAOjH,MAAM,GAAG,KAAKgS,OAAOhS,MAAM,GAAG;IAChG;IAEF,IAAI+kB,WAAW;QACb,mFAAmF;QACnF,MAAME,eAAuC,CAAC;QAC9C1U,MAAM9N,IAAI,CAACG,OAAO,CAAC,CAACtD,QAA2B8Y;gBAI3C7H,+BAAAA,wBAAAA,eAEAjR,gBAAyBA,iBAUzBiR,gCAAAA,yBAAAA;YAfF,MAAM2U,WAAW5lB,OAAO+Q,IAAI,IAAI,CAAC,SAAS,EAAE+H,YAAY,GAAG;gBAKzD9Y;YAJF,yDAAyD;YACzD,MAAMoE,sBAAkBhG,gCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cACAhE,CAAAA,wBAAAA,CAAAA,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeoS,MAAAA,AAAM,MAAA,QAArBpS,0BAAAA,KAAAA,IAAAA,wBAAAA,CAAyBA,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAK,EAC7CC,UACAC;YAEF,qDAAqD;YACrD,MAAMF,YAAQ5F,gCAAAA,EACZ+F,iBACA,GACAwhB,UACA1hB,UAAAA,CACA+M,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kCAAAA,wBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCI;YAEFwhB,YAAY,CAACC,SAAS,GAAG3hB;gBAEVjE,gBAAAA;YAAf,MAAM0S,SAAS1S,CAAAA,OAAAA,CAAAA,iBAAAA,OAAO0S,MAAAA,AAAM,MAAA,QAAb1S,mBAAAA,KAAAA,IAAAA,iBAAiBA,QAAOwD,AAAC,MAAA,QAAzBxD,SAAAA,KAAAA,IAAAA,OAA6BA,OAAOglB,KAAK;gBACzChlB,gBAAAA;YAAf,MAAM2H,SAAS3H,CAAAA,QAAAA,CAAAA,iBAAAA,OAAO2H,MAAAA,AAAM,MAAA,QAAb3H,mBAAAA,KAAAA,IAAAA,iBAAiBA,OAAOsE,CAAC,MAAA,QAAzBtE,UAAAA,KAAAA,IAAAA,QAA6BA,OAAOqG,KAAK;YAExD,IAAI,KAACjJ,mCAAAA,EAAoBsV,WAAW,KAACtV,mCAAAA,EAAoBuK,SAAS;gBAChE;YACF;YACA,IAAI+K,cAAUtV,mCAAAA,EAAoBsV,WAAWA,OAAOhS,MAAM,GAAG,GAAG;gBAC7DgS,OAA+BpP,OAAO,CAAC,CAACwP,OAAe1Q;oBACtD,MAAMyjB,aAAaL,WAAWM,SAAS,CAACd,CAAAA,QAASA,MAAMA,KAAK,KAAKlS;oBACjE,MAAMiT,WAAWpf,OAAQgB,MAA8B,CAACvF,EAAE;oBAC1D,IAAI2F,MAAMge,WAAW;wBACnB;oBACF;oBACA,IAAIF,eAAe,CAAC,GAAG;wBACrBL,WAAW3Y,IAAI,CAAC;4BACdmY,OAAOlS;4BACPkT,WAAW;gCAAC;oCAAEJ;oCAAUvf,OAAO0f;oCAAU9hB;gCAAM;6BAAE;wBACnD;oBACF,OAAO;wBACLuhB,UAAU,CAACK,WAAW,CAACG,SAAS,CAAEnZ,IAAI,CAAC;4BAAE+Y;4BAAUvf,OAAO0f;4BAAU9hB;wBAAM;oBAC5E;gBACF;YACF;QACF;IACF,OAAO;QACL,uEAAuE;QACvEgN,MAAM9N,IAAI,CAACG,OAAO,CAAC,CAACtD,QAA2B8Y;gBAQ3C7H,+BAAAA,wBAAAA,eAEAjR,gBAAyBA;YAT3B,MAAM,EAAEslB,UAAU,EAAE3d,MAAM,EAAE,GAAGmd,uBAAuB9kB;YAEtD,IAAI,KAAC5C,mCAAAA,EAAoBkoB,eAAe,KAACloB,mCAAAA,EAAoBuK,SAAS;gBACpE;YACF;gBAKE3H;YAHF,MAAMoE,sBAAkBhG,gCAAAA,EAAAA,CACtB6S,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCC,cACAhE,CAAAA,wBAAAA,CAAAA,iBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeoS,MAAAA,AAAM,MAAA,QAArBpS,0BAAAA,KAAAA,IAAAA,wBAAAA,CAAyBA,kBAAAA,OAAOuS,MAAAA,AAAM,MAAA,QAAbvS,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeiE,KAAK,EAC7CC,UACAC;YAGFmhB,WAAWhiB,OAAO,CAAC,CAACwP,OAAe1Q;oBAM/B6O,+BAAAA,wBAAAA;gBALF,MAAMhN,YAAQ5F,gCAAAA,EACZ+F,iBACAhC,GACA0Q,OACA5O,UAAAA,CACA+M,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,cAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACxCI;gBAEF,MAAM4hB,WAAWpf,OAAOgB,MAAM,CAACvF,EAAE;gBACjC,IAAI2F,MAAMge,WAAW;oBACnB;gBACF;gBACAP,WAAW3Y,IAAI,CAAC;oBACdmY,OAAOlS;oBACPzM,OAAO0f;oBACP9hB;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACLd,MAAMqiB;QACN9X,KAAK,EAAA,CAAEuD,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcvD,KAAK;QAC1B+D,MAAM,EAAA,CAAER,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAM;QAC5BsT,aAAa,CAAA,CAAC9T,eAAAA,MAAM9N,IAAI,CAAC,EAAA,AAAE,MAAA,QAAb8N,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAqC8T,WAAAA,AAAW,MAAK,MAAM,eAAe;QACxF7Q,YAAYlE,eAAeiB,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAckD,UAAAA,AAAU,MAAK;IAC1D;AACF,EAAE;AAEK,gCAAgC,CAAClD;QA0IzBA,eAAuBA;IAzIpC,MAAMiV,aAA2B;QAAE,GAAGjV,KAAK;IAAC;IAE5C,uDAAuD;IACvD,IAAIkV,YAAY;IAChB,IAAIC,YAAY;IAChB,IAAK,IAAIC,SAAS,GAAGA,SAASpV,MAAM9N,IAAI,CAACzC,MAAM,EAAE2lB,SAAU;QACzD,MAAMC,QAASrV,MAAM9N,IAAI,CAACkjB,OAAO,CAAuBE,CAAC;QACzD,IAAID,aAASlpB,mCAAAA,EAAoBkpB,QAAQ;YACvC,IAAK,IAAIE,UAAU,GAAGA,UAAUF,MAAM5lB,MAAM,EAAE8lB,UAAW;gBACvD,IAAI,KAAC9oB,8BAAAA,EAAe4oB,KAAK,CAACE,QAAQ,GAAG;oBACnCL,YAAY1iB,KAAKvH,GAAG,CAACiqB,WAAWG,KAAK,CAACE,QAAQ;oBAC9CJ,YAAY3iB,KAAKrH,GAAG,CAACgqB,WAAWE,KAAK,CAACE,QAAQ;gBAChD;YACF;QACF;IACF;IAEA,iDAAiD;IACjD,MAAMC,cAAcN,YAAY,IAAI,CAACA,YAAY;IAEjD,iFAAiF;IACjF,MAAMO,iBAA8B,IAAI3hB;IACxC,IAAK,IAAIshB,SAAS,GAAGA,SAASpV,MAAM9N,IAAI,CAACzC,MAAM,EAAE2lB,SAAU;QACzD,MAAMrmB,SAASiR,MAAM9N,IAAI,CAACkjB,OAAO;QACjC,IAAIrmB,OAAO2mB,KAAK,QAAIvpB,mCAAAA,EAAoB4C,OAAO2mB,KAAK,GAAG;YACrD3mB,OAAO2mB,KAAK,CAACrjB,OAAO,CAACqjB,CAAAA,QAASD,eAAe9V,GAAG,CAACvF,OAAOsb;QAC1D;IACF;IAEA,wDAAwD;IACxD,MAAMC,OAAiB,EAAE;IACzB,MAAMC,OAAiB,EAAE;IACzB,IAAIC,UAAyB;IAC7B,IAAK,IAAIT,SAAS,GAAGA,SAASpV,MAAM9N,IAAI,CAACzC,MAAM,EAAE2lB,SAAU;YAkBnCpV,iCAAAA,qBAAAA,gBACIA,kCAAAA,sBAAAA;QAlB1B,MAAMjR,SAASiR,MAAM9N,IAAI,CAACkjB,OAAO;QACjC,gFAAgF;QAChF,QAAIjpB,mCAAAA,EAAoB4C,OAAO2mB,KAAK,GAAG;YACpC3mB,OAAqC4b,WAAW,GAAGna,MAAMqD,IAAI,CAAC4hB;QACjE;QACA1mB,OAAOsE,CAAC,GAAG,EAAE;QACbtE,OAAOwD,CAAC,GAAG,EAAE;QACb,MAAMujB,SAAS/mB,OAAO2mB,KAAK;QAC3B,MAAML,QAAQtmB,OAAOumB,CAAC;QAEtB,yCAAyC;QACzC,IAAI,KAACnpB,mCAAAA,EAAoBkpB,UAAU,CAAClpB,uCAAAA,EAAoB2pB,SAAS;YAC/Db,WAAW/iB,IAAI,CAACkjB,OAAO,GAAGrmB;YAC1B;QACF;QAEA,+BAA+B;QAC/B,MAAMgnB,gBAAgB/V,CAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAcwK,KAAAA,AAAK,MAAA,QAAnBxK,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kCAAAA,oBAAqByK,WAAAA,AAAW,MAAA,QAAhCzK,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gCAAkCuK,SAAS,AAATA,MAAc,cAAc,CAAC,IAAI;YAC/DvK;QAA1B,MAAMgW,kBAAoBhW,CAAAA,4CAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAcwK,KAAAA,AAAK,MAAA,QAAnBxK,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,mCAAAA,qBAAqByK,WAAAA,AAAW,MAAA,QAAhCzK,qCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iCAAkCpC,QAAAA,AAAQ,MAAA,QAA1CoC,6CAAAA,KAAAA,IAAAA,4CAA8C,CAAA,GAAKxN,KAAKyjB,EAAE,GAAI;QAExF,wCAAwC;QACxC,IAAIC,cAAuB,EAAE;QAC7B,IAAIC,cAAc;QAClB,IAAI,KAAC7pB,6BAAAA,EAAcwpB,SAAS;YAC1BI,cAAc1lB,MAAMqD,IAAI,CAAC,IAAIC,IAAIgiB;YACjCK,cAAc;QAChB;QAEA,IAAK,IAAIZ,UAAU,GAAGA,UAAUF,MAAM5lB,MAAM,EAAE8lB,UAAW;YACvD,QAAI9oB,8BAAAA,EAAeqpB,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAQ,CAACP,QAAQ,SAAK9oB,8BAAAA,EAAe4oB,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAO,CAACE,QAAQ,GAAG;gBACzE;YACF;YAEA,gCAAgC;YAChC,IAAIa;YACJ,IAAID,aAAa;gBACf,MAAME,MAAMH,YAAYI,OAAO,CAACR,MAAM,CAACP,QAAQ;gBAC/C,MAAM5E,OAAQ,IAAIne,KAAKyjB,EAAE,GAAIC,YAAYzmB,MAAM;gBAC/C2mB,WAAWJ,kBAAkBD,gBAAgBM,MAAM1F;YACrD,OAAO;gBACLyF,WAAWJ,kBAAkBD,gBAAiB,CAAED,MAAM,CAACP,QAAQ,GAAc/iB,KAAKyjB,EAAE,GAAI,GAAA,CAAE;YAC5F;YACA,kDAAkD;YAClD,MAAMM,YAAYlB,KAAK,CAACE,QAAQ;YAChC,MAAMiB,cAAcD,YAAYf,aAAa,sBAAsB;YACnE,8DAA8D;YAC9D,MAAMniB,IAAImjB,cAAchkB,KAAKikB,GAAG,CAACL;YACjC,MAAM7jB,IAAIikB,cAAchkB,KAAKkkB,GAAG,CAACN;YAEjC,yEAAyE;YACzE,4EAA4E;YAC5E,IAAIhB,WAAW,KAAKG,YAAY,GAAG;gBACjC,+DAA+D;gBAC/D,8FAA8F;gBAC9FM,UAAUL;YACZ;YAEAzmB,OAAOsE,CAAC,CAACuI,IAAI,CAACvI;YACdtE,OAAOwD,CAAC,CAACqJ,IAAI,CAACrJ;YACdojB,KAAK/Z,IAAI,CAACvI;YACVuiB,KAAKha,IAAI,CAACrJ;QACZ;QAEA,6DAA6D;QAC7D,IAAIxD,OAAOsE,CAAC,IAAItE,OAAOwD,CAAC,EAAE;YACvBxD,OAAgCmD,IAAI,GAAGnD,OAAOsE,CAAC,CAACzC,GAAG,CAAC,CAACkX,MAAMuO,MAAS;oBACnEhjB,GAAGyU;oBACHvV,GAAIxD,OAAOwD,CAAc,CAAC8jB,IAAI;oBAC9B,GAAItnB,OAAON,IAAI,GAAG;wBAAEA,MAAOM,OAAON,IAAiB,CAAC4nB,IAAI;oBAAC,IAAI,CAAC,CAAC;iBACjE,CAAA;QACF;QAEApB,WAAW/iB,IAAI,CAACkjB,OAAO,GAAGrmB;IAC5B;IAEA,wCAAwC;IACxC,IAAI8mB,YAAY,MAAM;QACpB,IAAK,IAAIT,SAAS,GAAGA,SAASH,WAAW/iB,IAAI,CAACzC,MAAM,EAAE2lB,SAAU;YAC9D,MAAMrmB,SAASkmB,WAAW/iB,IAAI,CAACkjB,OAAO;YACtC,IAAIrmB,OAAOsE,CAAC,IAAItE,OAAOwD,CAAC,EAAE;gBACxBxD,OAAOsE,CAAC,GAAItE,OAAOsE,CAAC,CAAczC,GAAG,CAAC,CAACoS,IAAcA,IAAI6S;YAC3D;QACF;QACA,uCAAuC;QACvC,IAAK,IAAI1kB,IAAI,GAAGA,IAAIwkB,KAAKlmB,MAAM,EAAE0B,IAAK;YACpCwkB,IAAI,CAACxkB,EAAE,GAAGwkB,IAAI,CAACxkB,EAAE,GAAG0kB;QACtB;IACF;IAEA,uDAAuD;IACvD,IAAIc,SAASnkB,KAAKrH,GAAG,IAAIwqB,KAAK/kB,GAAG,CAAC4B,KAAK6e,GAAG,MAAMuE,KAAKhlB,GAAG,CAAC4B,KAAK6e,GAAG;IACjEsF,SAASA,WAAW,IAAI,IAAIA;IAE5B,8DAA8D;IAC9D,IAAK,IAAIvB,SAAS,GAAGA,SAASH,WAAW/iB,IAAI,CAACzC,MAAM,EAAE2lB,SAAU;QAC9D,MAAMrmB,SAASkmB,WAAW/iB,IAAI,CAACkjB,OAAO;QACtC,IAAIrmB,OAAOsE,CAAC,IAAItE,OAAOwD,CAAC,EAAE;YACxBxD,OAAOsE,CAAC,GAAItE,OAAOsE,CAAC,CAAczC,GAAG,CAAC,CAACoS,IAAcA,IAAK,CAAA,IAAI2T,MAAAA,CAAK;YACnE5nB,OAAOwD,CAAC,GAAIxD,OAAOwD,CAAC,CAAc3B,GAAG,CAAC,CAACoS,IAAcA,IAAK,CAAA,IAAI2T,MAAAA,CAAK;QACrE;IACF;IAEA,oEAAoE;IACpE,MAAMpZ,OAAOyC,CAAAA,CAAAA,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcvD,KAAAA,AAAK,KAAA,CAAA,CAAIuD,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcQ,MAAM,AAANA,KAAU;IAC5DyU,WAAW5mB,MAAM,GAAG;QAClB,GAAG4mB,WAAW5mB,MAAM;QACpBoO,OAAOc;QACPiD,QAAQjD;IACV;IACA,sCAAsC;IACrC0X,WAAW5mB,MAAM,CAAiCic,cAAc,GAAGuL,YAAAA,QAAAA,YAAAA,KAAAA,IAAAA,UAAWljB;IAE/E,OAAOsiB;AACT,EAAE;AAEF,8DAA8D;AAC9D,SAAS2B,cAAchiB,GAAQ;IAC7B,OACEG,OAAOC,SAAS,CAACtB,QAAQ,CAACwB,IAAI,CAACN,SAAS,qBACxCG,OAAO8hB,cAAc,CAACjiB,KAAKK,cAAc,CAAC;AAE9C;AAEA,8DAA8D;AAC9D,IAAI6hB,kBAAyB,EAAE;AAC/B,8DAA8D;AAC9D,IAAIC,QAAe,EAAE;AACrB,8DAA8D;AAC9D,IAAIC,eAAsB,EAAE;AAC5B,8DAA8D;AAC9D,IAAIC,eAAoBC;AAOjB,6BAA6BljB,KAAU;IAC5C,sCAAsC;IACtCojB,eAAeH,eAAe,GAAG;AACnC;AAEA,8DAA8D;AAC9D,SAASG,eAAeC,SAAc,EAAElmB,CAAS,EAAEmmB,WAAgB;IACjE,IAAI9X,OAAO6X,SAAS,CAACN,KAAK,CAAC5lB,EAAE,CAAC;IAC9B,IAAIomB,iBAAiBD,cAAcP,KAAK,CAAC5lB,EAAE;IAC3C,IAAIA,MAAM4lB,MAAMtnB,MAAM,GAAG,GAAG;QAC1B,QAAItD,mCAAAA,EAAoBqT,OAAO;YAC7BsX,gBAAgBlb,IAAI,CAACsb,eAAeK;QACtC;IACF,OAAO;QACL,IAAIP,YAAY,CAAC7lB,EAAE,EAAE;YACnB,IAAIX,MAAMC,OAAO,CAAC+O,OAAO;gBACvB,IAAK,IAAIgY,IAAI,GAAGA,IAAIhY,KAAK/P,MAAM,EAAE+nB,IAAK;oBACpC,IAAIZ,cAAcpX,IAAI,CAACgY,EAAE,GAAG;wBAC1BJ,eAAe5X,IAAI,CAACgY,EAAE,EAAErmB,IAAI,GAAGomB,iBAAiB,MAAMC,IAAI;oBAC5D;gBACF;YACF;QACF,OAAO,IAAIZ,cAAcpX,OAAO;YAC9B4X,eAAe5X,MAAMrO,IAAI,GAAGomB,iBAAiB;QAC/C;IACF;AACF;AAEA,SAASlS,eAAejB,IAAsC;IAC5D,IAAI,CAACA,MAAM;QACT;IACF;IAEA,IAAIe,cAAoC,CAAC;IACzC,IAAIf,KAAKrW,IAAI,EAAE;QACboX,cAAc;YAAE,GAAGA,WAAW;YAAE,GAAG1X,WAAW,CAAC2W,KAAKrW,IAAI,CAAC;QAAC;IAC5D;IAEA,OAAQqW,KAAKuB,KAAK;QAChB,KAAK;YACH,MAAM8R,YAAY,OAAOrT,KAAKqT,SAAS,KAAK,WAAWrT,KAAKqT,SAAS,GAAG;YACxEtS,YAAYuS,KAAK,GAAGzqB,sBAAAA,CAAgB0qB,OAAO,CAAC,IAAIF,YAAY;YAC5D;QACF,KAAK;YACHtS,YAAYuS,KAAK,GAAG;YACpB;QACF,KAAK;YACHvS,YAAYuS,KAAK,GAAG;YACpB;QACF,KAAK;YACHvS,YAAYuS,KAAK,GAAG;YACpB;QACF;YACEvS,YAAYuS,KAAK,GAAG;IACxB;IAEA,OAAO3iB,OAAO+I,IAAI,CAACqH,aAAa1V,MAAM,GAAG,IAAI0V,cAAcxS;AAC7D;AAEA,yEAAyE;AACzE,MAAM0V,eAAe,CACnBuP,MACAxiB,OACAyiB;IAEA,IAAI,OAAOziB,UAAU,eAAeA,UAAU,MAAM;QAClD,OAAO,CAAC;IACV;IAEA,OAAOyiB,WACFD,KAAoB/C,SAAS,CAAClqB,CAAAA,MAAOA,IAAI4J,QAAQ,CAACa,UAClDwiB,KAA+B/C,SAAS,CACvC,CAAClqB,KAAKsG,QACHmE,SAAoBzK,IAAIqb,EAAE,IAC1B/U,CAAAA,UAAU2mB,KAAKnoB,MAAM,GAAG,IAAK2F,SAAoBzK,IAAIub,EAAE,GAAK9Q,QAAmBzK,IAAIub,EAAAA,AAAE;AAEhG;AAEA,MAAMwC,aAAa,CAAC/d;IAClB,OAAOA,IAAIub,EAAE,GAAIvb,IAAIqb,EAAE;AACzB;AAEA,MAAM4C,eAAe,CAACje;IACpB,OAAQA,CAAAA,IAAIub,EAAE,GAAIvb,IAAIqb,EAAAA,AAAE,IAAK;AAC/B;AAEA,kCAAkC;AAClC,MAAMgC,aAAa,CACjB9V,MACA4lB,UACAC,QACAC;IAEA,IAAI,CAAC9lB,QAAQA,KAAKzC,MAAM,KAAK,GAAG;QAC9B,OAAO,EAAE;IACX;IAEA,QAAIlD,6BAAAA,EAAc2F,OAAO;QACvB,MAAMmiB,aAAa7jB,MAAMqD,IAAI,CAAC,IAAIC,IAAI5B;QACtC,MAAM2F,QAAQ,OAAOigB,aAAa,WAAWtlB,KAAKylB,IAAI,CAACH,YAAY;QACnE,MAAMI,OAAO,OAAOH,WAAW,WAAWvlB,KAAK2lB,KAAK,CAACJ,UAAU,IAAI1D,WAAW5kB,MAAM;QACpF,MAAMkhB,OAAO,OAAOqH,YAAY,WAAWA,UAAU;QAErD,WAAO1sB,cAAAA,EAAQuM,OAAOqgB,MAAMvH,MAAM/f,GAAG,CAACO,CAAAA,IAAKkjB,WAAWjc,KAAK,CAACjH,GAAGA,IAAIwf;IACrE;IAEA,MAAMyH,YAAQ5sB,oBAAAA,IACX6sB,MAAM,KAACvtB,eAAAA,EAAiBoH,OACxBomB,IAAI;IACP,IAAI,CAACC,QAAQC,OAAO,GAAGJ,MAAMC,MAAM;IAEnCE,SAAS,OAAOT,aAAa,WAAWA,WAAWS;IACnDC,SAAS,OAAOT,WAAW,WAAWA,SAASS;IAE/C,MAAMC,mBAAe7tB,YAAAA,IAAQytB,MAAM,CAAC;QAACE;QAAQC;KAAO;IAEpD,IAAI,OAAOR,YAAY,YAAYA,UAAU,GAAG;QAC9C,MAAMU,aAAuB,EAAE;QAC/B,MAAMC,YAAYnmB,KAAKrH,GAAG,KAACc,6BAAAA,EAAmBssB,aAAStsB,6BAAAA,EAAmB+rB;QAC1E,IAAIY,SAAK1sB,yBAAAA,EAAeqsB,QAAQI;QAEhC,MAAOC,KAAK1sB,6BAAAA,EAAessB,SAASR,SAASW,WAAY;YACvDD,WAAW9c,IAAI,CAACgd;YAChBA,SAAK1sB,yBAAAA,EAAe0sB,KAAKZ,SAASW;QACpC;QAEAJ,SAASG,UAAU,CAAC,EAAE;QACtBF,SAASE,UAAU,CAACA,WAAWjpB,MAAM,GAAG,EAAE;QAC1CgpB,aAAaJ,MAAM,CAAC;YAACE;YAAQC;SAAO,EAAEE,UAAU,CAACA;QAEjD,8FAA8F;QAC9F,kGAAkG;QAClG,gFAAgF;QAChF,uEAAuE;QACvE,OAAOD,aAAavmB,MAAkBkG,KAAK,CAAC,GAAG,CAAC;IAClD;IACA,OAAOqgB,aAAavmB;AACtB;AAEA,MAAMoW,oBAAoB,CAACC,UAA4C5d;IACrE,OAAQ4d;QACN,KAAK;YACH,WAAOvd,YAAAA,EAAML;QACf,KAAK;YACH,OAAOA,IAAI8E,MAAM,KAAK,IAAI,QAAIzE,YAAAA,EAAML,OAAOA,IAAI8E,MAAM;QACvD,KAAK;gBACIvE;YAAP,OAAOA,CAAAA,aAAAA,YAAAA,EAAMP,IAAAA,MAAAA,QAANO,WAAAA,KAAAA,IAAAA,SAAc;QACvB,KAAK;gBACIE;YAAP,OAAOA,cAAAA,YAAAA,EAAMT,IAAAA,MAAAA,QAANS,WAAAA,KAAAA,IAAAA,SAAc;QACvB;YACE,OAAOT,IAAI8E,MAAM;IACrB;AACF;AAEA,MAAM+Y,oBAAoB,CACxBC,UACArT,OACA+S,OACA0Q,IACAC,KAAa,CAAC;IAEd,OAAQrQ;QACN,KAAK;YACH,OAAON,UAAU,IAAI,IAAK/S,QAAQ+S,QAAS;QAC7C,KAAK;YACH,OAAOA,UAAU,IAAI,IAAI/S,QAAQ+S;QACnC,KAAK;YACH,OAAO0Q,KAAKC,OAAO,IAAI,IAAI1jB,QAASyjB,CAAAA,KAAKC,EAAAA,CAAC;QAC5C,KAAK;YACH,OAAO3Q,QAAQ0Q,KAAKC,OAAO,IAAI,IAAI1jB,QAAS+S,CAAAA,QAAQ0Q,KAAKC,EAAAA,CAAC;QAC5D;YACE,OAAO1jB;IACX;AACF;AAEA,MAAMmQ,iBAAiB,CAACxW;QACLA,cAGNA;IAHX,MAAMgqB,WAAWhqB,CAAAA,CAAAA,eAAAA,OAAOqV,IAAAA,AAAI,MAAA,QAAXrV,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAahB,IAAAA,AAAI,KAAI;IACtC,IAAIgrB,aAAa,SAASA,aAAa,UAAUA,aAAa,WAAW;QACvE,OAAO;IACT,OAAO,IAAA,CAAIhqB,eAAAA,OAAOqW,IAAI,AAAJA,MAAI,QAAXrW,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAawF,QAAQ,CAAC,YAAY;QAC3C,OAAO;IACT;IACA,OAAO;AACT;AAEO,6BAA6B,CAClCyL,OACA/M,UACAF,cACAkmB,WACA/lB;IAEA,MAAMgmB,eAAyB,EAAE;IACjC,+GAA+G;IAC/G,MAAMC,eAAenZ,MAAM9N,IAAI,CAAC8J,MAAM,CAAC,CAACod,KAAKrqB;QAC3C,OACEqqB,OAAQrqB,OAA6BmU,UAAU,KAAK,QAASnU,OAA6BmU,UAAU,KAAKvQ;IAE7G,GAAG;IAEH,IAAIwmB,cAAc;QAChBnZ,MAAM9N,IAAI,CAACG,OAAO,CAAC,CAACtD,QAAckC;YAChC,IAAIgoB,SAAS,CAAChoB,MAAM,CAACwB,IAAI,KAAK,SAAS;oBAGnCuN,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6BqZ;gBAJ/B,MAAMA,YAAYtqB;oBAEhBiR,2BAEAA;gBAHF,MAAMmB,aAA+ChU,gCAAAA,EACnD6S,CAAAA,4BAAAA,CAAAA,gBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,8BAAAA,KAAAA,IAAAA,4BAAAA,CAA6BA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,eAAcqB,QAAQ,AAARA,MAAQ,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACrEC,cACAiN,CAAAA,6BAAAA,CAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,+BAAAA,KAAAA,IAAAA,6BAA6BqZ,cAAAA,QAAAA,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,oBAAAA,UAAW/X,MAAAA,AAAM,MAAA,QAAjB+X,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAmBlY,MAAM,EACtDlO,UACAC,aACA;gBAGF,QAAI/G,mCAAAA,EAAoBktB,UAAU5X,MAAM,GAAG;oBACzC4X,UAAU5X,MAAM,CAAEpP,OAAO,CAAC,CAACwP,OAAOyX;4BAQ9BtZ,eAA6BA,+BAAAA,wBAAAA;wBAP/B,MAAMqC,SAAS,GAAGR,OAAO;4BAOvB7B;wBANF,0DAA0D;wBAC1D,MAAMhN,YAAgB5F,gCAAAA,EACpB+T,QACAmY,YACAjX,QACApP,UACA+M,CAAAA,4BAAAA,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcoB,WAAAA,AAAW,MAAA,QAAzBpB,8BAAAA,KAAAA,IAAAA,4BAAAA,CAA6BA,iBAAAA,MAAM3R,MAAM,AAANA,MAAM,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gCAAAA,uBAAwB3R,MAAAA,AAAM,MAAA,QAA9B2R,kCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,8BAAgClN,QAAQ,EACrEI,aACA;wBAEF,IAAImP,WAAW,MAAM6W,aAAa5R,IAAI,CAACiS,CAAAA,QAASA,MAAM/qB,KAAK,KAAK6T,YAAY,OAAO;4BACjF6W,aAAatd,IAAI,CAAC;gCAChBpN,OAAO6T;gCACPrP;4BACF;wBACF;oBACF;gBACF;YACF,OAAO,IAAIwmB,cAAcP,SAAS,CAAChoB,MAAM,CAACwB,IAAI,MAAM,OAAO;oBAG3CgnB,kBAA0BA,oBAGtCzZ,gCAAAA,yBAAAA;gBALF,MAAMyZ,aAAa1qB;gBACnB,MAAM+Q,OAAO2Z,WAAWC,WAAW;gBACnC,MAAM1mB,QAAQymB,CAAAA,CAAAA,mBAAAA,WAAWrV,IAAAA,AAAI,MAAA,QAAfqV,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBzmB,KAAAA,AAAK,KAAA,CAAA,CAAIymB,qBAAAA,WAAWnY,MAAAA,AAAM,MAAA,QAAjBmY,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBzmB,KAAAA,AAAK;gBAChE,MAAMsS,cAAcC,eAAekU;gBACnC,MAAME,oBAAgBxsB,gCAAAA,EAAAA,CACpB6S,iBAAAA,MAAM3R,MAAAA,AAAM,MAAA,QAAZ2R,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAcqB,QAAAA,AAAQ,MAAA,QAAtBrB,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kCAAAA,wBAAwB3R,MAAM,AAANA,MAAM,QAA9B2R,mCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,+BAAgClN,QAAQ,EACxCC,cACAC,OACAC,UACAC;gBAEF,IAAI4M,SAASnN,aAAamN,SAAS,MAAMoZ,aAAa5R,IAAI,CAACiS,CAAAA,QAASA,MAAM/qB,KAAK,KAAKsR,UAAU,OAAO;oBACnGoZ,aAAatd,IAAI,CAAC;wBAChBpN,OAAOsR;wBACP9M,OAAO2mB;wBACPhU,OAAOL;oBACT;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACL1C,SAASsW;QACTU,eAAe;QACfC,kBAAkB;QAClBC,0BAA0B;IAC5B;AACF,EAAE;AAEF,MAAMnW,iBAAiB,CAACzR,MAAc7D,QAAqC0Q;IACzE,MAAM6D,UAAoB,EAAE;IAC5B,IAAI1Q,KAAKzC,MAAM,KAAK,GAAG;QACrBmT,QAAQhH,IAAI,CAAC1J,IAAI,CAAC,EAAE,CAAC4N,IAAI,IAAI;IAC/B,OAAO;QACL5N,KAAKG,OAAO,CAAC,CAACtD,QAAQkC;YACpB2R,QAAQhH,IAAI,CAAC7M,OAAO+Q,IAAI,IAAI,CAAC,OAAO,EAAE7O,QAAQ,GAAG;QACnD;IACF;IAEA,MAAM8oB,kBAAkB7nB,KAAKuiB,KAAK,CAAC,CAAC1lB,SAA8BA,OAAOmU,UAAU,KAAK;IACxF,MAAM8W,sBAAsB3rB,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQ6U,UAAAA,AAAU,MAAK,SAAU7U,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQ6U,UAAAA,AAAU,MAAK,QAAQN,QAAQnT,MAAM,GAAG;IAE7G,OAAO;QACLmT;QACAK,YAAYlE,eAAeib,uBAAuBD;IACpD;AACF;AAEO,kCAAkC,CAAC7nB,MAAiCjB;IACzE,QAAI9E,mCAAAA,EAAoB+F,OAAO;QAC7B,IAAI,OAAOA,IAAK,CAACjB,MAAM,KAAK,YAAY,CAAC0E,SAASzD,IAAK,CAACjB,MAAM,GAAa;YACzE;QACF;QAEA,OAAOiB,IAAK,CAACjB,MAAM;IACrB;IAEA,OAAO;AACT,EAAE;AAEK,yBAAyB,CAC9BlC,QACA8W,UACAM;IAEA,IAAI,KAACha,mCAAAA,EAAoB4C,OAAOsE,CAAC,KAAK,KAAClH,mCAAAA,EAAoB4C,OAAOwD,CAAC,GAAG;QACpE,OAAO,EAAE;IACX;IAEA,MAAM0nB,SAA6B,EAAE;IACrC,IAAIpiB,QAAQ;IACZ,IAAIC,MAAM;IACV,MAAOA,MAAM/I,OAAOsE,CAAC,CAAE5D,MAAM,EAAEqI,MAAO;QACpC,QACErL,8BAAAA,EAAesC,OAAOsE,CAAE,CAACyE,IAAI,KAC5B,OAAO+N,aAAa,kBAAcpZ,8BAAAA,EAAeoZ,SAAS9W,OAAOsE,CAAE,CAACyE,IAAI,UACzErL,8BAAAA,EAAesC,OAAOwD,CAAE,CAACuF,IAAI,KAC5B,OAAOqO,aAAa,kBAAc1Z,8BAAAA,EAAe0Z,SAASpX,OAAOwD,CAAE,CAACuF,IAAI,IACzE;YACA,IAAIA,MAAMD,QAAQ,GAAG;gBACnBoiB,OAAOre,IAAI,CAAC;oBAAC/D;oBAAOC;iBAAI;YAC1B;YACAD,QAAQC,MAAM;QAChB;IACF;IACA,IAAIA,MAAMD,QAAQ,GAAG;QACnBoiB,OAAOre,IAAI,CAAC;YAAC/D;YAAOC;SAAI;IAC1B;IAEA,OAAOmiB;AACT,EAAE;AAEF,MAAMC,kBAAkB,CAAC9lB,KAAa+lB;IACpC,MAAMC,gBAAgBhmB,IAAImB,OAAO,CAAC4kB,SAAS,QAAQ,KAAK,MAAM/lB,IAAImB,OAAO,CAAC4kB,SAAS;IACnF,OAAOE,SAASD,eAAe,MAAM;AACvC;AAEO,sBAAsB,CAAC5Q;IAC5B,OAAO;QAAC;QAAS;QAAU;QAAO;KAAa,CAACjV,QAAQ,CAACiV;AAC3D,EAAE;AAEK,0BAA0B,CAC/B+Q,QACAxb,aACAyb;IAEA,MAAMC,UAA4B,EAAE;IACpC,MAAMC,UAA4B,EAAE;IACpC,IAAIC,mBAAmB;IAKvB,MAAM3b,cAA+C,CAAC;IACtD,IAAI4b,eAAe;IACnB,IAAIC,kBAAkB;IACtB,MAAMC,aAAiC,CAAC;IACxC,IAAI,CAAC/b,aAAa;QAChB,OAAO;YAAE6b;YAAcC;YAAiBxsB,QAAQysB;QAAW;IAC7D;IAEA,MAAMzsB,SAASksB,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQlsB,MAAM;IAE7B,IAAIA,WAAWsE,aAAatE,WAAW,QAAQ0G,OAAO+I,IAAI,CAACzP,QAAQoB,MAAM,GAAG,GAAG;QAC7EsF,OAAO+I,IAAI,CAACzP,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU,CAAC,GAAGgE,OAAO,CAAC+B,CAAAA;YAChC,IAAIA,IAAIiD,UAAU,CAAC,UAAU;oBAEXhJ;gBADhB,MAAM4C,QAAQipB,gBAAgB9lB,KAAK;oBACpB;gBAAf,MAAMrC,SAAS,CAAA,qBAAA,CAAC1D,cAAAA,MAAM,CAAC+F,IAAAA,AAA2B,MAAA,QAAlC/F,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAA4D0D,MAAM,AAANA,MAAM,QAAnE,uBAAA,KAAA,IAAA,qBAAuE;gBACtF,MAAMgpB,cAAcb,gBAAgBnoB,QAAQ;gBAC5C,IAAId,UAAU8pB,aAAa;oBACzB,MAAM,IAAIrqB,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAE8pB,cAAc,GAAG;gBAC3F;gBACA,MAAMvhB,cAAcnL,MAAM,CAAC+F,IAA2B;gBACtD,MAAM4mB,cAA8B;oBAClCnjB,OAAO2B,CAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa6e,MAAAA,AAAM,IAAG7e,YAAY6e,MAAM,CAAC,EAAE,GAAG;oBACrDvgB,KAAK0B,CAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa6e,MAAM,AAANA,IAAS7e,YAAY6e,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAoC,QAAQ7e,IAAI,CAACof;YACf,OAAO,IAAI5mB,IAAIiD,UAAU,CAAC,UAAU;oBAElBhJ;gBADhB,MAAM4C,QAAQipB,gBAAgB9lB,KAAK;oBACpB;gBAAf,MAAMrC,SAAS,CAAA,sBAAA,CAAC1D,eAAAA,MAAM,CAAC+F,IAAAA,AAA2B,MAAA,QAAlC/F,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAA4D0D,MAAAA,AAAM,MAAA,QAAnE,wBAAA,KAAA,IAAA,sBAAuE;gBACtF,MAAMgpB,cAAcb,gBAAgBnoB,QAAQ;gBAC5C,IAAId,UAAU8pB,aAAa;wBACiB1sB;oBAA1C,IAAK4C,UAAU,KAAK8pB,gBAAgB,KAAM1sB,CAAAA,CAAAA,iBAAAA,OAAOyD,MAAAA,AAAM,MAAA,QAAbzD,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAe2D,IAAAA,AAAI,MAAK,SAAS;wBACzE,kEAAkE;wBAClE,OAAO;4BAAE4oB;4BAAcC;wBAAgB;oBACzC;oBACA,MAAM,IAAInqB,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAE8pB,cAAc,GAAG;gBAC3F;gBACA,MAAMthB,cAAcpL,MAAM,CAAC+F,IAA2B;gBACtD,MAAM6mB,cAA8B;oBAClCpjB,OAAO4B,CAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa4e,MAAAA,AAAM,IAAG5e,YAAY4e,MAAM,CAAC,EAAE,GAAG;oBACrDvgB,KAAK2B,CAAAA,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa4e,MAAM,AAANA,IAAS5e,YAAY4e,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAqC,QAAQ9e,IAAI,CAACqf;YACf;QACF;IACF;IAEAN,mBAAmBF,QAAQhrB,MAAM,EAAE,uDAAuD;IAC1F+qB,gBAAgBnoB,OAAO,CAAC,CAAC2B,OAAO/C;QAC9B,IAAIuoB,cAAcxlB,MAAMvB,IAAI,GAAG;gBACd8nB,cAENxrB,gBACFA,iBAGEA,iBACFA;YAPP,MAAMA,SAASwrB,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,OAAQroB,IAAAA,AAAI,MAAA,QAAZqoB,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAc,CAACtpB,MAAM;YACpC,MAAM+pB,cAA8B;gBAClCnjB,OAAO9I,CAAAA,CAAAA,iBAAAA,OAAOspB,MAAAA,AAAM,MAAA,QAAbtpB,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAesE,AAAC,IAAGtE,OAAOspB,MAAM,CAAChlB,CAAC,CAAC,EAAE,GAAG;gBAC/CyE,KAAK/I,CAAAA,CAAAA,kBAAAA,OAAOspB,MAAAA,AAAM,MAAA,QAAbtpB,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAesE,AAAC,IAAGtE,OAAOspB,MAAM,CAAChlB,CAAC,CAAC,EAAE,GAAG;YAC/C;YACA,MAAM4nB,cAA8B;gBAClCpjB,OAAO9I,CAAAA,CAAAA,kBAAAA,OAAOspB,MAAAA,AAAM,MAAA,QAAbtpB,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAewD,CAAC,IAAGxD,OAAOspB,MAAM,CAAC9lB,CAAC,CAAC,EAAE,GAAG;gBAC/CuF,KAAK/I,CAAAA,CAAAA,kBAAAA,OAAOspB,MAAAA,AAAM,MAAA,QAAbtpB,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAewD,AAAC,IAAGxD,OAAOspB,MAAM,CAAC9lB,CAAC,CAAC,EAAE,GAAG;YAC/C;YACAkoB,QAAQ7e,IAAI,CAACof;YACbN,QAAQ9e,IAAI,CAACqf;QACf;IACF;IAEA,IAAI5sB,WAAWsE,aAAatE,WAAW,QAAQ0G,OAAO+I,IAAI,CAACzP,QAAQoB,MAAM,GAAG,GAAG;YAC7EpB;SAAAA,sBAAAA,OAAO2Q,WAAAA,AAAW,MAAA,QAAlB3Q,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBgE,OAAO,CAACkG,CAAAA;YAC1B,MAAM2iB,WAAWT,QAAQ1mB,OAAO,CAAC,CAAConB,UAAU9E,MAC1C,CAAC9d,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAYlF,AAAC,KAAe8nB,SAAStjB,KAAK,IAAI,CAACU,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,AAADlF,KAAgB8nB,SAASrjB,GAAG,GAAG;oBAACue;iBAAI,GAAG,EAAE;YAEvG,MAAM+E,SAASV,QAAQ7F,SAAS,CAC9B,CAACsG,UAAUE,SACTH,SAAS3mB,QAAQ,CAAC8mB,WAClB,CAAC9iB,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYhG,CAAC,KAAe4oB,SAAStjB,KAAK,IAC3C,CAACU,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,AAADhG,KAAgB4oB,SAASrjB,GAAG;YAG7C,IAAIsjB,WAAW,CAAC,GAAG;gBACjB,IAAIpc,WAAW,CAACoc,OAAO,KAAKzoB,WAAW;oBACrCqM,WAAW,CAACoc,OAAO,GAAG,CAAC;gBACzB;gBACA,IAAI,CAAC7iB,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYoF,SAAAA,AAAS,MAAgB,IAAI;oBAC5CqB,WAAW,CAACoc,OAAO,CAACE,WAAW,GAAG/iB,WAAW9J,IAAI;gBACnD,OAAO;oBACLuQ,WAAW,CAACoc,OAAO,CAACG,WAAW,GAAGhjB,WAAW9J,IAAI;gBACnD;YACF;QACF;IACF;IAEA,IAAIgsB,QAAQhrB,MAAM,GAAG,GAAG;QACtB,MAAM+rB,mBAAmB,IAAIC;QAC7BhB,QAAQpoB,OAAO,CAAC8oB,CAAAA;YACd,MAAM/mB,MAAM,GAAG+mB,SAAStjB,KAAK,CAAC,CAAC,EAAEsjB,SAASrjB,GAAG,EAAE;YAC/C,IAAI,CAAC0jB,iBAAiBE,GAAG,CAACtnB,MAAM;gBAC9BonB,iBAAiBG,GAAG,CAACvnB,KAAK+mB;YAC5B;QACF;QACA,MAAMS,eAAeprB,MAAMqD,IAAI,CAAC2nB,iBAAiB9kB,MAAM,IACpD9F,GAAG,CAACuqB,CAAAA,WAAYA,SAAStjB,KAAK,EAC9BoK,IAAI;QAEP4Y,kBAAkB,CAAC,OAAO,EAAEe,aAAansB,MAAM,CAAC,MAAM,CAAC;QAEvDgrB,QAAQpoB,OAAO,CAAC,CAAC8oB,UAAUlqB;YACzB,MAAM4qB,WACJ5qB,SAAS0pB,mBACL,GAAGptB,sBAAsB0D,QAAQ0pB,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAE1pB,UAAU,IAAI,KAAKA,QAAQ,GAAG;YAEzC,MAAM6qB,cAAcF,aAAa/G,SAAS,CAAChd,CAAAA,QAASA,UAAUsjB,SAAStjB,KAAK;YAC5E,MAAMkkB,eAAeD,cAAc,GAAG,6BAA6B;YAEnE,MAAME,kBAAkBhd,WAAW,CAAC/N,MAAM;YAC1C,MAAMsqB,cAAcS,oBAAAA,QAAAA,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAiBT,WAAW;YAEhD,MAAMxN,MAAsB;gBAC1BA,KAAK,CAAC;gBACNkO,QAAQF;gBACRR;gBACAW,SAASf;gBACTgB,SAAS;oBAAEtkB,OAAO;oBAAGC,KAAK;gBAAE;YAC9B;YACAgjB,UAAU,CAACe,SAAS,GAAG9N;QACzB;IACF;IACA,IAAI2M,QAAQjrB,MAAM,GAAG,GAAG;QACtB,MAAM2sB,mBAAmB,IAAIX;QAC7Bf,QAAQroB,OAAO,CAAC8oB,CAAAA;YACd,MAAM/mB,MAAM,GAAG+mB,SAAStjB,KAAK,CAAC,CAAC,EAAEsjB,SAASrjB,GAAG,EAAE;YAC/C,IAAI,CAACskB,iBAAiBV,GAAG,CAACtnB,MAAM;gBAC9BgoB,iBAAiBT,GAAG,CAACvnB,KAAK+mB;YAC5B;QACF;QACA,MAAMkB,eAAe7rB,MAAMqD,IAAI,CAACuoB,iBAAiB1lB,MAAM,IACpD9F,GAAG,CAACuqB,CAAAA,WAAYA,SAAStjB,KAAK,EAC9BoK,IAAI;QAEP,MAAMoK,eAAegQ,aAAa5sB,MAAM;QAExCmrB,eAAe,CAAC,OAAO,EAAEvO,aAAa,MAAM,CAAC;QAC7CqO,QAAQroB,OAAO,CAAC,CAAC8oB,UAAUlqB;YACzB,MAAM4qB,WACJ5qB,SAAS0pB,mBACL,GAAGptB,sBAAsB0D,QAAQ0pB,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAE1pB,UAAU,IAAI,KAAKA,QAAQ,GAAG;YACzC,MAAMohB,WAAWgK,aAAaxH,SAAS,CAAChd,CAAAA,QAASA,UAAUsjB,SAAStjB,KAAK;YACzE,MAAMykB,YAAYjQ,eAAegG,UAAU,iEAAiE;YAE5G,MAAM2J,kBAAkBhd,WAAW,CAAC/N,MAAM;YAC1C,MAAMqqB,cAAcU,oBAAAA,QAAAA,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAiBV,WAAW;YAEhD,MAAMvI,OAAO+H,UAAU,CAACe,SAAS;YAEjC,IAAI9I,SAASpgB,WAAW;gBACtBogB,KAAKhF,GAAG,GAAGuO;gBACXvJ,KAAKuI,WAAW,GAAGA;gBACnBvI,KAAKoJ,OAAO,GAAGhB;YACjB;QACF;IACF;IAEA,OAAO;QACLP;QACAC;QACAxsB,QAAQysB;IACV;AACF,EAAE;AAIF;;CAEC,GACD,MAAM9T,4BAA4B,CAAC9U,MAAc7D;IAC/C,MAAMkuB,SAA0C,CAAC;IAEjD,MAAMC,WAA4D;QAChEnpB,CAAC,EAAEhF,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQM,KAAK;QAChB4D,CAAC,EAAElE,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQQ,KAAK;IAClB;IACAkG,OAAO+I,IAAI,CAAC0e,UAAUnqB,OAAO,CAACoqB,CAAAA;QAC5B,MAAMhhB,KAAK+gB,QAAQ,CAACC,KAAK;QACzB,MAAMC,WAAWD,IAAI,CAAC,EAAE;QACxB,MAAME,WAAW,GAAGD,SAAS,iBAAiB,CAAC;QAE/C,MAAMhmB,SAAkB,EAAE;QAC1BxE,KAAKG,OAAO,CAAC,CAACtD;gBACZA;aAAAA,mBAAAA,MAAM,CAAC2tB,SAAAA,AAAS,MAAA,QAAhB3tB,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAkBsD,OAAO,CAACyT,CAAAA;gBACxB,IAAI,CAACrZ,kCAAAA,EAAeqZ,MAAM;oBACxBpP,OAAOkF,IAAI,CAACkK;gBACd;YACF;QACF;QAEA,MAAM8W,qBACJnhB,CAAAA,OAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAAA,IAAAA,GAAIhJ,IAAAA,AAAI,MAAK,kBAAelG,6BAAAA,EAAcmK,WAAW,KAACpK,6BAAAA,EAAcoK,WAAW,KAACrK,2BAAAA,EAAYqK;QAC9F,IAAI,CAACkmB,oBAAoB;YACvBL,MAAM,CAACI,SAAS,GAAG;YACnB;QACF;QAEA,MAAME,mBAAe1wB,mCAAAA,EAAoBsP,OAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAAA,IAAAA,GAAIqhB,aAAa,KAAKrhB,GAAIqhB,aAAa,CAAErtB,MAAM,GAAG;QAC3F,IAAIotB,gBAAiB,CAAA,EAACphB,OAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAAA,IAAAA,GAAIshB,aAAAA,AAAa,KAAIthB,GAAGshB,aAAa,KAAK,OAAA,CAAM,EAAI;YACxER,MAAM,CAACI,SAAS,GAAGlhB,GAAIqhB,aAAa;YACpC;QACF;QAEA,IAAI,CAACrhB,QAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAAA,IAAAA,GAAIshB,aAAAA,AAAa,KAAIthB,GAAGshB,aAAa,KAAK,WAAWthB,GAAGshB,aAAa,KAAK,SAAS;YACtF,MAAMC,yBAAyBxsB,MAAMqD,IAAI,CAAC,IAAIC,IAAI4C;YAClD6lB,MAAM,CAACI,SAAS,GAAGlhB,CAAAA,OAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAAA,IAAAA,GAAIwhB,SAAAA,AAAS,MAAK,aAAaD,uBAAuBla,OAAO,KAAKka;YACrF;QACF;QAEAT,MAAM,CAACI,SAAS,GAAGlhB,GAAGshB,aAAa;IACrC;IAEA,OAAOR;AACT;AAEA,MAAMtV,cAAc,CAClB/U,MACA7D,QACA6uB;IAIA,IAAIhgB;IAEJ,IAAI,QAAO7O,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQ8uB,MAAAA,AAAM,MAAK,UAAU;QACtC,IAAI9uB,OAAO8uB,MAAM,IAAI,KAAK9uB,OAAO8uB,MAAM,IAAI,GAAG;YAC5CjgB,UAAU7O,OAAO8uB,MAAM;QACzB,OAAO;YACL,+KAA+K;YAC/K,wFAAwF;YACxF,sDAAsD;YACtDjgB,UAAU;QACZ;IACF;IAEA,MAAMkgB,kBAAkBlrB,KACrBtB,GAAG,CAAC,CAAC7B;QACJ,IAAIA,OAAO0D,IAAI,KAAK,SAAUtG,KAAAA,mCAAAA,EAAoB4C,OAAO0N,KAAK,KAAK,OAAO1N,OAAO0N,KAAK,KAAK,QAAA,CAAO,EAAI;YACpG,OAAO1N,OAAO0N,KAAK;QACrB;QACA,OAAO,EAAE;IACX,GACCvI,IAAI;IACP,MAAMmpB,wBAAoBjyB,YAAAA,EAAMgyB;IAChC,IAAI,OAAOC,sBAAsB,UAAU;QACzCngB,UAAU,IAAImgB;QACdngB,UAAU1K,KAAKrH,GAAG,CAAC,GAAGqH,KAAKvH,GAAG,CAACiS,SAAS;IAC1C;IAEA,IAAI,OAAOA,YAAY,aAAa;QAClC,OAAO,CAAC;IACV;IAEA,IAAIggB,cAAc;QAChB,OAAO;YACLI,cAAc;YACdC,cAAcrgB;QAChB;IACF;IAEA,OAAO;QACLsJ,UAAU;QACVsC,aAAa;QACb0U,mBAAmBtgB;QACnBugB,mBAAmBvgB,UAAU;IAC/B;AACF;AAIA,MAAM0O,wBAAwB,CAAC1Z,MAAc7D;QAKvCqvB,gBAGAA,gBAGAA;IAVJ,MAAMnB,SAAsC,CAAC;IAE7C,MAAMmB,cAAc1Z,eAAe9R,MAAM7D;IAEzC,IAAIqvB,CAAAA,kBAAAA,YAAYrqB,CAAC,MAAA,QAAbqqB,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAejrB,IAAAA,AAAI,MAAK,OAAO;QACjC8pB,OAAOoB,UAAU,GAAG;IACtB;IACA,IAAID,CAAAA,kBAAAA,YAAYnrB,CAAC,MAAA,QAAbmrB,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAejrB,IAAAA,AAAI,MAAK,OAAO;QACjC8pB,OAAOqB,UAAU,GAAG;IACtB;IACA,IAAIF,CAAAA,mBAAAA,YAAYG,EAAAA,AAAE,MAAA,QAAdH,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAgBjrB,IAAAA,AAAI,MAAK,OAAO;QAClC8pB,OAAOuB,mBAAmB,GAAG;IAC/B;IAEA,OAAOvB;AACT;AAOA;;CAEC,GACD,MAAMrV,mBAAmB,CAAChV,MAAc7D;IACtC,MAAM0vB,QAAgC,CAAC;IACvC,MAAML,cAAc1Z,eAAe9R,MAAM7D;IAEzC0G,OAAO+I,IAAI,CAAC4f,aAAarrB,OAAO,CAACoqB,CAAAA;QAC/B,MAAMhhB,KAAKiiB,WAAW,CAACjB,KAAK;QAC5B,IAAI,CAAChhB,IAAI;YACP;QACF;QAEA,MAAMuiB,SAASja,YAAY7R,MAAMuJ;QAEjC,IAAK,CAAA,CAACA,GAAGwiB,QAAQ,IAAIxiB,GAAGwiB,QAAQ,KAAK,OAAA,CAAM,QAAM9xB,mCAAAA,EAAoBsP,GAAGyiB,QAAQ,GAAG;YACjF,MAAMC,aAAaH,WAAW,SAASviB,GAAGyiB,QAAQ,CAAEttB,GAAG,CAAC,CAACoS,IAA8B,IAAI1S,KAAK0S,MAAMvH,GAAGyiB,QAAQ;YAEjH,IAAIzB,SAAS,KAAK;gBAChBsB,MAAMI,UAAU,GAAGA;gBACnBJ,MAAM/uB,KAAK,GAAG;oBACZovB,UAAU3iB,GAAG4iB,QAAQ;gBACvB;YACF,OAAO,IAAI5B,SAAS,KAAK;gBACvBsB,MAAMO,eAAe,GAAGH;gBACxBJ,MAAM1uB,KAAK,GAAG;oBACZ+uB,UAAU3iB,GAAG4iB,QAAQ;gBACvB;YACF;YACA;QACF;QAEA,IAAK,CAAA,CAAC5iB,GAAGwiB,QAAQ,IAAIxiB,GAAGwiB,QAAQ,KAAK,QAAA,CAAO,IAAMxiB,GAAG8iB,KAAK,EAAE;YAC1D,MAAMA,QAAQC,YAAY/iB,GAAG8iB,KAAK,EAAEP;YACpC,MAAMS,QAAQC,YAAYjjB,GAAGgjB,KAAK,EAAET,QAAQO;YAE5C,IAAI9B,SAAS,KAAK;gBAChBsB,MAAM/uB,KAAK,GAAG;oBACZ2vB,UAAUJ;oBACVE;gBACF;YACF,OAAO,IAAIhC,SAAS,KAAK;gBACvBsB,MAAM1uB,KAAK,GAAG;oBACZsvB,UAAUJ;oBACVE;gBACF;YACF;YACA;QACF;QAEA,IAAK,CAAA,CAAChjB,GAAGwiB,QAAQ,IAAIxiB,GAAGwiB,QAAQ,KAAK,MAAA,CAAK,IAAM,OAAOxiB,GAAGmjB,MAAM,KAAK,YAAYnjB,GAAGmjB,MAAM,IAAI,GAAG;YAC/F,IAAInC,SAAS,KAAK;gBAChBsB,MAAMc,cAAc,GAAGpjB,GAAGmjB,MAAM;YAClC,OAAO,IAAInC,SAAS,KAAK;gBACvBsB,MAAMe,cAAc,GAAGrjB,GAAGmjB,MAAM;YAClC;QACF;IACF;IAEA,OAAOb;AACT;AAEA;;CAEC,GACD,MAAMS,cAAc,CAACD,OAA+BP;IAClD,MAAMe,UAAUf,WAAW;IAC3B,MAAMgB,WAAWhB,WAAW;IAC5B,MAAMiB,UAAUjB,WAAW;IAC3B,MAAMkB,YAAYF,WAAW,WAAW;IAExC,IAAI,CAACT,OAAO;QACV,OAAOW;IACT;IAEA,QAAIvyB,wBAAAA,EAAS4xB,QAAQ;QACnBA,QAAQ7oB,OAAO6oB;QACf,IAAIA,SAAS,GAAG;YACd,OAAOW;QACT;QACA,IAAID,SAAS;YACX,2CAA2C;YAC3C,OAAOzsB,KAAKrH,GAAG,CAAC,GAAGqH,KAAKwa,KAAK,CAACuR;QAChC;QACA,IAAIS,UAAU;YACZ,4DAA4D;YAC5D,OAAOxsB,KAAKrH,GAAG,CAAC,KAAKozB;QACvB;QACA,OAAOA;IACT;IAEA,IAAI,OAAOA,UAAU,YAAY,CAAES,CAAAA,YAAYD,OAAAA,CAAM,EAAI;QACvD,OAAOG;IACT;IAEA,MAAMrqB,SAAS0pB,MAAMY,MAAM,CAAC;IAC5B,MAAMC,eAAWzyB,wBAAAA,EAAS4xB,MAAMnmB,KAAK,CAAC,MAAM1C,OAAO6oB,MAAMnmB,KAAK,CAAC,MAAM;IAErE,IACEgnB,YAAY,KACZ,CACE,AAEGJ,aAAYnqB,WAAW,OAAOuqB,aAAa5sB,EAFA,GAEKwa,KAAK,CAACoS,aACvD,+EAA+E;IAC9EL,WAAWlqB,WAAW,OACvB,iFAAiF;IAChFkqB,WAAWlqB,WAAW,OAAQuqB,CAAAA,aAAa,KAAKA,cAAa,CAAA,CAAE,EAGpE;QACA,OAAOF;IACT;IAEA,OAAOX;AACT;AAEA;;CAEC,GACD,MAAMG,cAAc,CAACD,OAAoCT,QAA8BO;IACrF,IAAIP,WAAW,QAAQ;QACrB,WAAO5xB,sBAAAA,EAAOqyB,SAAS,IAAInuB,KAAKmuB,SAAU,IAAInuB,KAAKzE,8BAAAA;IACrD;IACA,IAAI0yB,UAAU,QAAQA,UAAU,MAAM;QACpC,wCAAwC;QACxC,OAAO5rB;IACT;IACA,8CAA8C;IAC9C,WAAOhG,wBAAAA,EAAS8xB,SAAS/oB,OAAO+oB,SAAS;AAC3C;AAMA,MAAMza,iBAAiB,CAAC9R,MAAc7D;IACpC,gGAAgG;IAChG,gGAAgG;IAChG,iCAAiC;IACjC,IAAIgxB;IACJ,MAAMC,WAAW,IAAIxrB;IACrB5B,KAAKG,OAAO,CAAC,CAACtD;QACZ,MAAMwwB,cAAU1yB,0BAAAA,EAAWkC;QAC3BswB,UAAUE,QAAQlsB,CAAC;QACnBisB,SAAS3f,GAAG,CAAC4f,QAAQhtB,CAAC;IACxB;IAEA,MAAMitB,iBAAiB,CAAC9C,UAAqBD,OAA8B,CAAA;eACtEpuB,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,MAAQ,KAACvB,0BAAAA,EAAW4vB,UAAUD,MAAjC;YACAgD,KAAK,GAAG/C,WAAWD,OAAO,IAAIA,OAAO,IAAI;SAC3C,CAAA;IAEA,MAAMiB,cAA0C,CAAC;IAEjD,IAAI,OAAO2B,YAAY,UAAU;QAC/B3B,YAAYrqB,CAAC,GAAGmsB,eAAe,KAAKH;IACtC;IAEA,MAAMK,iBAAiBlvB,MAAMqD,IAAI,CAACyrB,UAAUrd,IAAI;IAChD,IAAIyd,eAAejwB,MAAM,GAAG,GAAG;QAC7BiuB,YAAYnrB,CAAC,GAAGitB,eAAe,KAAKE,cAAc,CAAC,EAAE;IACvD;IACA,IAAIA,eAAejwB,MAAM,GAAG,GAAG;QAC7BiuB,YAAYG,EAAE,GAAG2B,eAAe,KAAKE,cAAc,CAAC,EAAE;IACxD;IAEA,OAAOhC;AACT;AAEA,MAAM3Z,cAAc,CAAC7R,MAAcuJ;IACjC,IAAI,CAACA,IAAI;QACP,OAAO;IACT;QAEmDA;IAAnD,IAAI;QAAC;QAAU;QAAO;QAAQ;KAAW,CAAClH,QAAQ,CAACkH,CAAAA,WAAAA,GAAGhJ,IAAAA,AAAI,MAAA,QAAPgJ,aAAAA,KAAAA,IAAAA,WAAW,KAAK;QACjE,OAAOA,GAAGhJ,IAAI;IAChB;IAEA,MAAMiqB,WAAWjhB,GAAGgkB,GAAG,CAAC,EAAE;IAC1B,MAAM/oB,SAAkB,EAAE;IAC1BxE,KAAKG,OAAO,CAAC,CAACtD;QACZ,MAAM0tB,OAAO1tB,MAAM,CAAC,GAAG2tB,SAAS,IAAI,CAAC,CAAC;QACtC,IAAKD,CAAAA,SAAShhB,GAAGgkB,GAAG,IAAK,CAAChD,QAAQhhB,GAAGgkB,GAAG,KAAK/C,QAAAA,CAAQ,IAAMvwB,uCAAAA,EAAoB4C,MAAM,CAAC2tB,SAAS,GAAG;YAChG3tB,MAAM,CAAC2tB,SAAS,CAAErqB,OAAO,CAACyT,CAAAA;gBACxB,IAAI,KAACrZ,8BAAAA,EAAeqZ,MAAM;oBACxBpP,OAAOkF,IAAI,CAACkK;gBACd;YACF;QACF;IACF;IAEA,QAAIxZ,6BAAAA,EAAcoK,WAAW,CAAClK,+BAAAA,EAAYkK,SAAS;QACjD,OAAO;IACT;IACA,QAAIrK,2BAAAA,EAAYqK,SAAS;QACvB,OAAO;IACT;IACA,OAAO;AACT;AAEA,MAAMoN,uBAAuB,CAACka,QAAkB2B;IAC9C,MAAMC,SAAS,CAACxqB;QACd,MAAMpE,OAAO2uB,aAAaA,WAAWvqB,SAAS,IAAI9E,KAAK8E;QACvD,OAAO0B,MAAM9F,KAAKyG,OAAO,MAAM,OAAOzG;IACxC;IAEA,OAAO,CAACoE;QACN,QAAI3I,8BAAAA,EAAe2I,QAAQ;YACzB,OAAO;QACT;QAEA,OAAQ4oB;YACN,KAAK;YACL,KAAK;gBACH,OAAOrxB,4BAAAA,EAASyI,SAAS,CAACA,QAAS;YAErC,KAAK;gBACH,QAAIzI,wBAAAA,EAASyI,QAAQ;oBACnB,OAAOwqB,OAAO,CAACxqB;gBACjB;gBACA,IAAI,OAAOA,UAAU,UAAU;oBAC7B,OAAOwqB,OAAOxqB;gBAChB;gBACA,OAAO;YAET,KAAK;gBACH,OAAO,GAAGA,OAAO;YAEnB;gBACE,OAAO;QACX;IACF;AACF;AAEA;;CAEC,GACD,MAAMyqB,eAAe;AAErB;;;;;;;;CAQC,GACD,MAAMlT,iBAAiB,CAACvX;IACtB,IAAI,OAAOA,UAAU,UAAU;QAC7B,MAAMY,QAAQZ,MAAMY,KAAK,CAAC6pB;QAC1B,IAAI7pB,OAAO;YACT,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;gBACbZ,SAAS;YACX,OAAO,IAAIY,KAAK,CAAC,EAAE,EAAE;gBACnBZ,QAAQA,MAAMG,OAAO,CAAC,KAAK;YAC7B;QACF;IACF;IACA,OAAO,IAAIjF,KAAK8E;AAClB"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n ScatterChartPoints,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport type { AnnotationOnlyChartProps } from '../AnnotationOnlyChart/AnnotationOnlyChart.types';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n Shape,\n Annotations,\n PolarLayout,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n isScatterAreaChart,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\nimport { PolarAxisProps, PolarChartProps } from '../PolarChart/PolarChart.types';\nimport {\n ChartAnnotation,\n ChartAnnotationArrowHead,\n ChartAnnotationLayoutProps,\n ChartAnnotationStyleProps,\n ChartAnnotationHorizontalAlign,\n ChartAnnotationVerticalAlign,\n} from '../../types/ChartAnnotation';\nimport type { TitleStyles } from '../../utilities/Common.styles';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\ntype ExtDomainInterval = DomainInterval & {\n cellName: string;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titleObj = layout?.title;\n const chartTitle = typeof titleObj === 'string' ? titleObj : titleObj?.text ?? '';\n const titleFont = typeof titleObj === 'object' ? titleObj?.font : undefined;\n const titleXAnchor = typeof titleObj === 'object' ? titleObj?.xanchor : undefined;\n const titleYAnchor = typeof titleObj === 'object' ? titleObj?.yanchor : undefined;\n const titlePad = typeof titleObj === 'object' ? titleObj?.pad : undefined;\n\n const titleStyles: TitleStyles = {\n ...(titleFont ? { titleFont } : {}),\n ...(titleXAnchor ? { titleXAnchor } : {}),\n ...(titleYAnchor ? { titleYAnchor } : {}),\n ...(titlePad ? { titlePad } : {}),\n };\n\n const titles = {\n chartTitle,\n ...(Object.keys(titleStyles).length > 0 ? { titleStyles } : {}),\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n xAxisAnnotation: chartTitle,\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getXMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getXAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n xMinValue: range[0],\n xMaxValue: range[1],\n showRoundOffXTickValues: false,\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (data: Data[], layout: Partial<Layout> | undefined): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n let allLineSeries = true;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n\n if (series.type !== 'scatter' || isScatterAreaChart(series)) {\n allLineSeries = false;\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (!allLineSeries) {\n if (typeof yMinValue === 'number') {\n yMinValue = Math.min(yMinValue, 0);\n }\n if (typeof yMaxValue === 'number') {\n yMaxValue = Math.max(yMaxValue, 0);\n }\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.RefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, colorway, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\n/**\n * Formats text values according to the texttemplate specification\n * Supports D3 format specifiers within %{text:format} patterns\n * @param textValue The raw text value to format\n * @param textTemplate The template string (e.g., \"%{text:.1f}%\", \"%{text:.2%}\", \"%{text:,.0f}\")\n * @param index Optional index for array-based templates\n * @returns Formatted text string\n *\n * Examples:\n * - \"%{text:.1f}%\" → Formats number with 1 decimal place and adds % suffix\n * - \"%{text:.2%}\" → Formats as percentage with 2 decimal places\n * - \"%{text:,.0f}\" → Formats with thousands separator and no decimals\n * - \"%{text:$,.2f}\" → Formats as currency with thousands separator and 2 decimals\n */\nconst formatTextWithTemplate = (\n textValue: string | number,\n textTemplate?: string | string[],\n index?: number,\n): string => {\n if (!textTemplate) {\n return String(textValue);\n }\n const numVal = typeof textValue === 'number' ? textValue : parseFloat(String(textValue));\n if (isNaN(numVal)) {\n return String(textValue);\n }\n const template = typeof textTemplate === 'string' ? textTemplate : textTemplate[index || 0] || '';\n\n // Match Plotly's texttemplate pattern: %{text:format} or %{text}\n // Can be followed by any literal text like %, $, etc.\n const plotlyPattern = /%\\{text(?::([^}]+))?\\}(.*)$/;\n const match = template.match(plotlyPattern);\n\n if (match) {\n const formatSpec = match[1]; // The format specifier (e.g., \".1f\", \".2%\", \",.0f\") or undefined\n const suffix = match[2]; // Any text after the closing brace (e.g., \"%\", \" units\")\n\n // If no format specifier is provided (e.g., %{text}%), try to infer from suffix\n if (!formatSpec) {\n // Check if suffix starts with % - assume simple percentage with 1 decimal\n if (suffix.startsWith('%')) {\n return `${numVal.toFixed(1)}${suffix}`;\n }\n // No format specifier, just return the number with the suffix\n return `${numVal}${suffix}`;\n }\n\n try {\n // Use D3 format function to apply the format specifier\n const formatter = d3Format(formatSpec);\n const formattedValue = formatter(numVal);\n return `${formattedValue}${suffix}`;\n } catch (error) {\n // Try to extract precision for basic fallback\n const precisionMatch = formatSpec.match(/\\.(\\d+)[f%]/);\n const precision = precisionMatch ? parseInt(precisionMatch[1], 10) : 2;\n\n // Check if it's a percentage format\n if (formatSpec.includes('%')) {\n return `${(numVal * 100).toFixed(precision)}%${suffix}`;\n }\n\n return `${numVal.toFixed(precision)}${suffix}`;\n }\n }\n\n return String(textValue);\n};\n\n/**\n * Extracts unique X-axis categories from Plotly data traces\n * @param data Array of Plotly data traces\n * @returns Array of unique x values\n */\nconst extractXCategories = (data: Data[] | undefined): Datum[] => {\n return Array.from(\n new Set(\n (data ?? [])\n .flatMap(trace => {\n const xData = (trace as Partial<PlotData>).x;\n if (!xData) {\n return [];\n }\n if (Array.isArray(xData)) {\n return xData.flat().map(x => {\n return x;\n });\n }\n return [];\n })\n .filter(x => x !== undefined && x !== null),\n ),\n );\n};\n\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\ntype PlotlyAnnotation = Partial<Annotations> | null | undefined;\n\nconst encodeHtmlEntities = (value: string): string =>\n value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\nconst toFiniteNumber = (value: unknown): number | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n const numeric = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n};\n\ntype AxisRefType = 'axis' | 'relative' | 'pixel' | undefined;\n\ntype ParsedAxisRef = {\n refType: AxisRefType;\n axisId: number;\n};\n\n/**\n * Parses Plotly axis references (e.g. `x`, `x2`, `xaxis2`, `paper`, `pixel`, `x domain`) into a ref type + axis id.\n */\nconst parseAxisRef = (ref: string | undefined, axis: 'x' | 'y'): ParsedAxisRef => {\n if (!ref) {\n return { refType: 'axis', axisId: 1 };\n }\n\n const normalized = ref.toLowerCase().trim();\n if (normalized === 'pixel') {\n return { refType: 'pixel', axisId: 1 };\n }\n if (normalized === 'paper') {\n return { refType: 'relative', axisId: 1 };\n }\n if (normalized.endsWith(' domain')) {\n return normalized.startsWith(axis) ? { refType: 'relative', axisId: 1 } : { refType: undefined, axisId: 1 };\n }\n\n const match = normalized.match(/^([xy])(axis)?(\\d*)$/);\n if (!match || match[1] !== axis) {\n return { refType: undefined, axisId: 1 };\n }\n\n const suffix = match[3];\n if (!suffix || suffix === '1') {\n return { refType: 'axis', axisId: 1 };\n }\n\n const parsed = Number(suffix);\n return { refType: 'axis', axisId: Number.isFinite(parsed) && parsed >= 1 ? parsed : 1 };\n};\n\n/**\n * Converts Plotly's bottom-origin relative Y coordinate into the SVG top-origin space used by our overlay.\n */\nconst transformRelativeYForChart = (value: number | undefined): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n return undefined;\n }\n return 1 - value;\n};\n\nconst mapHorizontalAlign = (anchor?: string): ChartAnnotationHorizontalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n default:\n return undefined;\n }\n};\n\nconst mapVerticalAlign = (anchor?: string): ChartAnnotationVerticalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'top':\n return 'top';\n case 'middle':\n return 'middle';\n case 'bottom':\n return 'bottom';\n default:\n return undefined;\n }\n};\n\nconst appendPx = (value: unknown): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return `${value}px`;\n }\n return undefined;\n};\n\n/**\n * Maps Plotly's axis reference string to one of our coordinate interpretation modes (axis, relative, or pixel).\n */\nconst resolveRefType = (ref: string | undefined, axis: 'x' | 'y'): AxisRefType => {\n if (!ref) {\n return 'axis';\n }\n const parsed = parseAxisRef(ref, axis);\n if (parsed.refType !== 'axis') {\n return parsed.refType;\n }\n const normalized = (ref ?? '').toLowerCase().trim();\n const match = normalized.match(/^([xy])(\\d*)$/);\n return match && match[1] === axis ? 'axis' : undefined;\n};\n\n/**\n * Retrieves the appropriate axis layout section from Plotly's layout given an axis reference alias.\n */\nconst getAxisLayoutByRef = (\n layout: Partial<Layout> | undefined,\n ref: string | undefined,\n axis: 'x' | 'y',\n): Partial<LayoutAxis> | undefined => {\n if (!layout) {\n return undefined;\n }\n const defaultAxisKey = `${axis}axis` as 'xaxis' | 'yaxis';\n const { refType, axisId } = parseAxisRef(ref, axis);\n\n if (refType !== 'axis' || axisId === 1) {\n return layout[defaultAxisKey];\n }\n\n const axisKey = `${axis}axis${axisId}` as keyof Layout;\n return layout[axisKey] as Partial<LayoutAxis> | undefined;\n};\n\nconst convertAnnotationDataValue = (value: unknown, axisType: AxisType): string | number | Date | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (axisType === 'date') {\n const dateValue = value instanceof Date ? value : new Date(value as string | number);\n return Number.isNaN(dateValue.getTime()) ? undefined : dateValue;\n }\n\n if (axisType === 'linear' || axisType === 'log') {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n\n // For category-like axes, preserve raw strings (and avoid date parsing heuristics).\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'number' || typeof value === 'string') {\n return value;\n }\n return undefined;\n};\n\nconst createAnnotationId = (text: string, index: number): string => {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (normalized) {\n const slug = normalized\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 32);\n if (slug) {\n return `annotation-${index}-${slug}`;\n }\n }\n return `annotation-${index}`;\n};\n\nconst DEFAULT_ARROW_OFFSET = -40;\n\nconst mapArrowsideToArrow = (annotation: PlotlyAnnotation): ChartAnnotationArrowHead => {\n let includeStart = false;\n let includeEnd = false;\n\n const arrowSide = typeof annotation?.arrowside === 'string' ? annotation?.arrowside.toLowerCase() : undefined;\n if (arrowSide) {\n includeStart = arrowSide.includes('start');\n includeEnd = arrowSide.includes('end');\n }\n\n const endHead = toFiniteNumber(annotation?.arrowhead);\n const startHead = toFiniteNumber((annotation as { startarrowhead?: number }).startarrowhead);\n\n if (endHead !== undefined && endHead > 0) {\n includeEnd = true;\n }\n if (startHead !== undefined && startHead > 0) {\n includeStart = true;\n }\n\n if (includeStart && includeEnd) {\n return 'both';\n }\n if (includeStart) {\n return 'start';\n }\n if (includeEnd) {\n return 'end';\n }\n return 'none';\n};\n\nconst mapArrowDashToPattern = (value: string | undefined): string | undefined => {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim().toLowerCase();\n\n switch (normalized) {\n case 'solid':\n return undefined;\n case 'dot':\n return '1, 5';\n case 'dash':\n return '5, 5';\n case 'longdash':\n return '10, 5';\n case 'dashdot':\n return '5, 5, 1, 5';\n case 'longdashdot':\n return '10, 5, 1, 5';\n default:\n if (/^\\d+(\\s|,)*\\d*$/.test(normalized.replace(/\\s+/g, ' '))) {\n return normalized.replace(/\\s+/g, ' ');\n }\n return value;\n }\n};\n\ntype CoordinateRefType = 'axis' | 'relative' | 'pixel';\n\nconst mapRefTypeToCoordinateType = (refType: CoordinateRefType): 'data' | 'relative' | 'pixel' => {\n return refType === 'axis' ? 'data' : refType;\n};\n\nconst normalizeCoordinateValueForType = (\n coordinateType: 'data' | 'relative' | 'pixel',\n value: string | number | Date,\n): string | number | Date | undefined => {\n if (coordinateType === 'data') {\n return value;\n }\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n};\n\nconst getAnnotationCoordinateValue = (\n axis: 'x' | 'y',\n refType: CoordinateRefType,\n annotation: PlotlyAnnotation,\n layout: Partial<Layout> | undefined,\n): string | number | Date | undefined => {\n if (refType === 'axis') {\n const axisRef = (axis === 'x' ? annotation?.xref : annotation?.yref) as string | undefined;\n const axisLayout = getAxisLayoutByRef(layout, axisRef, axis);\n const rawValue = axis === 'x' ? annotation?.x : annotation?.y;\n const axisType = (axisLayout?.type as AxisType | undefined) ?? 'category';\n return convertAnnotationDataValue(rawValue, axisType);\n }\n\n const numericValue = toFiniteNumber(axis === 'x' ? annotation?.x : annotation?.y);\n if (numericValue === undefined) {\n return undefined;\n }\n\n if (refType === 'relative') {\n return axis === 'y' ? transformRelativeYForChart(numericValue) : numericValue;\n }\n\n return numericValue;\n};\n\n/**\n * Converts a Plotly annotation definition into the internal `ChartAnnotation` format, translating coordinates,\n * layout alignment, styling, and connector metadata while skipping unsupported configurations.\n */\nconst convertPlotlyAnnotation = (\n annotation: PlotlyAnnotation,\n layout: Partial<Layout> | undefined,\n index: number,\n): ChartAnnotation | undefined => {\n if (!annotation || (annotation as { visible?: boolean }).visible === false) {\n return undefined;\n }\n\n const xRefType = resolveRefType(annotation.xref as string | undefined, 'x');\n const yRefType = resolveRefType(annotation.yref as string | undefined, 'y');\n\n if (!xRefType || !yRefType) {\n return undefined;\n }\n\n const xValue = getAnnotationCoordinateValue('x', xRefType, annotation, layout);\n const yValue = getAnnotationCoordinateValue('y', yRefType, annotation, layout);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n\n const xCoordinateType = mapRefTypeToCoordinateType(xRefType);\n const yCoordinateType = mapRefTypeToCoordinateType(yRefType);\n const normalizedX = normalizeCoordinateValueForType(xCoordinateType, xValue);\n const normalizedY = normalizeCoordinateValueForType(yCoordinateType, yValue);\n if (normalizedX === undefined || normalizedY === undefined) {\n return undefined;\n }\n\n const yRefNormalized = typeof annotation.yref === 'string' ? annotation.yref.toLowerCase() : undefined;\n const yAxisProps =\n yCoordinateType === 'data' && yRefNormalized === 'y2' ? ({ yAxis: 'secondary' as const } as const) : undefined;\n\n let coordinates: ChartAnnotation['coordinates'];\n\n if (xCoordinateType === 'data' && yCoordinateType === 'data') {\n coordinates = {\n type: 'data',\n x: normalizedX,\n y: normalizedY,\n ...(yAxisProps ?? {}),\n };\n } else if (xCoordinateType === 'relative' && yCoordinateType === 'relative') {\n coordinates = {\n type: 'relative',\n x: normalizedX as number,\n y: normalizedY as number,\n };\n } else if (xCoordinateType === 'pixel' && yCoordinateType === 'pixel') {\n coordinates = {\n type: 'pixel',\n x: normalizedX as number,\n y: normalizedY as number,\n };\n } else {\n coordinates = {\n type: 'mixed',\n xCoordinateType,\n yCoordinateType,\n x: normalizedX,\n y: normalizedY,\n ...(yAxisProps ?? {}),\n };\n }\n\n const textValue = annotation.text;\n const rawText = textValue === undefined || textValue === null ? '' : String(textValue);\n const encodedText = encodeHtmlEntities(rawText);\n\n const chartAnnotation: ChartAnnotation = {\n id: createAnnotationId(encodedText, index),\n text: encodedText,\n coordinates,\n };\n\n const layoutProps: Partial<ChartAnnotationLayoutProps> = {};\n const styleProps: Partial<ChartAnnotationStyleProps> = {};\n const showArrow = annotation.showarrow === undefined ? false : !!annotation.showarrow;\n\n const clipOnAxis = (annotation as { cliponaxis?: boolean }).cliponaxis;\n if (clipOnAxis !== undefined) {\n layoutProps.clipToBounds = !!clipOnAxis;\n } else if (coordinates.type === 'data') {\n layoutProps.clipToBounds = true;\n }\n\n const horizontalAlign = mapHorizontalAlign(annotation.xanchor as string | undefined);\n if (horizontalAlign) {\n layoutProps.align = horizontalAlign;\n }\n\n if (!layoutProps.align) {\n const alignProp = mapHorizontalAlign((annotation as { align?: string }).align);\n if (alignProp) {\n layoutProps.align = alignProp;\n }\n }\n\n const verticalAlign = mapVerticalAlign(annotation.yanchor as string | undefined);\n if (verticalAlign) {\n layoutProps.verticalAlign = verticalAlign;\n }\n\n if (!layoutProps.verticalAlign) {\n const valignProp = mapVerticalAlign((annotation as { valign?: string }).valign);\n if (valignProp) {\n layoutProps.verticalAlign = valignProp;\n }\n }\n\n const offsetXComponents: number[] = [];\n let hasExplicitOffset = false;\n const ax = toFiniteNumber(annotation.ax);\n const axRef = typeof annotation.axref === 'string' ? annotation.axref.toLowerCase() : undefined;\n if (ax !== undefined && (axRef === undefined || axRef === 'pixel')) {\n offsetXComponents.push(ax);\n hasExplicitOffset = true;\n }\n const xShift = toFiniteNumber(annotation.xshift);\n if (xShift !== undefined) {\n offsetXComponents.push(xShift);\n hasExplicitOffset = true;\n }\n if (offsetXComponents.length > 0) {\n const offsetX = offsetXComponents.reduce((sum, value) => sum + value, 0);\n if (offsetX !== 0) {\n layoutProps.offsetX = offsetX;\n }\n }\n\n const offsetYComponents: number[] = [];\n const ay = toFiniteNumber(annotation.ay);\n const ayRef = typeof annotation.ayref === 'string' ? annotation.ayref.toLowerCase() : undefined;\n if (ay !== undefined && (ayRef === undefined || ayRef === 'pixel')) {\n offsetYComponents.push(ay);\n hasExplicitOffset = true;\n }\n const yShift = toFiniteNumber(annotation.yshift);\n if (yShift !== undefined) {\n offsetYComponents.push(yShift);\n hasExplicitOffset = true;\n }\n if (offsetYComponents.length > 0) {\n const offsetY = offsetYComponents.reduce((sum, value) => sum + value, 0);\n if (offsetY !== 0) {\n layoutProps.offsetY = offsetY;\n }\n }\n\n if (showArrow && !hasExplicitOffset && layoutProps.offsetY === undefined) {\n layoutProps.offsetY = DEFAULT_ARROW_OFFSET;\n }\n\n const maxWidth = toFiniteNumber(annotation.width);\n if (maxWidth !== undefined) {\n layoutProps.maxWidth = maxWidth;\n }\n\n if (annotation.bgcolor) {\n styleProps.backgroundColor = annotation.bgcolor as string;\n }\n\n if (annotation.bordercolor) {\n styleProps.borderColor = annotation.bordercolor as string;\n }\n\n const borderWidth = toFiniteNumber(annotation.borderwidth);\n if (borderWidth !== undefined) {\n styleProps.borderWidth = borderWidth;\n }\n\n const borderPad = appendPx(annotation.borderpad);\n if (borderPad) {\n styleProps.padding = borderPad;\n }\n\n const opacity = toFiniteNumber(annotation.opacity);\n if (opacity !== undefined) {\n styleProps.opacity = opacity;\n }\n\n if (annotation.font) {\n const font = annotation.font as {\n color?: string;\n size?: string | number;\n weight?: React.CSSProperties['fontWeight'];\n };\n if (font?.color) {\n styleProps.textColor = font.color;\n }\n const fontSize = appendPx(font?.size);\n if (fontSize) {\n styleProps.fontSize = fontSize;\n }\n if (font?.weight) {\n styleProps.fontWeight = font.weight;\n }\n }\n\n const textAngle = (annotation as { textangle?: number | string })?.textangle;\n if (typeof textAngle === 'number' && !Number.isNaN(textAngle)) {\n styleProps.rotation = textAngle;\n } else if (typeof textAngle === 'string' && textAngle.toLowerCase() !== 'auto') {\n const parsedAngle = Number(textAngle);\n if (!Number.isNaN(parsedAngle)) {\n styleProps.rotation = parsedAngle;\n }\n }\n if (Object.keys(layoutProps).length > 0) {\n chartAnnotation.layout = layoutProps;\n }\n\n if (Object.keys(styleProps).length > 0) {\n chartAnnotation.style = styleProps;\n }\n\n if (showArrow) {\n const arrowColor = (annotation.arrowcolor as string) ?? styleProps.textColor;\n const arrowWidth = toFiniteNumber(annotation.arrowwidth);\n const endPadding = toFiniteNumber(annotation.standoff);\n const startPadding = toFiniteNumber((annotation as { startstandoff?: number }).startstandoff);\n const dashPattern = mapArrowDashToPattern((annotation as { arrowdash?: string }).arrowdash);\n\n chartAnnotation.connector = {\n ...(arrowColor ? { strokeColor: arrowColor } : {}),\n ...(arrowWidth !== undefined ? { strokeWidth: arrowWidth } : {}),\n ...(endPadding !== undefined ? { endPadding: Math.max(endPadding, 0) } : {}),\n ...(startPadding !== undefined ? { startPadding: Math.max(startPadding, 0) } : {}),\n ...(dashPattern ? { dashArray: dashPattern } : {}),\n arrow: mapArrowsideToArrow(annotation),\n };\n }\n\n return chartAnnotation;\n};\n\nconst getChartAnnotationsFromLayout = (\n data: Data[] | undefined,\n layout: Partial<Layout> | undefined,\n isMultiPlot: boolean,\n): ChartAnnotation[] | undefined => {\n if (isMultiPlot || !layout?.annotations) {\n return undefined;\n }\n\n // Infer axis types when they are not explicitly set.\n // This is needed so annotation coordinate parsing can correctly treat values as 'date' vs 'category'\n // (for example, bar chart category axes with date-like strings).\n const inferredLayout = (() => {\n if (!data || !isArrayOrTypedArray(data) || data.length === 0) {\n return layout;\n }\n\n const valuesByAxisKey = new Map<keyof Layout, Datum[]>();\n const axesExpectingCategories = new Set<keyof Layout>();\n\n data.forEach(series => {\n const trace = series as Partial<PlotData>;\n const axisIds = getAxisIds(trace);\n\n if (trace.type === 'bar') {\n const categoryAxisLetter = trace.orientation === 'h' ? 'y' : 'x';\n axesExpectingCategories.add(getAxisKey(categoryAxisLetter, axisIds[categoryAxisLetter]));\n }\n\n (['x', 'y'] as const).forEach(axLetter => {\n const coords = trace[axLetter];\n if (!coords || !isArrayOrTypedArray(coords)) {\n return;\n }\n\n const axisKey = getAxisKey(axLetter, axisIds[axLetter]);\n const existing = valuesByAxisKey.get(axisKey) ?? [];\n (coords as Datum[] | TypedArray).forEach(val => {\n if (!isInvalidValue(val)) {\n existing.push(val as Datum);\n }\n });\n valuesByAxisKey.set(axisKey, existing);\n });\n });\n\n let nextLayout: Partial<Layout> | undefined;\n\n valuesByAxisKey.forEach((values, axisKey) => {\n const currentAxis = layout?.[axisKey];\n const currentType = currentAxis?.type;\n if (['linear', 'log', 'date', 'category'].includes(currentType ?? '')) {\n return;\n }\n\n let inferredType: AxisType | undefined;\n if (axesExpectingCategories.has(axisKey) || isYearArray(values)) {\n inferredType = 'category';\n } else if (isDateArray(values)) {\n inferredType = 'date';\n }\n\n if (!inferredType) {\n return;\n }\n\n if (!nextLayout) {\n nextLayout = { ...layout };\n }\n\n nextLayout[axisKey] = {\n ...(currentAxis ?? {}),\n type: inferredType,\n };\n });\n\n return nextLayout ?? layout;\n })();\n\n const annotationsArray = Array.isArray(layout.annotations) ? layout.annotations : [layout.annotations];\n const converted = annotationsArray\n .map((annotation, index) => convertPlotlyAnnotation(annotation as PlotlyAnnotation, inferredLayout, index))\n .filter((annotation): annotation is ChartAnnotation => annotation !== undefined);\n\n return converted.length > 0 ? converted : undefined;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, x };\n};\n\nexport const transformPlotlyJsonToAnnotationChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n _colorMap: React.RefObject<Map<string, string>>,\n _colorwayType: ColorwayType,\n _isDarkTheme?: boolean,\n): AnnotationOnlyChartProps => {\n const annotations = getChartAnnotationsFromLayout(input.data, input.layout, isMultiPlot) ?? [];\n const titles = getTitles(input.layout);\n const layoutTitle = titles.chartTitle || undefined;\n\n const layoutWithMeta = input.layout as Partial<Layout> & { meta?: { description?: string } };\n const description =\n typeof layoutWithMeta?.meta?.description === 'string' ? layoutWithMeta.meta.description : undefined;\n\n const width = typeof input.layout?.width === 'number' ? input.layout.width : undefined;\n const height = typeof input.layout?.height === 'number' ? input.layout.height : undefined;\n const paperBackgroundColor = typeof input.layout?.paper_bgcolor === 'string' ? input.layout.paper_bgcolor : undefined;\n const plotBackgroundColor = typeof input.layout?.plot_bgcolor === 'string' ? input.layout.plot_bgcolor : undefined;\n const fontColor = typeof input.layout?.font?.color === 'string' ? input.layout.font.color : undefined;\n const fontFamily = typeof input.layout?.font?.family === 'string' ? input.layout.font.family : undefined;\n const margin = input.layout?.margin;\n\n return {\n annotations,\n chartTitle: layoutTitle,\n description,\n width,\n height,\n paperBackgroundColor,\n plotBackgroundColor,\n fontColor,\n fontFamily,\n margin,\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n // clear colorMap for donut chart to reassign colors as the colorMap initially gets assigned by\n // getAllupLegendsProps function without sorting labels by value\n colorMap.current!.clear();\n\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const markerColors = (firstData.marker?.colors as unknown as string[]) || undefined;\n const hasMarkerColors = Array.isArray(markerColors) && markerColors.length >= firstData.labels.length;\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n color: hasMarkerColors ? markerColors[index] : undefined,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value; when marker colors are present, keep color attached to the label\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string =\n pair.color ??\n resolveColor(\n colors,\n sortedIdx,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent', 'percent+label'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle, titleStyles } = getTitles(input.layout);\n // Build anticlockwise order by keeping the first item, reversing the rest\n const legends = Object.keys(mapLegendToDataPoint);\n const reorderedEntries =\n legends.length > 1\n ? ([\n [legends[0], mapLegendToDataPoint[legends[0]]],\n ...legends\n .slice(1)\n .reverse()\n .map(key => [key, mapLegendToDataPoint[key]] as const),\n ] as ReadonlyArray<readonly [string, ChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as ChartDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo\n ? ['percent', 'label+percent', 'percent+label'].includes(firstData.textinfo)\n : true,\n roundCorners: true,\n order: 'sorted',\n ...(titleStyles ? { titleStyles } : {}),\n } as DonutChartProps;\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const resolveXValue = getAxisValueResolver(getAxisType(input.data, getAxisObjects(input.data, input.layout).x));\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const validXYRanges = getValidXYRanges(series, resolveXValue);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const textValues = Array.isArray(series.text)\n ? series.text.slice(rangeStart, rangeEnd)\n : typeof series.text === 'string'\n ? series.text\n : undefined;\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXValue(x)!,\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n index2,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n let barLabel = Array.isArray(textValues) ? textValues[index2] : textValues;\n\n // Apply texttemplate formatting if specified\n if (barLabel && series.texttemplate) {\n barLabel = formatTextWithTemplate(barLabel, series.texttemplate, index2);\n }\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n ...(barLabel ? { barLabel: String(barLabel) } : {}),\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const xCategories = extractXCategories(input.data);\n\n (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .forEach((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (shape.xref === 'x domain') {\n if (val === 0) {\n return xCategories[0];\n }\n if (val === 1) {\n return xCategories[xCategories.length - 1];\n }\n }\n if (typeof val === 'number' && Array.isArray(xCategories)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\n }\n return val;\n };\n\n const x0Key = resolveX(shape.x0!);\n const x1Key = resolveX(shape.x1!);\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n const y0Val = resolveY(shape.y0!);\n const y1Val = resolveY(shape.y1!);\n if (mapXToDataPoints[x0Key as string]) {\n mapXToDataPoints[x0Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y0Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n }\n\n if (mapXToDataPoints[x1Key as string]) {\n mapXToDataPoints[x1Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y1Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n }\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n const annotations = getChartAnnotationsFromLayout(input.data, input.layout, isMultiPlot);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const gvbcDataV2: GroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n const legend: string = legends[index1];\n const legendShape = getLegendShape(series);\n\n if (series.type === 'bar') {\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n gvbcDataV2.push({\n type: 'bar',\n legend,\n key: legend,\n data: (series.x as Datum[])\n .map((x, xIndex) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[xIndex])) {\n return;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[xIndex % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n xIndex,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, xIndex);\n const yVal = series.y![xIndex] as number;\n // Extract text value for barLabel\n let barLabel = Array.isArray(series.text) ? series.text[xIndex] : series.text;\n\n // Apply texttemplate formatting if specified\n if (barLabel && series.texttemplate) {\n barLabel = formatTextWithTemplate(barLabel, series.texttemplate, xIndex);\n }\n\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(barLabel ? { barLabel: String(barLabel) } : {}),\n };\n })\n .filter(item => typeof item !== 'undefined'),\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n } else if (series.type === 'scatter') {\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = getLineOptions(series.line);\n const opacity = getOpacity(series, index1);\n const validXYRanges = getValidXYRanges(series);\n\n validXYRanges.forEach(([rangeStart, rangeEnd]) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd) as Datum[];\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd) as Datum[];\n\n gvbcDataV2.push({\n type: 'line',\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => {\n const yVal = rangeYValues[i] as number;\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n };\n }),\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n });\n }\n });\n\n const annotations = getChartAnnotationsFromLayout(processedInput.data, processedInput.layout, isMultiPlot);\n\n return {\n dataV2: gvbcDataV2,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index) ?? 0;\n if (isInvalidValue(xVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n // Handle text values and texttemplate formatting for histogram bins\n let barLabel = Array.isArray(series.text) ? series.text[index] : series.text;\n if (barLabel && series.texttemplate) {\n barLabel = formatTextWithTemplate(barLabel, series.texttemplate, index);\n }\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n ...(barLabel ? { barLabel: String(barLabel) } : {}),\n });\n });\n });\n\n const annotations = getChartAnnotationsFromLayout(input.data, input.layout, isMultiPlot);\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst mapColorFillBars = (layout: Partial<Layout> | undefined) => {\n if (!Array.isArray(layout?.shapes)) {\n return [];\n }\n\n return layout.shapes\n .filter((shape: Partial<Shape>) => shape.type === 'rect')\n .map((shape: { x0?: Datum; x1?: Datum; fillcolor?: string }) => {\n //colorFillbars doesn't support string dates or categories\n if (typeof shape.x0 === 'string' || typeof shape.x1 === 'string') {\n return null;\n }\n return {\n color: shape.fillcolor!,\n data: [{ startX: shape.x0, endX: shape.x1 }],\n applyPattern: false,\n };\n });\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const resolveXValue = getAxisValueResolver(getAxisType(input.data, getAxisObjects(input.data, input.layout).x));\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series, resolveXValue);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const markerColors = isArrayOrTypedArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : Array.isArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : undefined;\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXValue(x),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(markerColors ? { markerColor: markerColors[i] } : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n fill: series.fill,\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const xMinValue = chartData[0]?.data[0]?.x;\n const xMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.x;\n const yMinValue = chartData[0]?.data[0]?.y;\n const yMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.y;\n const xCategories = extractXCategories(input.data);\n const lineShape: LineChartPoints[] | ScatterChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (typeof val === 'number' && Array.isArray(xCategories)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\n }\n if (shape.xref === 'paper') {\n if (val === 0) {\n return xMinValue;\n }\n if (val === 1) {\n return xMaxValue;\n }\n if (typeof val === 'number' && typeof xMinValue === 'number' && typeof xMaxValue === 'number') {\n return xMinValue + val * (xMaxValue - xMinValue);\n }\n return val;\n }\n return val;\n };\n\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n return {\n legend: `Reference_${shapeIdx}`,\n data: [\n { x: resolveXValue(resolveX(shape.x0!)), y: resolveY(shape.y0!) },\n { x: resolveXValue(resolveX(shape.x1!)), y: resolveY(shape.y1!) },\n ],\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n } as LineChartPoints | ScatterChartPoints;\n });\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: [...chartData, ...(lineShape as LineChartPoints[])],\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: [...chartData, ...(lineShape as ScatterChartPoints[])],\n };\n\n const annotations = getChartAnnotationsFromLayout(input.data, input.layout, isMultiPlot);\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n showYAxisLables: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n ...(!isScatterChart &&\n (() => {\n const bars = mapColorFillBars(input.layout);\n return bars && !bars.includes(null) ? { colorFillBars: bars } : {};\n })()),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: isInvalidValue(series.x?.[i]) ? 0 : series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(series.text?.[i] ? { barLabel: series.text[i].toString() } : {}),\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n roundedTicks: true,\n ...getXMinMaxValues(input.data[0], input.layout),\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const data = input.data.filter((series: Partial<PlotData>) => series.type !== 'scatter' || series.mode !== 'markers');\n const { legends, hideLegend } = getLegendProps(data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const xAxisType = getAxisType(data, getAxisObjects(data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType, parseLocalDate);\n const resolveGanttXValue = (value: Datum) => {\n const resolvedValue = resolveXValue(value);\n return typeof resolvedValue === 'string' ? 0 : resolvedValue ?? 0;\n };\n const isXDate = xAxisType === 'date';\n const ganttData: GanttChartDataPoint[] = [];\n data.forEach((series: Partial<PlotData>, index: number) => {\n const legend = legends[index];\n\n if (series.type === 'bar') {\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n (series.y as Datum[]).forEach((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return;\n }\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n const base = +resolveGanttXValue((isArrayOrTypedArray(series.base) ? series.base![i] : series.base) as Datum);\n const xVal = +resolveGanttXValue(series.x?.[i] as Datum);\n\n ganttData.push({\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal as string | number,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n });\n });\n } else if (series.type === 'scatter' && series.mode === 'none' && series.fill === 'toself') {\n for (let i = 0; i < series.y!.length; i += 5) {\n if (isInvalidValue(series.y![i]) || isInvalidValue(series.y![i + 3])) {\n continue;\n }\n\n const x0 = resolveGanttXValue(series.x![i] as Datum);\n const x1 = resolveGanttXValue(series.x![i + 1] as Datum);\n const y0 = series.y![i] as number;\n const y1 = series.y![i + 3] as number;\n\n ganttData.push({\n x: {\n start: x0,\n end: x1,\n },\n y: Math.round((y0 + y1) / 2),\n legend,\n color: series.fillcolor,\n });\n }\n }\n });\n\n return {\n data: ganttData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(data, input.layout),\n ...getBarProps(data, input.layout, true),\n ...getAxisTickProps(data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n // Build a 2D array of annotations based on their grid position\n const annotationGrid: (string | undefined)[][] = [];\n const rawAnnotations = input.layout?.annotations;\n\n if (rawAnnotations) {\n const annotationsArray = Array.isArray(rawAnnotations) ? rawAnnotations : [rawAnnotations];\n\n // Collect all unique x and y values from valid annotations\n const xSet = new Set<number>();\n const ySet = new Set<number>();\n const validAnnotations: Array<{ x: number; y: number; text: string }> = [];\n\n annotationsArray.forEach((a: PlotlyAnnotation) => {\n if (\n a &&\n typeof a.x === 'number' &&\n typeof a.y === 'number' &&\n typeof a.text === 'string' &&\n (a.xref === 'x' || a.xref === undefined) &&\n (a.yref === 'y' || a.yref === undefined)\n ) {\n xSet.add(a.x);\n ySet.add(a.y);\n validAnnotations.push({ x: a.x, y: a.y, text: cleanText(a.text) });\n }\n });\n\n if (validAnnotations.length > 0) {\n // Get sorted unique x and y values\n const xValues = Array.from(xSet).sort((a, b) => a - b);\n const yValues = Array.from(ySet).sort((a, b) => a - b);\n\n // Initialize 2D grid and populate\n validAnnotations.forEach(annotation => {\n const xIdx = xValues.indexOf(annotation.x);\n const yIdx = yValues.indexOf(annotation.y);\n if (!annotationGrid[yIdx]) {\n annotationGrid[yIdx] = [];\n }\n annotationGrid[yIdx][xIdx] = annotation.text;\n });\n }\n }\n\n // Helper function to get annotation from 2D grid by index\n const getAnnotationByIndex = (xIdx: number, yIdx: number): string | undefined => annotationGrid[yIdx]?.[xIdx];\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index) ?? 0;\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index])) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n const annotationText = getAnnotationByIndex(xIdx, yIdx);\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: annotationText || zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n // If x and y are not provided, generate indices based on z dimensions\n const zArray = firstData.z as number[][];\n const xValues = firstData.x as Datum[] | undefined;\n const yValues = firstData.y as Datum[] | undefined;\n\n // Determine the dimensions from z array\n const yLength = zArray?.length ?? 0;\n const xLength = zArray?.[0]?.length ?? 0;\n\n // Use provided x/y values or generate indices\n const xData = xValues ?? Array.from({ length: xLength }, (_, i) => i);\n const yData = yValues ?? Array.from({ length: yLength }, (_, i) => yLength - 1 - i);\n\n xData.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yData.forEach((yVal: any, yIdx: number) => {\n const zVal = zArray?.[yIdx]?.[xIdx];\n\n const annotationText = getAnnotationByIndex(xIdx, yIdx);\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: annotationText || zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const extractedLinkColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n link?.color,\n colorMap,\n isDarkTheme,\n );\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(\n extractedNodeColors,\n index,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n const color = resolveColor(\n extractedLinkColors,\n index,\n validLink.target,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n ...validLink,\n color,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle, titleStyles } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n ...(titleStyles ? { titleStyles } : {}),\n } as SankeyChartProps;\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedIncreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedDecreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle, titleStyles } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n ...(titleStyles ? { titleStyles } : {}),\n } as GaugeChartProps;\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\n}\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n const { chartTitle, titleStyles } = getTitles(input.layout);\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n chartTitle,\n ...(titleStyles ? { titleStyles } : {}),\n } as ChartTableProps;\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(\n extractedColors,\n 0,\n category,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(\n extractedColors,\n i,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n const { chartTitle, titleStyles } = getTitles(input.layout);\n\n return {\n data: funnelData,\n chartTitle,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n ...(titleStyles ? { titleStyles } : {}),\n } as FunnelChartProps;\n};\n\nexport const transformPlotlyJsonToPolarChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): PolarChartProps => {\n const polarData: PolarChartProps['data'] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const resolveRValue = getAxisValueResolver(getPolarAxis(input.data, 'r', input.layout)._type);\n\n input.data.forEach((series: Partial<PlotData>, index: number) => {\n const legend = legends[index];\n\n if (series.type === 'scatterpolar') {\n const isAreaTrace = series.fill === 'toself' || series.fill === 'tonext';\n const isLineTrace = typeof series.mode === 'undefined' ? true : series.mode.includes('lines');\n const colors = isAreaTrace ? series.fillcolor : isLineTrace ? series.line?.color : series.marker?.color;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n );\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const seriesOpacity = getOpacity(series, index);\n const finalSeriesColor = rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8();\n const lineOptions = getLineOptions(series.line);\n const thetaUnit = (series as { thetaunit?: 'radians' | 'degrees' | 'gradians' }).thetaunit;\n\n const commonProps = {\n legend,\n legendShape: getLegendShape(series),\n color: finalSeriesColor,\n data:\n series.r\n ?.map((r, rIndex) => {\n const theta = series.theta?.[rIndex];\n const markerSize = Array.isArray(series.marker?.size) ? series.marker.size[rIndex] : series.marker?.size;\n const text = Array.isArray(series.text) ? series.text[rIndex] : series.text;\n const markerColor = resolveColor(\n extractedColors,\n rIndex,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const markerOpacity = getOpacity(series, rIndex);\n\n if (isInvalidValue(resolveRValue(r)) || isInvalidValue(theta)) {\n return;\n }\n\n return {\n r: resolveRValue(r)!,\n theta:\n typeof theta === 'number'\n ? thetaUnit === 'radians'\n ? (theta * 180) / Math.PI\n : thetaUnit === 'gradians'\n ? theta * 0.9\n : theta\n : (theta as string),\n color: markerColor ? rgb(markerColor).copy({ opacity: markerOpacity }).formatHex8() : finalSeriesColor,\n ...(typeof markerSize !== 'undefined' ? { markerSize } : {}),\n ...(typeof text !== 'undefined' ? { text } : {}),\n };\n })\n .filter(item => typeof item !== 'undefined') || [],\n };\n\n if (isAreaTrace || isLineTrace) {\n polarData.push({\n type: isAreaTrace ? 'areapolar' : 'linepolar',\n ...commonProps,\n lineOptions,\n });\n } else {\n polarData.push({\n type: 'scatterpolar',\n ...commonProps,\n });\n }\n }\n });\n\n return {\n data: polarData,\n width: input.layout?.width,\n height: input.layout?.height ?? 400,\n hideLegend,\n ...getPolarAxisProps(input.data, input.layout),\n // ...getTitles(input.layout),\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n\n if (isArrayOrTypedArray(pieSeries.labels)) {\n pieSeries.labels!.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(\n colors,\n labelIndex,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n }\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (\n series: Partial<PlotData>,\n resolveX?: (v: Datum) => Datum,\n resolveY?: (v: Datum) => Datum,\n): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (\n isInvalidValue(series.x![end]) ||\n (typeof resolveX === 'function' && isInvalidValue(resolveX(series.x![end] as Datum))) ||\n isInvalidValue(series.y![end]) ||\n (typeof resolveY === 'function' && isInvalidValue(resolveY(series.y![end] as Datum)))\n ) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie', 'annotation', 'table', 'gauge', 'funnel'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: ExtDomainInterval[] = [];\n const domainY: ExtDomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: ExtDomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n cellName: `x${domainX.length === 0 ? '' : domainX.length + 1}` as XAxisName,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: ExtDomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n cellName: `x${domainY.length === 0 ? '' : domainY.length + 1}` as XAxisName,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: ExtDomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n cellName: `${NON_PLOT_KEY_PREFIX}${domainX.length - cartesianDomains + 1}`,\n };\n const domainYInfo: ExtDomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n cellName: `${NON_PLOT_KEY_PREFIX}${domainY.length - cartesianDomains + 1}`,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('polar')) {\n const polarLayout = layout[key as keyof Layout] as Partial<PolarLayout>;\n const domainXInfo: ExtDomainInterval = {\n start: polarLayout.domain?.x ? polarLayout.domain.x[0] : 0,\n end: polarLayout.domain?.x ? polarLayout.domain.x[1] : 1,\n cellName: key,\n };\n const domainYInfo: ExtDomainInterval = {\n start: polarLayout.domain?.y ? polarLayout.domain.y[0] : 0,\n end: polarLayout.domain?.y ? polarLayout.domain.y[1] : 1,\n cellName: key,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, ExtDomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[interval.cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, ExtDomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[interval.cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n result[propName] = 'data';\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax?.autorange === 'reversed' ? ax!.categoryarray!.slice().reverse() : ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = ax?.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, ax);\n\n if (axId === 'x' && axType === 'category') {\n props.xAxis = {\n tickLayout: 'auto',\n };\n }\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n props.xAxis = {\n ...props.xAxis,\n tickText: ax.ticktext,\n };\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n props.yAxis = {\n ...props.yAxis,\n tickText: ax.ticktext,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n ...props.xAxis,\n tickStep: dtick,\n tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n ...props.yAxis,\n tickStep: dtick,\n tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\ninterface AxisObject extends Partial<LayoutAxis> {\n _id: string;\n}\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const makeAxisObject = (axLetter: 'x' | 'y', axId: number): AxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, AxisObject> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = makeAxisObject('x', xAxisId);\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = makeAxisObject('y', sortedYAxisIds[0]);\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = makeAxisObject('y', sortedYAxisIds[1]);\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], ax: AxisObject): AxisType => {\n if (!ax) {\n return 'category';\n }\n\n if (['linear', 'log', 'date', 'category'].includes(ax.type ?? '')) {\n return ax.type!;\n }\n\n const axLetter = ax._id[0] as 'x' | 'y';\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n const axId = series[`${axLetter}axis`];\n if ((axId === ax._id || (!axId && ax._id === axLetter)) && isArrayOrTypedArray(series[axLetter])) {\n series[axLetter]!.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n }\n });\n\n if (isNumberArray(values) && !isYearArray(values)) {\n return 'linear';\n }\n if (isDateArray(values)) {\n return 'date';\n }\n return 'category';\n};\n\nconst getAxisValueResolver = (axType: AxisType, dateParser?: (v: string | number) => Date) => {\n const toDate = (value: string | number): Date | null => {\n const date = dateParser ? dateParser(value) : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n };\n\n return (value: Datum): Datum => {\n if (isInvalidValue(value)) {\n return null;\n }\n\n switch (axType) {\n case 'linear':\n case 'log':\n return isNumber(value) ? +value! : null;\n\n case 'date':\n if (isNumber(value)) {\n return toDate(+value!);\n }\n if (typeof value === 'string') {\n return toDate(value);\n }\n return null;\n\n case 'category':\n return `${value}`;\n\n default:\n return null;\n }\n };\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n\ntype PolarDataKey = 'r' | 'theta';\ninterface PolarAxisObject extends Partial<LayoutAxis> {\n _type: AxisType;\n _dataKey: PolarDataKey;\n}\n\nconst POLAR_AXIS_BY_DATA_KEY: Record<PolarDataKey, 'radialAxis' | 'angularAxis'> = {\n r: 'radialAxis',\n theta: 'angularAxis',\n};\nexport const DEFAULT_POLAR_SUBPLOT = 'polar';\n\nconst getPolarLayout = (\n trace: Partial<PlotData>,\n layout: Partial<Layout> | undefined,\n): Partial<PolarLayout> | undefined => {\n const subplotId = ((trace as { subplot?: string })?.subplot || DEFAULT_POLAR_SUBPLOT) as keyof Layout;\n return layout?.[subplotId];\n};\n\nconst getValidAxisValues = (data: Data[], dataKey: PolarDataKey): Datum[] => {\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n if (isArrayOrTypedArray(series[dataKey])) {\n (series[dataKey] as Datum[]).forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n }\n });\n return values;\n};\n\nconst getPolarAxisType = (data: Data[], dataKey: PolarDataKey, declaredType: AxisType | undefined): AxisType => {\n if (['linear', 'log', 'date', 'category'].includes(declaredType ?? '')) {\n return declaredType!;\n }\n\n const values = getValidAxisValues(data, dataKey);\n if (isNumberArray(values) && !isYearArray(values)) {\n return 'linear';\n }\n if (isDateArray(values)) {\n return 'date';\n }\n return 'category';\n};\n\nconst getPolarAxis = (data: Data[], dataKey: PolarDataKey, layout: Partial<Layout> | undefined): PolarAxisObject => {\n const polarLayout = getPolarLayout(data[0] as Partial<PlotData>, layout);\n const ax = polarLayout?.[POLAR_AXIS_BY_DATA_KEY[dataKey].toLowerCase() as 'radialaxis' | 'angularaxis'];\n return {\n ...ax,\n _dataKey: dataKey,\n _type: getPolarAxisType(data, dataKey, ax?.type),\n };\n};\n\nconst getPolarAxisTickProps = (data: Data[], ax: PolarAxisObject): PolarAxisProps => {\n const props: PolarAxisProps = {};\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = ax._type === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n props.tickValues = tickValues;\n props.tickText = ax.ticktext;\n return props;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, ax._type);\n const tick0 = plotlyTick0(ax.tick0, ax._type, dtick);\n\n props.tickStep = dtick;\n props.tick0 = tick0;\n return props;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n props.tickCount = ax.nticks;\n }\n\n return props;\n};\n\nconst getPolarAxisCategoryOrder = (data: Data[], ax: PolarAxisObject) => {\n if (ax._type !== 'category') {\n return 'data';\n }\n\n const isValidArray = isArrayOrTypedArray(ax.categoryarray) && ax.categoryarray!.length > 0;\n if (isValidArray && (!ax.categoryorder || ax.categoryorder === 'array')) {\n return ax.categoryarray;\n }\n\n if (!ax.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const values = getValidAxisValues(data, ax._dataKey);\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n return ax.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : categoriesInTraceOrder;\n }\n\n return ax.categoryorder;\n};\n\nconst getPolarAxisProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const props: Partial<PolarChartProps> = {};\n\n (Object.keys(POLAR_AXIS_BY_DATA_KEY) as PolarDataKey[]).forEach(dataKey => {\n const propName = POLAR_AXIS_BY_DATA_KEY[dataKey];\n const ax = getPolarAxis(data, dataKey, layout);\n\n props[propName] = {\n scaleType: ax._type === 'log' ? 'log' : 'default',\n categoryOrder: getPolarAxisCategoryOrder(data, ax),\n tickFormat: ax.tickformat,\n ...getPolarAxisTickProps(data, ax),\n ...(isArrayOrTypedArray(ax.range) ? { rangeStart: ax.range![0], rangeEnd: ax.range![1] } : {}),\n };\n\n if (propName === 'angularAxis') {\n props[propName].unit = (ax as { thetaunit?: 'radians' | 'degrees' }).thetaunit;\n props.direction = ax.direction;\n }\n });\n\n return props;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","isScatterAreaChart","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titleObj","title","chartTitle","text","titleFont","font","undefined","titleXAnchor","xanchor","titleYAnchor","yanchor","titlePad","pad","titleStyles","titles","Object","keys","length","xAxisTitle","xaxis","yAxisTitle","yaxis","xAxisAnnotation","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","yMinValue","yMaxValue","getXMinMaxValues","xMinValue","xMaxValue","showRoundOffXTickValues","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","containsSecondaryYAxis","allLineSeries","forEach","yValues","y","Math","type","secondaryYAxistitle","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","formatTextWithTemplate","textValue","textTemplate","String","numVal","isNaN","template","plotlyPattern","match","formatSpec","suffix","startsWith","toFixed","formatter","formattedValue","error","precisionMatch","precision","parseInt","includes","extractXCategories","from","Set","flatMap","trace","xData","flat","shouldIgnoreKey","key","lowerKey","toLowerCase","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","prototype","hasOwnProperty","call","newKey","value","assign","encodeHtmlEntities","replace","toFiniteNumber","numeric","Number","isFinite","parseAxisRef","ref","axis","refType","axisId","normalized","trim","endsWith","parsed","transformRelativeYForChart","mapHorizontalAlign","mapVerticalAlign","appendPx","resolveRefType","getAxisLayoutByRef","defaultAxisKey","axisKey","convertAnnotationDataValue","axisType","dateValue","getTime","createAnnotationId","slug","slice","DEFAULT_ARROW_OFFSET","mapArrowsideToArrow","annotation","includeStart","includeEnd","arrowSide","arrowside","endHead","arrowhead","startHead","startarrowhead","mapArrowDashToPattern","mapRefTypeToCoordinateType","normalizeCoordinateValueForType","coordinateType","getAnnotationCoordinateValue","axisRef","xref","yref","axisLayout","rawValue","numericValue","convertPlotlyAnnotation","visible","xRefType","yRefType","xValue","yValue","xCoordinateType","yCoordinateType","normalizedX","normalizedY","yRefNormalized","yAxisProps","coordinates","rawText","encodedText","chartAnnotation","id","layoutProps","styleProps","showArrow","showarrow","clipOnAxis","cliponaxis","clipToBounds","horizontalAlign","align","alignProp","verticalAlign","valignProp","valign","offsetXComponents","hasExplicitOffset","ax","axRef","axref","push","xShift","xshift","offsetX","reduce","offsetYComponents","ay","ayRef","ayref","yShift","yshift","offsetY","maxWidth","width","bgcolor","backgroundColor","bordercolor","borderColor","borderWidth","borderwidth","borderPad","borderpad","padding","opacity","textColor","fontSize","size","weight","fontWeight","textAngle","textangle","rotation","parsedAngle","style","arrowColor","arrowcolor","arrowWidth","arrowwidth","endPadding","standoff","startPadding","startstandoff","dashPattern","arrowdash","connector","strokeColor","dashArray","arrow","getChartAnnotationsFromLayout","isMultiPlot","annotations","inferredLayout","valuesByAxisKey","Map","axesExpectingCategories","axisIds","categoryAxisLetter","orientation","add","axLetter","coords","existing","get","val","set","nextLayout","values","currentAxis","currentType","inferredType","has","annotationsArray","converted","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","allKeys","hasValidData","isNumericData","name","transformPlotlyJsonToAnnotationChartProps","input","_colorMap","_colorwayType","_isDarkTheme","layoutWithMeta","layoutTitle","description","meta","height","paperBackgroundColor","paper_bgcolor","plotBackgroundColor","plot_bgcolor","fontColor","fontFamily","family","margin","transformPlotlyJsonToDonutProps","firstData","colors","piecolorway","marker","mapLegendToDataPoint","current","clear","labels","markerColors","hasMarkerColors","labelValuePairs","label","getNumberAtIndexOrDefault","validPairs","pair","sort","a","b","sortedIdx","legend","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","legends","reorderedEntries","reverse","chartData","v","hideLegend","showlegend","showLabelsInPercent","roundCorners","order","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","getLegendProps","colorScale","resolveXValue","getAxisValueResolver","getAxisType","getAxisObjects","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","rangeYValues","textValues","index2","xAxisPoint","lineData","yAxisCalloutData","barLabel","texttemplate","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","xCategories","shapes","shape","shapeIdx","resolveX","x0Key","x0","x1Key","x1","resolveY","y0Val","y0","y1Val","y1","vsbcData","barWidth","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","roundedTicks","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","hasObjectArrayData","some","processedData","gvbcDataV2","xIndex","dataV2","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","xAxisCalloutData","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","mapColorFillBars","fillcolor","startX","endX","applyPattern","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","markerSize","markerColor","originXOffset","__polarOriginX","direction","polar","angularaxis","axisLabel","__axisLabel","lineShape","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","bars","colorFillBars","transformPlotlyJsonToHorizontalBarWithAxisProps","point","chartHeight","l","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","xAxisType","parseLocalDate","resolveGanttXValue","resolvedValue","ganttData","base","round","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","annotationGrid","rawAnnotations","xSet","ySet","validAnnotations","cleanText","xIdx","indexOf","yIdx","getAnnotationByIndex","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","yBin","annotationText","rectText","zArray","yLength","xLength","yData","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","source","target","extractedNodeColors","extractedLinkColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","formatValue","colIndex","cells","formatStr","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","textAlign","columns","table","rows","col","cellValue","cleanValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","subValues","transformPlotlyJsonToPolarChartProps","polarData","resolveRValue","getPolarAxis","_type","isAreaTrace","isLineTrace","finalSeriesColor","thetaUnit","thetaunit","r","rIndex","theta","markerOpacity","PI","getPolarAxisProps","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","ranges","getIndexFromKey","pattern","normalizedKey","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","templateRows","templateColumns","gridLayout","anchorIndex","xAxisLayout","domainXInfo","cellName","yAxisLayout","domainYInfo","polarLayout","xMatches","interval","idx","yMatch","yIndex","yAnnotation","xAnnotation","uniqueXIntervals","sortedXStart","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","autorange","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","tickLayout","tickmode","tickvals","tickValues","tickText","ticktext","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","charAt","dtickNum","xAxisId","yAxisIds","makeAxisObject","_id","sortedYAxisIds","dateParser","toDate","isoDateRegex","POLAR_AXIS_BY_DATA_KEY","DEFAULT_POLAR_SUBPLOT","getPolarLayout","subplotId","subplot","getValidAxisValues","dataKey","getPolarAxisType","declaredType","_dataKey","getPolarAxisTickProps","tickCount","getPolarAxisCategoryOrder","scaleType","categoryOrder","unit"],"mappings":"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"}
|