UNPKG

igniteui-webcomponents-charts

Version:

Ignite UI Web Components charting components for building rich data visualizations using TypeScript APIs.

23,325 lines 745 kB
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { Control } from "igniteui-webcomponents-core";
import { INotifyPropertyChanged_$type, Base, Type, EventArgs, PropertyChangedEventArgs, IEnumerable_$type, callStaticConstructors, Point_$type, runOn, delegateCombine, fromEnum, delegateRemove, fromEn, typeCast, enumGetBox, EnumUtil, Boolean_$type, Number_$type, typeGetValue, toEnum, String_$type, markType, markDep, PointUtil, TypeRegistrar, Delegate_$type, Array_$type, Date_$type, getInstanceType } from "igniteui-webcomponents-core";
import { ILegendOwner_$type } from "igniteui-webcomponents-core";
import { IInternalLegendOwner_$type } from "igniteui-webcomponents-core";
import { IDataLegendTarget_$type } from "igniteui-webcomponents-core";
import { IToolbarTarget_$type } from "igniteui-webcomponents-core";
import { ISupportsAnimation_$type } from "igniteui-webcomponents-core";
import { SRProvider } from "igniteui-webcomponents-core";
import { HashSet$1 } from "igniteui-webcomponents-core";
import { IToolbarContextAccessor_$type } from "igniteui-webcomponents-core";
import { DVContainer } from "igniteui-webcomponents-core";
import { SeriesPlotAreaMarginHorizontalMode_$type } from "./SeriesPlotAreaMarginHorizontalMode";
import { SeriesPlotAreaMarginVerticalMode_$type } from "./SeriesPlotAreaMarginVerticalMode";
import { SeriesViewerScrollbarMode_$type } from "./SeriesViewerScrollbarMode";
import { DoubleAnimator } from "igniteui-webcomponents-core";
import { BrushCollection } from "igniteui-webcomponents-core";
import { DependencyProperty } from "igniteui-webcomponents-core";
import { DependencyObject } from "igniteui-webcomponents-core";
import { MarkerAutomaticBehavior_$type } from "./MarkerAutomaticBehavior";
import { IChartLegend_$type } from "igniteui-webcomponents-core";
import { SeriesHighlightingMode_$type } from "./SeriesHighlightingMode";
import { SeriesSelectionMode_$type } from "./SeriesSelectionMode";
import { SeriesSelectionBehavior_$type } from "./SeriesSelectionBehavior";
import { SeriesViewerHorizontalScrollbarPosition_$type } from "./SeriesViewerHorizontalScrollbarPosition";
import { SeriesViewerVerticalScrollbarPosition_$type } from "./SeriesViewerVerticalScrollbarPosition";
import { Brush } from "igniteui-webcomponents-core";
import { SeriesHighlightingBehavior_$type } from "./SeriesHighlightingBehavior";
import { LegendHighlightingMode_$type } from "./LegendHighlightingMode";
import { LegendItemBadgeShape_$type } from "igniteui-webcomponents-core";
import { LegendItemBadgeMode_$type } from "igniteui-webcomponents-core";
import { Rect } from "igniteui-webcomponents-core";
import { ChartHitTestMode_$type } from "./ChartHitTestMode";
import { InteractionState_$type } from "igniteui-webcomponents-core";
import { WindowResponse_$type } from "./WindowResponse";
import { Visibility_$type } from "igniteui-webcomponents-core";
import { SeriesViewerComponentsFromView } from "./SeriesViewerComponentsFromView";
import { ZoomCoercionMode_$type } from "./ZoomCoercionMode";
import { ModifierKeys_$type } from "igniteui-webcomponents-core";
import { SeriesHighlightedValuesDisplayMode_$type } from "igniteui-webcomponents-core";
import { DataTemplate } from "igniteui-webcomponents-core";
import { HorizontalAlignment_$type } from "igniteui-webcomponents-core";
import { CanvasRenderScheduler } from "igniteui-webcomponents-core";
import { SyncSettings } from "./SyncSettings";
import { PropertyMetadata } from "igniteui-webcomponents-core";
import { ICommandStateChangedListener_$type } from "igniteui-webcomponents-core";
import { List$1 } from "igniteui-webcomponents-core";
import { SeriesViewerComponentsForView } from "./SeriesViewerComponentsForView";
import { VersionQueueHelper } from "igniteui-webcomponents-core";
import { Dictionary$2 } from "igniteui-webcomponents-core";
import { IDataLegend_$type } from "igniteui-webcomponents-core";
import { PropertyUpdatedEventArgs } from "igniteui-webcomponents-core";
import { NotifyCollectionChangedEventArgs } from "igniteui-webcomponents-core";
import { ObservableCollection$1 } from "igniteui-webcomponents-core";
import { Size } from "igniteui-webcomponents-core";
import { FrameworkElement } from "igniteui-webcomponents-core";
import { MouseEventArgs } from "igniteui-webcomponents-core";
import { MouseButtonEventArgs } from "igniteui-webcomponents-core";
import { Tuple$2 } from "igniteui-webcomponents-core";
import { ScalerParams } from "./ScalerParams";
import { SeriesViewerManipulationEventArgs } from "./SeriesViewerManipulationEventArgs";
import { IFastItemsSource_$type } from "igniteui-webcomponents-core";
import { RectChangedEventArgs } from "igniteui-webcomponents-core";
import { MathUtil } from "igniteui-webcomponents-core";
import { DeviceUtils } from "igniteui-webcomponents-core";
import { RefreshCompletedEventArgs } from "./RefreshCompletedEventArgs";
import { Thickness } from "igniteui-webcomponents-core";
import { AxisTitlePosition_$type } from "./AxisTitlePosition";
import { FontInfo } from "igniteui-webcomponents-core";
import { CoercionInfo } from "./CoercionInfo";
import { FastItemsSource } from "igniteui-webcomponents-core";
import { FontUtil } from "igniteui-webcomponents-core";
import { IDataLegendSeries_$type } from "igniteui-webcomponents-core";
import { CaptureImageSettings } from "igniteui-webcomponents-core";
import { ImageCapturedEventArgs } from "igniteui-webcomponents-core";
import { truncate, intDivide, isNaN_, isInfinity, logBase, log10 } from "igniteui-webcomponents-core";
import { ChartContentType_$type } from "./ChartContentType";
import { defaultDVDateParse, dateNow } from "igniteui-webcomponents-core";
import { stringIsNullOrEmpty, stringEmpty, stringEndsWith, stringStartsWith, stringIsNullOrWhiteSpace } from "igniteui-webcomponents-core";
import { ISchedulableRender_$type } from "igniteui-webcomponents-core";
import { Rectangle } from "igniteui-webcomponents-core";
import { Path } from "igniteui-webcomponents-core";
import { Line } from "igniteui-webcomponents-core";
import { RenderingContext } from "igniteui-webcomponents-core";
import { TextBlock } from "igniteui-webcomponents-core";
import { ITileZoomTile_$type } from "./ITileZoomTile";
import { DOMExecutionContext } from "igniteui-webcomponents-core";
import { RenderSurface } from "./RenderSurface";
import { PathFigureCollection } from "igniteui-webcomponents-core";
import { PathFigure } from "igniteui-webcomponents-core";
import { LineSegment } from "igniteui-webcomponents-core";
import { PathGeometry } from "igniteui-webcomponents-core";
import { GeometryGroup } from "igniteui-webcomponents-core";
import { DataContext } from "igniteui-webcomponents-core";
import { LabelPanelsArrangeState } from "./LabelPanelsArrangeState";
import { MarkerTemplates } from "./MarkerTemplates";
import { DataTemplateRenderInfo } from "igniteui-webcomponents-core";
import { DataTemplateMeasureInfo } from "igniteui-webcomponents-core";
import { AxisLabelsLocation_$type } from "./AxisLabelsLocation";
import { IProvidesViewport_$type } from "./IProvidesViewport";
import { ArgumentNullException } from "igniteui-webcomponents-core";
import { ActualLegendItemBadgeShape_$type } from "./ActualLegendItemBadgeShape";
import { CanvasViewRenderer } from "igniteui-webcomponents-core";
import { Defaults } from "./Defaults";
import { EllipseGeometry } from "igniteui-webcomponents-core";
import { DataTemplatePassInfo } from "igniteui-webcomponents-core";
import { BrushUtil } from "igniteui-webcomponents-core";
import { LegendItemHelper } from "igniteui-webcomponents-core";
import { DomWrapper_$type } from "igniteui-webcomponents-core";
import { PointerTooltipStyle } from "./PointerTooltipStyle";
import { DefaultPaletteInfo } from "./DefaultPaletteInfo";
import { CssGradientUtil } from "igniteui-webcomponents-core";
import { AxisDefaults } from "./AxisDefaults";
import { BrushUtilCore } from "igniteui-webcomponents-core";
import { AxisRange } from "./AxisRange";
import { LinearNumericSnapper } from "./LinearNumericSnapper";
import { AxisAnnotationCollection } from "./AxisAnnotationCollection";
import { VerticalAlignment_$type } from "igniteui-webcomponents-core";
import { Canvas } from "igniteui-webcomponents-core";
import { IFastItemsSourceProvider_$type } from "igniteui-webcomponents-core";
import { DoubleCollection } from "igniteui-webcomponents-core";
import { LabelPosition } from "./LabelPosition";
import { BindingFormatter } from "igniteui-webcomponents-core";
import { LabelFontHeuristics } from "./LabelFontHeuristics";
import { Pool$1 } from "igniteui-webcomponents-core";
import { AxisComponentsFromView } from "./AxisComponentsFromView";
import { FastReflectionHelper } from "igniteui-webcomponents-core";
import { AxisRangeChangedEventArgs } from "./AxisRangeChangedEventArgs";
import { RectangleGeometry } from "igniteui-webcomponents-core";
import { PathRenderingInfo } from "./PathRenderingInfo";
import { LineGeometry } from "igniteui-webcomponents-core";
import { RenderRequestedEventArgs } from "./RenderRequestedEventArgs";
import { CategoryMode_$type } from "./CategoryMode";
import { GridMode_$type } from "./GridMode";
import { Panel } from "igniteui-webcomponents-core";
import { UIElement } from "igniteui-webcomponents-core";
import { RectUtil } from "igniteui-webcomponents-core";
import { TickmarkValues } from "./TickmarkValues";
import { TransformGroup } from "igniteui-webcomponents-core";
import { RotateTransform } from "igniteui-webcomponents-core";
import { TranslateTransform } from "igniteui-webcomponents-core";
import { AngleSimplifier } from "igniteui-webcomponents-core";
import { TransformMatrixHelpler } from "igniteui-webcomponents-core";
import { ICategoryScaler_$type } from "./ICategoryScaler";
import { AxisRangeBufferMode_$type } from "./AxisRangeBufferMode";
import { NumericAxisRenderingParameters } from "./NumericAxisRenderingParameters";
import { LogarithmicTickmarkValues } from "./LogarithmicTickmarkValues";
import { LinearTickmarkValues } from "./LinearTickmarkValues";
import { CategoryAxisRenderingParameters } from "./CategoryAxisRenderingParameters";
import { TickmarkValuesInitializationParameters } from "./TickmarkValuesInitializationParameters";
import { NumberAbbreviatorFactory } from "./NumberAbbreviatorFactory";
import { AutomaticSeriesPurpose_$type } from "./AutomaticSeriesPurpose";
import { SeriesMatcher } from "./SeriesMatcher";
import { Stack$1 } from "igniteui-webcomponents-core";
import { RenderValidEventArgs } from "./RenderValidEventArgs";
import { ArrayExtension } from "igniteui-webcomponents-core";
import { SeriesLayerPropertyOverlayValueResolvingEventArgs } from "./SeriesLayerPropertyOverlayValueResolvingEventArgs";
import { PlatformAPIHelper } from "igniteui-webcomponents-core";
import { Marker } from "./Marker";
import { ContentControl } from "igniteui-webcomponents-core";
import { AutoMarginsAndAngleUpdateMode_$type } from "./AutoMarginsAndAngleUpdateMode";
import { ComputedPlotAreaMarginMode_$type } from "./ComputedPlotAreaMarginMode";
import { PolygonUtil } from "igniteui-webcomponents-core";
import { ILegendSeries_$type } from "igniteui-webcomponents-core";
import { ILegendSeriesInternal_$type } from "igniteui-webcomponents-core";
import { ILegendTemplateProvider_$type } from "igniteui-webcomponents-core";
import { PenLineJoin_$type } from "igniteui-webcomponents-core";
import { PenLineCap_$type } from "igniteui-webcomponents-core";
import { Color } from "igniteui-webcomponents-core";
import { SeriesVisibleRangeMode_$type } from "./SeriesVisibleRangeMode";
import { SeriesOutlineMode_$type } from "./SeriesOutlineMode";
import { TransitionInSpeedType_$type } from "./TransitionInSpeedType";
import { TransitionOutSpeedType_$type } from "./TransitionOutSpeedType";
import { SeriesHitTestMode_$type } from "./SeriesHitTestMode";
import { SeriesComponentsForView } from "./SeriesComponentsForView";
import { Binding } from "igniteui-webcomponents-core";
import { MarkerOutlineMode_$type } from "./MarkerOutlineMode";
import { MarkerFillMode_$type } from "./MarkerFillMode";
import { SeriesPointOfInterest } from "./SeriesPointOfInterest";
import { FastItemColumn } from "igniteui-webcomponents-core";
import { TransitionOutCompletedEventArgs } from "./TransitionOutCompletedEventArgs";
import { IChartItemLegend_$type } from "igniteui-webcomponents-core";
import { SeriesComponentsFromView } from "./SeriesComponentsFromView";
import { DataLegendSeriesValueInfo } from "igniteui-webcomponents-core";
import { DataLegendSeriesContext } from "igniteui-webcomponents-core";
import { MarkerType_$type } from "./MarkerType";
import { Style } from "igniteui-webcomponents-core";
import { FastItemsSourceReference } from "igniteui-webcomponents-core";
import { stringFormat } from "igniteui-webcomponents-core";
import { EasingFunctions } from "igniteui-webcomponents-core";
/**
 * @hidden
 */
export let SeriesViewer = /*@__PURE__*/ (() => {
    class SeriesViewer extends Control {
        get widget() {
            return this._widget;
        }
        set widget(a) {
            this._widget = a;
        }
        static staticInit() {
            SeriesViewer.wu = new Rect(0, 0, 0, 1, 1);
        }
        get dt() {
            if (this.ds == null) {
                this.ds = new SRProvider(this.c9.j.ae);
            }
            return this.ds;
        }
        ao(a) {
            if (this.an == null) {
                this.an = new AutomaticSeriesManager(this);
            }
            return this.an;
        }
        getDesiredToolbarActions() {
            if (!this.fi) {
                return null;
            }
            return this.a9.getDesiredToolbarActions(this);
        }
        onToolCommandExecuting(a) {
            if (!this.fi) {
                return 1;
            }
            return this.a9.onToolCommandExecuting(this, a);
        }
        addCommandAvailabilityListener(a) {
        }
        removeCommandAvailabilityListener(a) {
        }
        addCommandStateChangedListener(a) {
            if (!this.gp.contains(a)) {
                this.gp.add(a);
            }
        }
        removeCommandStateChangedListener(a) {
            if (this.gp.contains(a)) {
                this.gp.remove(a);
            }
        }
        get commandCompleted() {
            return this._commandCompleted;
        }
        set commandCompleted(a) {
            this._commandCompleted = a;
        }
        get invalidateActions() {
            return this._invalidateActions;
        }
        set invalidateActions(a) {
            this._invalidateActions = a;
        }
        get gn() {
            return this.gm;
        }
        provideContextAccessor(a) {
            if (this.gm == null) {
                this.gm = new HashSet$1(IToolbarContextAccessor_$type, 0);
            }
            this.gm.add_1(a);
        }
        dismissContextAccessor(a) {
            if (this.gm == null) {
                return;
            }
            this.gm.remove(a);
        }
        od() {
            if (this.invalidateActions != null) {
                this.invalidateActions();
            }
        }
        get a9() {
            if (this.a8 == null) {
                this.a8 = DVContainer.instance.createInstance(IDataChartToolbarProvider_$type, () => this.dt.n);
                this.a8.container = this.c9.bi;
            }
            return this.a8;
        }
        get fi() {
            return DVContainer.instance.checkLoaded("DataChartToolbarFactoryManager");
        }
        get bb() {
            if (this.ba == null) {
                this.ba = DVContainer.instance.createInstance(ISeriesViewerInteractionManager_$type, () => this.dt.n);
            }
            return this.ba;
        }
        get fa() {
            return DVContainer.instance.checkLoaded("InteractivityFactoryManager");
        }
        constructor() {
            super();
            this._widget = null;
            this.c9 = null;
            this.ds = null;
            this.an = null;
            this.gp = new List$1(ICommandStateChangedListener_$type, 0);
            this._commandCompleted = null;
            this._invalidateActions = null;
            this.gm = null;
            this.a8 = null;
            this.ba = null;
            this.eb = false;
            this.ea = false;
            this.c1 = null;
            this.br = new SeriesCollection();
            this.i0 = 0;
            this.bz = 0;
            this.b1 = 0;
            this._skipDataCleanup = false;
            this.db = null;
            this.dd = null;
            this.da = null;
            this.dc = null;
            this.ar = null;
            this.v7 = null;
            this.plotAreaMouseLeftButtonDown = null;
            this.plotAreaMouseLeftButtonUp = null;
            this.plotAreaClicked = null;
            this.plotAreaMouseEnter = null;
            this.plotAreaMouseLeave = null;
            this.plotAreaMouseOver = null;
            this.cf = 0;
            this.cg = 0;
            this.bu = 1;
            this.b7 = 1;
            this.b3 = 3;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.jf = null;
            this.d6 = false;
            this.seriesCursorMouseMove = null;
            this.seriesMouseLeftButtonDown = null;
            this.seriesMouseLeftButtonUp = null;
            this.seriesClick = null;
            this.seriesMouseMove = null;
            this.seriesMouseEnter = null;
            this.seriesMouseLeave = null;
            this.d0 = false;
            this.dz = false;
            this.wg = Rect.empty;
            this.we = Rect.empty;
            this.dx = true;
            this.wd = null;
            this.eg = false;
            this.iz = 30;
            this.fq = false;
            this.ei = false;
            this.cc = new SeriesViewerComponentsForView();
            this.d4 = false;
            this.at = 0;
            this.as = 1;
            this.seriesAnimating = null;
            this.du = new VersionQueueHelper();
            this.d3 = false;
            this.d1 = false;
            this.cv = 0;
            this.d8 = false;
            this.eq = false;
            this.dy = false;
            this.mm = null;
            this.viewerManipulationStarting = null;
            this.viewerManipulationEnding = null;
            this.ee = false;
            this.d9 = false;
            this.windowRectChanged = null;
            this.sizeChanged = null;
            this.e1 = false;
            this.actualWindowRectChanged = null;
            this.gridAreaRectChanged = null;
            this.es = false;
            this.g2 = 0.0001;
            this.g1 = 0.0001;
            this._syncChannel = null;
            this.cm = null;
            this.gb = false;
            this.ed = false;
            this.e0 = false;
            this.gh = false;
            this.cq = 1;
            this.w1 = null;
            this.i2 = 0;
            this.bq = null;
            this.ec = false;
            this.gc = false;
            this.wf = Rect.empty;
            this._selectedSeriesItems = null;
            this._focusedSeriesItems = null;
            this.selectedSeriesItemsChanged = null;
            this.focusedSeriesItemsChanged = null;
            this.gw = new Date();
            this.gk = false;
            this.refreshCompleted = null;
            this.jk = null;
            this.jj = null;
            this.vi = null;
            this.vh = null;
            this.hh = NaN;
            this.hf = NaN;
            this.hg = NaN;
            this.he = NaN;
            this.hd = NaN;
            this.hb = NaN;
            this.hc = NaN;
            this.ha = NaN;
            this.jh = null;
            this.al = null;
            this.am = null;
            this.ak = null;
            this.d7 = false;
            this.dw = false;
            this._syncSettings = null;
            this.destroyed = false;
            this.je = null;
            this.gl = new Dictionary$2(String_$type, Base.$, 0);
            this.fo = false;
            this.hi = NaN;
            this.g7 = NaN;
            this.g9 = NaN;
            this.g5 = NaN;
            this.g4 = 30;
            this.g3 = NaN;
            this.d2 = true;
            this.g8 = NaN;
            this.g6 = NaN;
            this.ji = null;
            this.gy = 1;
            this.gx = NaN;
            this.wc = null;
            this.ez = false;
            this.gz = 0;
            this.g0 = 0;
            this.sk = null;
            this.az = null;
            this.e4 = false;
            this.e5 = false;
            this.e2 = false;
            this.d5 = false;
            this.i1 = 0;
            this.eo = false;
            this.e8 = false;
            this.seriesDataUpdated = null;
            this.gq = new List$1(IDataLegend_$type, 0);
            this.dv = null;
            this.seriesDataChanged = null;
            this.gt = null;
            this.imageCaptured = null;
            DVContainer.instance.registerIfLoaded("AnnotationFactoryManager");
            DVContainer.instance.registerIfLoaded("InteractivityFactoryManager");
            DVContainer.instance.registerIfLoaded("DataChartToolbarFactoryManager");
            DVContainer.instance.registerIfLoaded("VisualDataFactoryManager");
            this.wc = Rect.empty;
            this.v7 = { $type: Point_$type, x: NaN, y: NaN };
            this.gw = dateNow();
            this.e4 = false;
            this.e5 = false;
            this.al = new CanvasRenderScheduler();
            this.al.a = runOn(this, this.nn);
            this.am = new CanvasRenderScheduler();
            this.ak = new CanvasRenderScheduler();
            SeriesViewer.wu = new Rect(0, 0, 0, 1, 1);
            this.syncSettings = ((() => {
                let $ret = new SyncSettings();
                $ret.synchronizeHorizontally = true;
                $ret.synchronizeVertically = true;
                return $ret;
            })());
            this.c9 = this.c8();
            this.qe(this.c9);
            this.c9.c4();
            this.rv();
            this.n8();
            this.actualSyncLink = new SyncLink();
            this.r2(null, this.actualSyncLink);
            this.ar = new ChartContentManager(this);
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (a, b) => this.qq(a, b.propertyName, b.oldValue, b.newValue));
            this.selectedSeriesItems = new ChartSelectedItemCollection();
            let a = this.selectedSeriesItems;
            a.collectionChanged = delegateCombine(a.collectionChanged, runOn(this, this.p1));
            let b = this.selectedSeriesItems;
            b.collectionResetting = delegateCombine(b.collectionResetting, runOn(this, this.ri));
            this.focusedSeriesItems = new ChartSelectedItemCollection();
            let c = this.focusedSeriesItems;
            c.collectionChanged = delegateCombine(c.collectionChanged, runOn(this, this.pe));
            let d = this.focusedSeriesItems;
            d.collectionResetting = delegateCombine(d.collectionResetting, runOn(this, this.n1));
            let e = this.series;
            e.collectionChanged = delegateCombine(e.collectionChanged, runOn(this, this.rk));
            let f = this.series;
            f.collectionResetting = delegateCombine(f.collectionResetting, runOn(this, this.rl));
            this.dc = new DoubleAnimator(0, 1, this.ja);
            this.db = new DoubleAnimator(0, 1, this.i9);
            let g = this.db;
            g.propertyChanged = delegateCombine(g.propertyChanged, runOn(this, this.n7));
            this.dd = new DoubleAnimator(0, 1, this.jc);
            this.da = new DoubleAnimator(0, 1, this.i6);
            let h = this.dd;
            h.propertyChanged = delegateCombine(h.propertyChanged, runOn(this, this.rj));
            let i = this.da;
            i.propertyChanged = delegateCombine(i.propertyChanged, runOn(this, this.n2));
            this.c9.bx();
            this.oa();
            this.n9();
        }
        ri(a, b) {
            for (let c = 0; c < this.selectedSeriesItems.count; c++) {
                this.pk(this.selectedSeriesItems._inner[c]);
            }
        }
        n1(a, b) {
            for (let c = 0; c < this.focusedSeriesItems.count; c++) {
                this.pj(this.focusedSeriesItems._inner[c]);
            }
        }
        p1(a, b) {
            if (b.action == 4 && b.newItems == null && b.oldItems == null) {
                return;
            }
            if (this.eb) {
                return;
            }
            if (b.oldItems != null) {
                for (let c = 0; c < b.oldItems.count; c++) {
                    let d = b.oldItems.item(c);
                    this.pk(d);
                }
            }
            if (b.newItems != null) {
                for (let e = 0; e < b.newItems.count; e++) {
                    let f = b.newItems.item(e);
                    f.g(this);
                }
                for (let g = 0; g < b.newItems.count; g++) {
                    let h = b.newItems.item(g);
                    this.pm(h);
                }
            }
            let i = new ChartSelectedItemCollection();
            if (b.oldItems != null) {
                for (let j = 0; j < b.oldItems.count; j++) {
                    i.add(b.oldItems.item(j));
                }
            }
            let k = new ChartSelectedItemCollection();
            if (b.newItems != null) {
                for (let l = 0; l < b.newItems.count; l++) {
                    k.add(b.newItems.item(l));
                }
            }
            let m = this.selectedSeriesItems;
            this.p0(this, new SeriesViewerSelectedSeriesItemsChangedEventArgs(i, k, m));
        }
        pe(a, b) {
            if (b.action == 4 && b.newItems == null && b.oldItems == null) {
                return;
            }
            if (this.ea) {
                return;
            }
            if (b.oldItems != null) {
                for (let c = 0; c < b.oldItems.count; c++) {
                    let d = b.oldItems.item(c);
                    this.pj(d);
                }
            }
            if (b.newItems != null) {
                for (let e = 0; e < b.newItems.count; e++) {
                    let f = b.newItems.item(e);
                    this.pl(f);
                }
            }
            let g = new ChartSelectedItemCollection();
            if (b.oldItems != null) {
                for (let h = 0; h < b.oldItems.count; h++) {
                    g.add(b.oldItems.item(h));
                }
            }
            let i = new ChartSelectedItemCollection();
            if (b.newItems != null) {
                for (let j = 0; j < b.newItems.count; j++) {
                    i.add(b.newItems.item(j));
                }
            }
            let k = this.selectedSeriesItems;
            this.pd(this, new SeriesViewerSelectedSeriesItemsChangedEventArgs(g, i, k));
        }
        pl(a) {
            this.n3((b) => {
                let c = a;
                if (c.series != null && c.series != b) {
                    return;
                }
                b.pt(c.item);
            });
        }
        pj(a) {
            this.n3((b) => {
                let c = a;
                if (c.series != null && c.series != b) {
                    return;
                }
                b.pr(c.item);
            });
        }
        n3(a) {
            for (let b of fromEnum(this.series)) {
                a(b);
                if (b.isStacked) {
                    b.p5((c) => {
                        a(c);
                        if (c.ei) {
                            c.p3((d) => {
                                a(d);
                                return true;
                            });
                        }
                        return true;
                    });
                }
                if (b.ei) {
                    b.p3((c) => {
                        a(c);
                        return true;
                    });
                }
            }
        }
        pm(a) {
            this.n3((b) => {
                let c = a;
                if (c.series != null && c.series != b) {
                    return;
                }
                if (c.item == null) {
                    b.pz();
                }
                else {
                    b.pu(c.item);
                }
            });
        }
        pk(a) {
            this.n3((b) => {
                let c = a;
                if (c.series != null && c.series != b) {
                    return;
                }
                if (c.item == null) {
                    b.px();
                }
                else {
                    b.ps(c.item);
                }
            });
        }
        n8() {
            if (this.c1 != null && this.c2 == null) {
                let a = this.c2;
                a.thumbnailSizeChanged = delegateRemove(a.thumbnailSizeChanged, runOn(this, this.qm));
            }
            if (this.c2 != null) {
                let b = this.c2;
                b.thumbnailSizeChanged = delegateCombine(b.thumbnailSizeChanged, runOn(this, this.qm));
            }
            if (this.ji != null) {
                this.c2.backgroundImageUri = this.ji;
            }
            if (this.c2 != null) {
                this.c2.initializeScalingRatio(this.hk);
            }
            if (this.c1 == null && this.c2 != null) {
                this.or();
            }
            this.c1 = this.c2;
        }
        qm(a, b) {
            this.c2.surfaceIsDirty = true;
            for (let c of fromEnum(this.series)) {
                c.g1 = true;
            }
        }
        get_ft() {
            return false;
        }
        get ft() {
            return this.get_ft();
        }
        get_fs() {
            return false;
        }
        get fs() {
            return this.get_fs();
        }
        n9() {
            this.c9.co();
            if (this.c2 != null) {
                this.c2.initializeScalingRatio(this.hk);
            }
        }
        get series() {
            return this.br;
        }
        rk(a, b) {
            let c = this.eo;
            this.eo = this.eu();
            if (b.oldItems != null) {
                let d = this.i0;
                for (let e of fromEn(b.oldItems)) {
                    if (e != null && e.eq) {
                        this.i0--;
                        if (this.i0 < 0) {
                            this.i0 = 0;
                        }
                    }
                    e.c4 = null;
                    e.dc = null;
                    this.rc(e);
                    this.c9.dy(e);
                }
                if (this.i0 < d) {
                    for (let f of fromEnum(this.series)) {
                        if (f.eu) {
                            continue;
                        }
                        f.pw();
                    }
                }
            }
            if (b.newItems != null) {
                let g = this.i0;
                for (let h of fromEn(b.newItems)) {
                    if (h != null && h.eq) {
                        this.i0++;
                    }
                    if (!this.c9.aq(h)) {
                        this.rw(h);
                        this.c9.bp(h);
                        h.dc = this;
                        h.c4 = this.actualSyncLink;
                        h.st();
                    }
                }
                if (this.i0 > g) {
                    for (let i of fromEnum(this.series)) {
                        if (i.eu || b.newItems.contains(i)) {
                            continue;
                        }
                        i.pw();
                    }
                }
            }
            if (this.eo != c && !this.wz.isEmpty) {
                this.qp(this.wz, this.wz);
            }
            this.oq();
            this.oz();
            this.ph();
            this.ok();
        }
        get b0() {
            return this.bz;
        }
        set b0(a) {
            this.bz = a;
        }
        get b2() {
            return this.b1;
        }
        set b2(a) {
            this.b1 = a;
        }
        ob() {
            this.oz();
        }
        oz() {
        }
        get skipDataCleanup() {
            return this._skipDataCleanup;
        }
        set skipDataCleanup(a) {
            this._skipDataCleanup = a;
        }
        rc(a) {
            if (!this.skipDataCleanup) {
                if (typeCast(Series.$, a) !== null) {
                    a.itemsSource = null;
                }
                else if (typeCast(CategoryAxisBase.$, a) !== null) {
                    a.itemsSource = null;
                }
            }
            this.re(a.name, true);
        }
        get ew() {
            return this.i0 > 0;
        }
        rl(a, b) {
            this.eo = this.eu();
            for (let c of fromEnum(this.series)) {
                c.c4 = null;
                c.dc = null;
                this.rc(c);
                this.c9.dy(c);
            }
            this.i0 = 0;
            this.ok();
        }
        of(a, b, c, d) {
            let e = this.wz;
            let f = e.width;
            let g = e.height;
            let h = 1;
            let i = a / b;
            if (isNaN_(h)) {
                return {
                    p0: a,
                    p1: b
                };
            }
            if (isNaN_(i) || c || d || Math.abs(h - i) > 0.0001) {
                if (c && d) {
                    if (a > b) {
                        b = a / h;
                    }
                    else {
                        a = b * h;
                    }
                }
                else if (c) {
                    b = a / h;
                }
                else {
                    a = b * h;
                }
            }
            if (b > 1) {
                let j = 1 / b;
                b = 1;
                a = a * j;
            }
            if (a > 1) {
                let k = 1 / a;
                a = 1;
                b = b * k;
            }
            return {
                p0: a,
                p1: b
            };
        }
        eu() {
            return false;
        }
        get f8() {
            return this.fj;
        }
        get e6() {
            return this.ba != null;
        }
        get en() {
            return this.ba != null;
        }
        get em() {
            return this.cf != 0 || this.cg != 0;
        }
        get el() {
            return this.en && this.em;
        }
        get dk() {
            let a = this.bb.f$e;
            if (a.executionContext == null) {
                a.executionContext = this.c9.l();
            }
            if (a.ensureAnimator == null) {
                a.ensureAnimator = runOn(this, this.nx);
            }
            a.dismissHighlightDelay = this.i8;
            return a;
        }
        get dl() {
            let a = this.bb.f$f;
            if (a.executionContext == null) {
                a.executionContext = this.c9.l();
            }
            if (a.ensureAnimator == null) {
                a.ensureAnimator = runOn(this, this.ny);
            }
            return a;
        }
        get dj() {
            let a = this.bb.f$d;
            if (a.executionContext == null) {
                a.executionContext = this.c9.l();
            }
            if (a.ensureAnimator == null) {
                a.ensureAnimator = runOn(this, this.nw);
            }
            return a;
        }
        get bc() {
            let a = this.bb.f$b;
            if (a.executionContext == null) {
                a.executionContext = this.c9.l();
            }
            if (a.animator == null) {
                a.animator = this.dc;
                a.owner = this;
            }
            return a;
        }
        nx() {
            {
                let a = this.db;
                if (!a.f() && a.r > 0) {
                    a.v();
                }
                if (a.r == 0) {
                    let b = this.ge(1);
                    while (b) {
                        b = this.ge(0);
                        b = this.ge(1);
                    }
                }
            }
        }
        ny() {
            {
                let a = this.dd;
                if (!a.f() && a.r > 0) {
                    a.v();
                }
                if (a.r == 0) {
                    let b = this.gf(1);
                    while (b) {
                        b = this.gf(0);
                        b = this.gf(1);
                    }
                }
            }
        }
        nw() {
            {
                let a = this.da;
                if (!a.f() && a.r > 0) {
                    a.v();
                }
                if (a.r == 0) {
                    let b = this.gd(1);
                    while (b) {
                        b = this.gd(0);
                        b = this.gd(1);
                    }
                }
            }
        }
        n7(a, b) {
            this.ge(this.db.o);
        }
        rj(a, b) {
            this.gf(this.dd.o);
        }
        n2(a, b) {
            this.gd(this.da.o);
        }
        ge(a) {
            let b = this.dk.tick(a);
            if (a == 1 && b && this.db.r > 0) {
                this.db.v();
            }
            let c = this.dk.dirtyContexts;
            if (this.dk.allDirty) {
                let d = this.series;
                for (let e = 0; e < d.count; e++) {
                    let f = d._inner[e];
                    f.q6();
                }
            }
            else {
                for (let g = 0; g < c.count; g++) {
                    let h = c._inner[g];
                    h.q6();
                }
            }
            if (!b) {
                this.db.w();
                this.pg();
            }
            return b;
        }
        gf(a) {
            let b = this.dl.tick(a);
            if (a == 1 && b && this.dd.r > 0) {
                this.dd.v();
            }
            let c = this.dl.dirtyContexts;
            if (this.dl.allDirty) {
                let d = this.series;
                for (let e = 0; e < d.count; e++) {
                    let f = d._inner[e];
                    f.q6();
                }
            }
            else {
                for (let g = 0; g < c.count; g++) {
                    let h = c._inner[g];
                    h.q6();
                }
            }
            if (!b) {
                this.dd.w();
            }
            return b;
        }
        gd(a) {
            let b = this.dj.tick(a);
            if (a == 1 && b && this.da.r > 0) {
                this.da.v();
            }
            let c = this.dj.dirtyContexts;
            if (this.dj.allDirty) {
                let d = this.series;
                for (let e = 0; e < d.count; e++) {
                    let f = d._inner[e];
                    f.q6();
                }
            }
            else {
                for (let g = 0; g < c.count; g++) {
                    let h = c._inner[g];
                    h.q6();
                }
            }
            if (!b) {
                this.da.w();
            }
            return b;
        }
        n6() {
            this.c9.ck();
            this.n5();
            for (let a = 0; a < this.series.count; a++) {
                if (this.series._inner[a].eu) {
                    this.series._inner[a].p9();
                }
            }
        }
        vn(a) {
            return this.vm(this.ag, a);
        }
        vt(a) {
            return this.vm(this.aj, a);
        }
        vr(a) {
            return this.vm(this.ah, a);
        }
        vs(a) {
            return this.vm(this.ai, a);
        }
        vm(a, b) {
            if (a == null || a.count == 0) {
                return null;
            }
            else {
                return a.item(b % a.count);
            }
        }
        get v8() {
            return this.v7;
        }
        set v8(a) {
            if (PointUtil.notEquals(this.v7, a)) {
                let b = this.v7;
                this.v7 = a;
                this.qv("CrosshairPoint", b, this.v7);
            }
        }
        q8() {
        }
        get e9() {
            return this.c0 == 1 || this.c0 == 2 || this.c0 == 3;
        }
        get legend() {
            return this.c(SeriesViewer.tp);
        }
        set legend(a) {
            this.h(SeriesViewer.tp, a);
        }
        get ej() {
            return this.c(SeriesViewer.sm);
        }
        set ej(a) {
            this.h(SeriesViewer.sm, a);
        }
        get f2() {
            return this.c(SeriesViewer.ud);
        }
        set f2(a) {
            this.h(SeriesViewer.ud, a);
        }
        pw(a, b) {
            this.d6 = false;
            let c = false;
            c = false;
            if (this.c9.k.al) {
                return;
            }
            if (this.plotAreaMouseLeftButtonDown != null) {
                let d = this.bh(a, b, c);
                this.plotAreaMouseLeftButtonDown(this, d);
            }
        }
        bh(a, b, c) {
            let d = { $type: Point_$type, x: a.x, y: a.y };
            let e = { $type: Point_$type, x: a.x, y: a.y };
            if (!this.wz.isEmpty) {
                if (c) {
                    e.x -= this.wz.left;
                    e.y -= this.wz.top;
                }
                else {
                    d.x += this.wz.left;
                    d.y += this.wz.top;
                }
            }
            let f = new PlotAreaMouseButtonEventArgs(this, d, e);
            f.manipulationOccurred = this.d6;
            return f;
        }
        bl(a, b, c) {
            let d = { $type: Point_$type, x: a.x, y: a.y };
            let e = { $type: Point_$type, x: a.x, y: a.y };
            if (!this.wz.isEmpty) {
                if (c) {
                    e.x -= this.wz.left;
                    e.y -= this.wz.top;
                }
                else {
                    d.x += this.wz.left;
                    d.y += this.wz.top;
                }
            }
            let f = new PlotAreaMouseEventArgs(this, d, e);
            return f;
        }
        px(a, b, c) {
            let d = false;
            d = false;
            if (this.c9.k.al) {
                return;
            }
            if (this.plotAreaMouseLeftButtonUp != null) {
                let e = this.bh(a, b, d);
                this.plotAreaMouseLeftButtonUp(this, e);
            }
            if (!this.d6 && !c) {
                if (this.plotAreaClicked != null) {
                    let f = this.bh(a, b, d);
                    this.plotAreaClicked(this, f);
                }
            }
            this.d6 = false;
        }
        get fj() {
            return this.c(SeriesViewer.tl);
        }
        set fj(a) {
            this.h(SeriesViewer.tl, a);
        }
        get f7() {
            return this.c(SeriesViewer.ug);
        }
        set f7(a) {
            this.h(SeriesViewer.ug, a);
        }
        get by() {
            return EnumUtil.getEnumValue(SeriesHighlightingMode_$type, this.c(SeriesViewer.s3));
        }
        set by(a) {
            this.h(SeriesViewer.s3, enumGetBox(SeriesHighlightingMode_$type, a));
        }
        get cb() {
            return EnumUtil.getEnumValue(SeriesSelectionMode_$type, this.c(SeriesViewer.ua));
        }
        set cb(a) {
            this.h(SeriesViewer.ua, enumGetBox(SeriesSelectionMode_$type, a));
        }
        get b6() {
            return EnumUtil.getEnumValue(SeriesSelectionBehavior_$type, this.c(SeriesViewer.t7));
        }
        set b6(a) {
            this.h(SeriesViewer.t7, enumGetBox(SeriesSelectionBehavior_$type, a));
        }
        get b9() {
            return EnumUtil.getEnumValue(SeriesSelectionMode_$type, this.c(SeriesViewer.sw));
        }
        set b9(a) {
            this.h(SeriesViewer.sw, enumGetBox(SeriesSelectionMode_$type, a));
        }
        get ch() {
            return EnumUtil.getEnumValue(SeriesViewerScrollbarMode_$type, this.c(SeriesViewer.tb));
        }
        set ch(a) {
            this.h(SeriesViewer.tb, enumGetBox(SeriesViewerScrollbarMode_$type, a));
        }
        get ci() {
            return EnumUtil.getEnumValue(SeriesViewerScrollbarMode_$type, this.c(SeriesViewer.uu));
        }
        set ci(a) {
            this.h(SeriesViewer.uu, enumGetBox(SeriesViewerScrollbarMode_$type, a));
        }
        get ce() {
            return EnumUtil.getEnumValue(SeriesViewerHorizontalScrollbarPosition_$type, this.c(SeriesViewer.td));
        }
        set ce(a) {
            this.h(SeriesViewer.td, enumGetBox(SeriesViewerHorizontalScrollbarPosition_$type, a));
        }
        get cl() {
            return EnumUtil.getEnumValue(SeriesViewerVerticalScrollbarPosition_$type, this.c(SeriesViewer.uw));
        }
        set cl(a) {
            this.h(SeriesViewer.uw, enumGetBox(SeriesViewerVerticalScrollbarPosition_$type, a));
        }
        get vv() {
            return this.c(SeriesViewer.s7);
        }
        set vv(a) {
            this.h(SeriesViewer.s7, a);
        }
        get vw() {
            return this.c(SeriesViewer.tc);
        }
        set vw(a) {
            this.h(SeriesViewer.tc, a);
        }
        get h0() {
            return this.c(SeriesViewer.tf);
        }
        set h0(a) {
            this.h(SeriesViewer.tf, a);
        }
        get hz() {
            return this.c(SeriesViewer.ta);
        }
        set hz(a) {
            this.h(SeriesViewer.ta, a);
        }
        get hw() {
            return this.c(SeriesViewer.s6);
        }
        set hw(a) {
            this.h(SeriesViewer.s6, a);
        }
        get hx() {
            return this.c(SeriesViewer.s8);
        }
        set hx(a) {
            this.h(SeriesViewer.s8, a);
        }
        get hy() {
            return this.c(SeriesViewer.s9);
        }
        set hy(a) {
            this.h(SeriesViewer.s9, a);
        }
        get h2() {
            return this.c(SeriesViewer.th);
        }
        set h2(a) {
            this.h(SeriesViewer.th, a);
        }
        get h1() {
            return this.c(SeriesViewer.tg);
        }
        set h1(a) {
            this.h(SeriesViewer.tg, a);
        }
        get ey() {
            return this.c(SeriesViewer.te);
        }
        set ey(a) {
            this.h(SeriesViewer.te, a);
        }
        get v5() {
            return this.c(SeriesViewer.ur);
        }
        set v5(a) {
            this.h(SeriesViewer.ur, a);
        }
        get v6() {
            return this.c(SeriesViewer.uv);
        }
        set v6(a) {
            this.h(SeriesViewer.uv, a);
        }
        get io() {
            return this.c(SeriesViewer.uy);
        }
        set io(a) {
            this.h(SeriesViewer.uy, a);
        }
        get im() {
            return this.c(SeriesViewer.ut);
        }
        set im(a) {
            this.h(SeriesViewer.ut, a);
        }
        get ik() {
            return this.c(SeriesViewer.uq);
        }
        set ik(a) {
            this.h(SeriesViewer.uq, a);
        }
        get ir() {
            return this.c(SeriesViewer.u1);
        }
        set ir(a) {
            this.h(SeriesViewer.u1, a);
        }
        nn() {
            if (!this.al.g && !this.al.f && !this.c9.a.g && !this.c9.a.f) {
                this.pz();
            }
        }
        pz() {
            this.nl();
        }
        get il() {
            return this.c(SeriesViewer.us);
        }
        set il(a) {
            this.h(SeriesViewer.us, a);
        }
        get iq() {
            return this.c(SeriesViewer.u0);
        }
        set iq(a) {
            this.h(SeriesViewer.u0, a);
        }
        get ip() {
            return this.c(SeriesViewer.uz);
        }
        set ip(a) {
            this.h(SeriesViewer.uz, a);
        }
        get gj() {
            return this.c(SeriesViewer.ux);
        }
        set gj(a) {
            this.h(SeriesViewer.ux, a);
        }
        ca() {
            if (this.cb == 0) {
                return 1;
            }
            return this.cb;
        }
        b5() {
            if (this.b6 == 0) {
                return 3;
            }
            return this.b6;
        }
        bx() {
            if (this.bw == 0) {
                return 1;
            }
            if (this.by == 3 || this.by == 5) {
                if (this.bw == 2) {
                    return 4;
                }
            }
            return this.bw;
        }
        get bv() {
            return this.bu;
        }
        get b8() {
            return this.b7;
        }
        get b4() {
            return this.b3;
        }
        get bw() {
            return EnumUtil.getEnumValue(SeriesHighlightingBehavior_$type, this.c(SeriesViewer.s1));
        }
        set bw(a) {
            this.h(SeriesViewer.s1, enumGetBox(SeriesHighlightingBehavior_$type, a));
        }
        get bd() {
            return EnumUtil.getEnumValue(LegendHighlightingMode_$type, this.c(SeriesViewer.tm));
        }
        set bd(a) {
            this.h(SeriesViewer.tm, enumGetBox(LegendHighlightingMode_$type, a));
        }
        get bf() {
            return EnumUtil.getEnumValue(LegendItemBadgeShape_$type, this.c(SeriesViewer.to));
        }
        set bf(a) {
            this.h(SeriesViewer.to, enumGetBox(LegendItemBadgeShape_$type, a));
        }
        get be() {
            return EnumUtil.getEnumValue(LegendItemBadgeMode_$type, this.c(SeriesViewer.tn));
        }
        set be(a) {
            this.h(SeriesViewer.tn, enumGetBox(LegendItemBadgeMode_$type, a));
        }
        get ev() {
            return this.c(SeriesViewer.st);
        }
        set ev(a) {
            this.h(SeriesViewer.st, a);
        }
        qv(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
        pn() {
            this.po(this.series);
        }
        po(a) {
            for (let b of fromEn(a)) {
                let c = b.a5;
                if (c == null) {
                    continue;
                }
                let d = b.sy;
                if (d == null) {
                    continue;
                }
                if (c.containsChild(d)) {
                    c.removeChild(d);
                }
                if (!c.containsChild(d) && b.legendItemVisibility != 1) {
                    c.addChildInOrder(d, b);
                }
            }
        }
        p4(a, b, c, d) {
            this.q1(a, b, typeCast(MouseEventArgs.$, c), d);
        }
        p8(a, b, c, d) {
            this.q5(a, b, typeCast(MouseEventArgs.$, c), d);
        }
        p5(a, b, c, d) {
            this.q2(a, b, typeCast(MouseEventArgs.$, c), d);
        }
        p6(a, b, c, d) {
            this.q3(a, b, typeCast(MouseButtonEventArgs.$, c), d);
        }
        p7(a, b, c, d) {
            let e = typeCast(MouseButtonEventArgs.$, c);
            if (e != null) {
                this.q4(a, b, typeCast(MouseButtonEventArgs.$, c), d);
            }
            if (e != null) {
                if (!this.d6) {
                    this.qy(a, b, typeCast(MouseButtonEventArgs.$, c), d);
                }
            }
        }
        nd(a, b) {
            return null;
        }
        get fp() {
            return this.d6;
        }
        oy(a, b) {
            if (!this.d0 && a) {
                this.nq({ $type: Point_$type, x: NaN, y: NaN });
                this.d0 = true;
                this.d6 = true;
                if (this.ev) {
                    this.bb.f$y(this, b);
                }
                if (this.viewerManipulationStarting != null) {
                    let c = new SeriesViewerManipulationEventArgs();
                    c.isDragZoom = true;
                    this.viewerManipulationStarting(this, c);
                }
            }
        }
        ow(a, b) {
            if (!this.dz && a) {
                this.nq({ $type: Point_$type, x: NaN, y: NaN });
                this.dz = true;
                this.d6 = true;
                if (this.ev) {
                    this.bb.f$y(this, b);
                }
                if (this.viewerManipulationStarting != null) {
                    let c = new SeriesViewerManipulationEventArgs();
                    c.isDragSelect = true;
                    this.viewerManipulationStarting(this, c);
                }
            }
        }
        p9(a, b, c, d) {
        }
        qa(a, b, c, d) {
        }
        qz(a, b) {
            if (this.seriesCursorMouseMove != null && this.eq) {
                this.seriesCursorMouseMove(this, new ChartCursorEventArgs(this, a, b));
            }
        }
        q3(a, b, c, d) {
            if (this.seriesMouseLeftButtonDown != null) {
                this.seriesMouseLeftButtonDown(this, new DataChartMouseButtonEventArgs(this, a, b, c, d));
            }
        }
        q4(a, b, c, d) {
            if (this.seriesMouseLeftButtonUp != null) {
                this.seriesMouseLeftButtonUp(this, new DataChartMouseButtonEventArgs(this, a, b, c, d));
            }
        }
        qy(a, b, c, d) {
            let e = false;
            if (this.seriesClick != null) {
                let f = new DataChartMouseButtonEventArgs(this, a, b, c, d);
                this.seriesClick(this, f);
                e = f.cancelSelection;
            }
            if (a.isStacked) {
                return;
            }
            if (!e) {
                this.p2(a, b);
            }
        }
        p2(a, b) {
            if (b != null && this.b8 != 1) {
                if (a != null) {
                    if (!a.eg(b)) {
                        return;
                    }
                    if (a.bo != null) {
                        if (a.dp != null) {
                            let c = a.dp.indexOf(b);
                            if (c >= 0 && a.bo.dp != null) {
                                b = a.bo.dp.item(c);
                                a = a.bo;
                            }
                        }
                    }
                }
                let d = this.gs(a, b, this.b4);
                d = this.gu(d, this.b4);
                let e = this.gr(this.selectedSeriesItems, d, this.b4);
                for (let f = 0; f < e.count; f++) {
                    this.selectedSeriesItems.remove(e._inner[f]);
                }
                for (let g = 0; g < d.count; g++) {
                    this.selectedSeriesItems.add(d._inner[g]);
                }
            }
        }
        gu(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            let d = new List$1(ChartSelection.$, 0);
            for (let e of fromEnum(a)) {
                if (this.selectedSeriesItems.contains(e)) {
                    c.add(e);
                }
                else {
                    d.add(e);
                }
            }
            for (let f of fromEnum(c)) {
                this.selectedSeriesItems.remove(f);
            }
            return d;
        }
        gv(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            for (let d = 0; d < a.count; d++) {
                if (!this.fc(d, a, b)) {
                    c.add(a._inner[d]);
                }
            }
            return c;
        }
        fc(a, b, c) {
            let d = b._inner[a];
            switch (c) {
                case 1: return d.series != null;
                case 2:
                    if (d.series != null) {
                        return true;
                    }
                    for (let e = a + 1; e < b.count; e++) {
                        if (!Base.equalsStatic(d.item, b._inner[e].item)) {
                            return true;
                        }
                    }
                    return false;
                case 3: return d.series == null || d.item == null;
                case 4:
                    if (d.series == null || d.item == null) {
                        return true;
                    }
                    for (let f = a + 1; f < b.count; f++) {
                        if (d.series == b._inner[f].series && !Base.equalsStatic(d.item, b._inner[f].item)) {
                            return true;
                        }
                    }
                    return false;
                case 5:
                    if (d.series == null || d.item == null) {
                        return true;
                    }
                    for (let g = a + 1; g < b.count; g++) {
                        if (d.series != b._inner[g].series && !Base.equalsStatic(d.item, b._inner[g].item)) {
                            return true;
                        }
                    }
                    return false;
                case 6: return d.item != null;
                case 7:
                    if (d.item != null) {
                        return true;
                    }
                    for (let h = a + 1; h < b.count; h++) {
                        if (d.series != b._inner[h].series) {
                            return true;
                        }
                    }
                    return false;
            }
            return false;
        }
        gr(a, b, c) {
            let d = new List$1(ChartSelection.$, 0);
            let e = new HashSet$1(ChartSelection.$, 0);
            for (let f of fromEnum(b)) {
                this.n4(a, e, d, f, c);
            }
            return d;
        }
        n4(a, b, c, d, e) {
            switch (e) {
                case 1:
                    for (let f of fromEnum(a)) {
                        if (f.series != null) {
                            if (!b.contains(f)) {
                                b.add_1(f);
                                c.add(f);
                            }
                        }
                    }
                    break;
                case 2:
                    for (let g of fromEnum(a)) {
                        if (g.series != null || (g.item != null && !Base.equalsStatic(g.item, d.item))) {
                            if (!b.contains(g)) {
                                b.add_1(g);
                                c.add(g);
                            }
                        }
                    }
                    break;
                case 3:
                    for (let h of fromEnum(a)) {
                        if (h.item == null) {
                            if (!b.contains(h)) {
                                b.add_1(h);
                                c.add(h);
                            }
                        }
                    }
                    break;
                case 4:
                    for (let i of fromEnum(a)) {
                        if (i.item == null || (i.series == d.series && i.item != null && !Base.equalsStatic(i.item, d.item))) {
                            if (!b.contains(i)) {
                                b.add_1(i);
                                c.add(i);
                            }
                        }
                    }
                    break;
                case 5:
                    for (let j of fromEnum(a)) {
                        if (j.item == null || (j.series != null && j.series != d.series) || (j.item != null && !Base.equalsStatic(j.item, d.item))) {
                            if (!b.contains(j)) {
                                b.add_1(j);
                                c.add(j);
                            }
                        }
                    }
                    break;
                case 6:
                    for (let k of fromEnum(a)) {
                        if (k.item != null) {
                            if (!b.contains(k)) {
                                b.add_1(k);
                                c.add(k);
                            }
                        }
                    }
                    break;
                case 7:
                    for (let l of fromEnum(a)) {
                        if (l.item != null || l.series != d.series) {
                            if (!b.contains(l)) {
                                b.add_1(l);
                                c.add(l);
                            }
                        }
                    }
                    break;
            }
        }
        gs(a, b, c) {
            let d = new List$1(ChartSelection.$, 0);
            switch (c) {
                case 1:
                case 2:
                    d.add(((() => {
                        let $ret = new ChartSelection();
                        $ret.item = b;
                        return $ret;
                    })()));
                    break;
                case 3:
                case 4:
                case 5:
                    d.add(((() => {
                        let $ret = new ChartSelection();
                        $ret.item = b;
                        $ret.series = a;
                        return $ret;
                    })()));
                    break;
                case 6:
                case 7:
                    d.add(((() => {
                        let $ret = new ChartSelection();
                        $ret.series = a;
                        return $ret;
                    })()));
                    break;
            }
            return d;
        }
        rp(a) {
            this.bb.f$as(this, a);
        }
        rq(a) {
            a = { $type: Point_$type, x: a.x - this.wz.left, y: a.y - this.wz.top };
            let b = this.wb(a);
            if (this.f7) {
                this.nq(b);
            }
            else {
                let c = this.bv;
                let d = c == 2 || c == 3 || c == 4;
                if (d) {
                    this.ry(b);
                    for (let e = 0; e < this.series.count; e++) {
                        let f = this.series._inner[e];
                        f.ss(b);
                        if (f.isStacked) {
                            f.p5((g) => {
                                if (g.ei) {
                                    g.p3((h) => {
                                        h.ss(b);
                                        return true;
                                    });
                                }
                                g.ss(b);
                                return true;
                            });
                        }
                        if (f.ei) {
                            f.p3((g) => {
                                g.ss(b);
                                return true;
                            });
                        }
                    }
                }
            }
        }
        q5(a, b, c, d) {
            if (this.seriesMouseMove != null) {
                this.seriesMouseMove(this, new ChartMouseEventArgs(this, a, b, c, d));
            }
        }
        q1(a, b, c, d) {
            if (this.seriesMouseEnter != null) {
                this.seriesMouseEnter(this, new ChartMouseEventArgs(this, a, b, c, d));
            }
        }
        q2(a, b, c, d) {
            if (this.seriesMouseLeave != null) {
                this.seriesMouseLeave(this, new ChartMouseEventArgs(this, a, b, c, d));
            }
        }
        ox() {
            if (this.d0) {
                this.d0 = false;
                if (this.viewerManipulationEnding != null) {
                    let a = new SeriesViewerManipulationEventArgs();
                    a.isDragZoom = true;
                    this.viewerManipulationEnding(this, a);
                }
            }
        }
        ov() {
            if (this.dz) {
                this.dz = false;
                if (this.viewerManipulationEnding != null) {
                    let a = new SeriesViewerManipulationEventArgs();
                    a.isDragSelect = true;
                    this.viewerManipulationEnding(this, a);
                }
            }
        }
        get_wz() {
            return this.wg;
        }
        get wz() {
            return this.get_wz();
        }
        get wl() {
            return this.we;
        }
        set wl(a) {
            this.we = a;
        }
        get_ex() {
            return false;
        }
        get ex() {
            return this.get_ex();
        }
        wr(a, b, c) {
            if (c.isEmpty) {
                return c;
            }
            let d = c;
            let e = b;
            let f = (d.left - e.left) / e.width;
            let g = (d.top - e.top) / e.height;
            let h = (d.right - e.left) / e.width;
            let i = (d.bottom - e.top) / e.height;
            f = a.left + f * a.width;
            g = a.top + g * a.height;
            h = a.left + h * a.width;
            i = a.top + i * a.height;
            return new Rect(0, f, g, h - f, i - g);
        }
        get_wk() {
            if (this.dx) {
                this.dx = false;
                let a = this.wp(this.wz, this.wl, this.wh);
                this.wd = a;
            }
            return this.wd;
        }
        get wk() {
            return this.get_wk();
        }
        wp(a, b, c) {
            let d = b;
            let e = c;
            let f = a;
            if (f.isEmpty) {
                return Rect.empty;
            }
            if (d.isEmpty) {
                return a;
            }
            let g = (d.left - f.left) / f.width;
            let h = (d.right - f.left) / f.width;
            let i = (d.top - f.top) / f.height;
            let j = (d.bottom - f.top) / f.height;
            g = f.left + (g - e.left) / e.width * f.width;
            h = f.left + (h - e.left) / e.width * f.width;
            i = f.top + (i - e.top) / e.height * f.height;
            j = f.top + (j - e.top) / e.height * f.height;
            let k = new Rect(0, g, i, h - g, j - i);
            k.intersect(f);
            return k;
        }
        wj(a) {
            this.dx = true;
            if (this.eu()) {
                if (a.isEmpty) {
                    return Rect.empty;
                }
                let b;
                if (a.width > a.height) {
                    let c = intDivide(truncate((a.width - a.height)), 2);
                    b = new Rect(0, a.left + c, a.top, a.height, a.height);
                }
                else {
                    let d = intDivide(truncate((a.height - a.width)), 2);
                    b = new Rect(0, a.left, a.top + d, a.width, a.width);
                }
                return b;
            }
            return Rect.empty;
        }
        wq() {
            return this.wz;
        }
        ru(a) {
            a.kh = this.wz;
        }
        get i3() {
            return this.iz;
        }
        set i3(a) {
            this.iz = a;
        }
        qp(a, b) {
            if (!b.isEmpty) {
                this.wg = b;
                this.we = this.wj(this.wg);
                this.c9.eq(this.wg);
            }
            if (this.eu()) {
                if (this.actualSyncLink != null) {
                    this.r6(this.wh, false);
                }
            }
            this.py(a, b);
            if (this.el) {
                this.bc.updateScrollbars(this, this.wh, this.wh, a, b);
            }
        }
        cd() {
            return this.cc;
        }
        nm(a, b) {
            let c = false;
            c = true;
            if (this.wz.containsPoint(a)) {
                if (!this.d4) {
                    this.d4 = true;
                    if (this.plotAreaMouseEnter != null) {
                        let d = this.bl(a, false, c);
                        d.isDuringManipulation = b;
                        this.plotAreaMouseEnter(this, d);
                    }
                }
                else {
                    this.d4 = true;
                    if (this.plotAreaMouseOver != null) {
                        let e = this.bl(a, false, c);
                        e.isDuringManipulation = b;
                        this.plotAreaMouseOver(this, e);
                    }
                }
            }
            else {
                if (this.d4) {
                    this.d4 = false;
                    if (this.plotAreaMouseLeave != null) {
                        let f = this.bl(a, false, c);
                        f.isDuringManipulation = b;
                        this.plotAreaMouseLeave(this, f);
                    }
                }
            }
        }
        get av() {
            return this.at;
        }
        set av(a) {
            let b = this.at;
            this.at = a;
            if (b != this.at) {
                this.qv("ContentHitTestMode", enumGetBox(ChartHitTestMode_$type, b), enumGetBox(ChartHitTestMode_$type, this.at));
            }
        }
        q7() {
            this.au = this.aw();
        }
        aw() {
            if (!this.fa) {
                return 1;
            }
            return this.bb.f$a(this);
        }
        get au() {
            return this.as;
        }
        set au(a) {
            let b = this.as;
            this.as = a;
            if (b != this.as) {
                this.qv("ActualContentHitTestMode", enumGetBox(ChartHitTestMode_$type, b), enumGetBox(ChartHitTestMode_$type, this.as));
            }
        }
        queueForAnimationIdle(a, b) {
            this.du.j(a, b);
        }
        getAnimationIdleVersionNumber() {
            return this.du.f();
        }
        isAnimationActive() {
            for (let a = 0; a < this.series.count; a++) {
                if (this.series._inner[a].d4()) {
                    return true;
                }
            }
            if (this.db.f()) {
                return true;
            }
            return false;
        }
        p3(a) {
            this.qb();
        }
        pg() {
            this.qb();
        }
        qb() {
            if (!this.isAnimationActive()) {
                this.du.h();
            }
        }
        qx(a) {
            if (this.seriesAnimating != null) {
                this.seriesAnimating(a);
            }
        }
        fk() {
            return this.fl() || this.fm();
        }
        onDetachedFromUI() {
            this.d3 = true;
            this.c9.c2();
            SyncManager.e(this);
        }
        onAttachedToUI() {
            this.d3 = false;
            this.c9.cw();
            SyncManager.c(this);
        }
        get c0() {
            return this.cv;
        }
        set c0(a) {
            if (this.c0 != a) {
                let b = this.cv;
                this.cv = a;
                if (this.fa) {
                    this.bb.f$aj(this);
                }
                if (b == 1 && this.cv != 1) {
                    this.ox();
                }
                if (b == 3 && this.cv != 3) {
                    this.ov();
                }
            }
        }
        pq(a) {
            this.nq(this.wb(a));
        }
        pr(a, b) {
            let c = false;
            c = false;
            this.nq({ $type: Point_$type, x: NaN, y: NaN });
            if (this.d4) {
                this.d4 = false;
                if (this.plotAreaMouseLeave != null) {
                    let d = this.bl(a, false, c);
                    d.isDuringManipulation = b;
                    this.plotAreaMouseLeave(this, d);
                }
            }
        }
        fx(a, b) {
            return this.bb.f$h(this, a, b);
        }
        o9(a) {
            this.bb.f$r(this, a);
        }
        fw(a) {
            return this.bb.f$g(this, a);
        }
        get ek() {
            return this.dy;
        }
        set ek(a) {
            this.dy = a;
        }
        get_fb() {
            return this.eo || this.gg();
        }
        get fb() {
            return this.get_fb();
        }
        pb(a) {
            this.bb.f$t(this, a);
        }
        get et() {
            return this.dy;
        }
        pv(a) {
            this.bb.f$ah(this, a);
        }
        pc(a, b) {
            this.bb.f$u(this, a, b);
        }
        pa(a) {
            this.bb.f$s(this, a);
        }
        get fy() {
            return this.d8;
        }
        set fy(a) {
            this.d8 = a;
        }
        qk(a) {
            this.bb.f$ao(this, a);
        }
        pu(a) {
            this.bb.f$ag(this, a);
        }
        ql(a, b, c, d) {
            this.bb.f$ap(this, a, b, c, d);
        }
        pt(a) {
            this.bb.f$af(this, a);
        }
        qh(a, b, c, d) {
            this.bb.f$al(this, a, b, c, d);
        }
        pp(a) {
            this.bb.f$ac(this, a);
        }
        ps(a) {
            this.bb.f$ae(this, a);
        }
        pf(a) {
            this.bb.f$v(this, a);
        }
        qg(a, b, c, d) {
            this.bb.f$ak(this, a, b, c, d);
        }
        qd() {
            this.d6 = false;
        }
        pi(a) {
            this.c9.ej(a.height);
        }
        n5() {
            if (this.dy) {
                this.nq({ $type: Point_$type, x: NaN, y: NaN });
                this.c9.ch();
            }
            this.dy = false;
        }
        o2(a, b) {
            this.bb.f$q(this, a, b);
        }
        cy(a) {
            let b = this.c9.k != null && this.c9.k.al ? this.cz : this.cw;
            if (b != 4) {
                return b;
            }
            return this.c9.m(a);
        }
        qj(a, b) {
            this.ed = false;
            if (!this.ee) {
                this.nq({ $type: Point_$type, x: NaN, y: NaN });
                if (a) {
                    this.ee = true;
                    this.d6 = true;
                    if (this.ev) {
                        this.bb.f$y(this, b);
                    }
                    if (this.viewerManipulationStarting != null) {
                        let c = new SeriesViewerManipulationEventArgs();
                        c.isZoomPan = true;
                        this.viewerManipulationStarting(this, c);
                    }
                }
            }
            this.bb.f$an(this);
        }
        qi() {
            if (this.ee) {
                this.ee = false;
                if (this.viewerManipulationEnding != null) {
                    let a = new SeriesViewerManipulationEventArgs();
                    a.isZoomPan = true;
                    this.viewerManipulationEnding(this, a);
                }
            }
            this.bb.f$am(this);
        }
        rr() {
            this.bb.f$at(this);
        }
        nu() {
            if (this.ed) {
                this.o6();
            }
            this.bb.f$n(this);
        }
        np() {
            this.no();
        }
        no() {
            if (this.fa) {
                this.bb.f$k(this);
            }
        }
        qn() {
        }
        rb() {
        }
        q9() {
            for (let a = 0; a < this.series.count; a++) {
                this.series._inner[a].ru(false);
            }
            this.n0(false, false, true);
        }
        o1(a, b) {
            this.bb.f$p(this, a, b);
        }
        f4() {
            return false;
        }
        get ga() {
            return this.d9;
        }
        set ga(a) {
            this.d9 = a;
        }
        o0(a, b, c) {
            this.bb.f$o(this, a, b, c);
        }
        r3(a, b) {
            if (b.propertyName == SyncSettings.$$p[0]) {
                SyncManager.b(this, b.oldValue, b.newValue);
            }
        }
        r2(a, b) {
            if (a != null) {
                a.as(this);
                a.propertyUpdated = delegateRemove(a.propertyUpdated, this.propertyUpdated);
            }
            if (b != null) {
                b.al(this);
                b.propertyUpdated = delegateCombine(b.propertyUpdated, this.propertyUpdated);
            }
            for (let c of fromEnum(this.series)) {
                c.c4 = this.actualSyncLink;
                c.dc = this;
            }
        }
        nq(a) {
            if (this.el) {
                this.bc.onCrosshairMoved(this.v9(a));
            }
            this.actualSyncLink.an(this, a);
        }
        r6(a, b) {
            this.r7(a, b, !b);
        }
        r7(a, b, c) {
            if (!b) {
                this.actualSyncLink.au(this, a, c);
            }
            else {
                if (!this.fl() && !this.fm()) {
                    return;
                }
                let d = !a.isEmpty && !isNaN_(a.x) && !isNaN_(a.y) && !isNaN_(a.width) && !isNaN_(a.height);
                let e = a;
                if (d && !this.f6) {
                    if (e.width < this.ho) {
                        return;
                    }
                    else if (e.height < this.hn) {
                        return;
                    }
                }
                if (d && !this.fl()) {
                    e = new Rect(0, 0, a.y, 1, a.height);
                }
                if (d && !this.fm()) {
                    e = new Rect(0, a.x, 0, a.width, 1);
                }
                this.actualSyncLink.at(this, e);
            }
        }
        qo(a, b) {
            if (!b) {
                this.actualSyncLink.ap(this, a);
            }
            else {
                if (!this.fl() && !this.fm()) {
                    return;
                }
                let c = !a.isEmpty && !isNaN_(a.x) && !isNaN_(a.y) && !isNaN_(a.width) && !isNaN_(a.height);
                let d = a;
                if (c && !this.fl()) {
                    d = new Rect(0, 0, a.y, 1, a.height);
                }
                if (c && !this.fm()) {
                    d = new Rect(0, a.x, 0, a.width, 1);
                }
                this.actualSyncLink.ap(this, d);
            }
        }
        get fg() {
            return this.actualSyncLink != null;
        }
        *_go() {
            if (this.actualSyncLink == null) {
                return undefined;
            }
            for (let a of fromEnum(this.actualSyncLink.ai)) {
                yield a;
            }
        }
        go() {
            return toEnum(() => this._go());
        }
        wb(a) {
            a = { $type: Point_$type, x: a.x + this.wz.left, y: a.y + this.wz.top };
            let b = this.wk;
            let c = ViewportUtils.b(a.x, this.wh, this.wz, this.wl);
            let d = ViewportUtils.g(a.y, this.wh, this.wz, this.wl);
            return { $type: Point_$type, x: c, y: d };
        }
        v9(a) {
            let b = this.wk;
            let c = ViewportUtils.e(a.x, this.wh, this.wz, this.wl);
            let d = ViewportUtils.i(a.y, this.wh, this.wz, this.wl);
            return { $type: Point_$type, x: c, y: d };
        }
        wy(a) {
            let b = this.wb({ $type: Point_$type, x: a.left, y: a.top });
            let c = this.wb({ $type: Point_$type, x: a.right, y: a.bottom });
            return new Rect(0, b.x, b.y, c.x - b.x, c.y - b.y);
        }
        wm(a) {
            let b = this.v9({ $type: Point_$type, x: a.left, y: a.top });
            let c = this.v9({ $type: Point_$type, x: a.right, y: a.bottom });
            return new Rect(0, b.x, b.y, c.x - b.x, c.y - b.y);
        }
        q6(a, b) {
            if (this.windowRectChanged != null && Rect.l_op_Inequality(a, b)) {
                this.windowRectChanged(this, new RectChangedEventArgs(a, b));
            }
        }
        qf(a, b) {
            this.q6(a, b);
        }
        qc(a, b) {
            if (this.sizeChanged != null && Size.l_op_Inequality(a, b)) {
                this.sizeChanged(this, new RectChangedEventArgs(new Rect(1, 0, 0, a), new Rect(1, 0, 0, b)));
            }
        }
        f0(a, b) {
            if (a.width != b.width || a.height != b.height || a.x != b.x || a.y != b.y) {
                return true;
            }
            return false;
        }
        qs(a, b) {
            if (this.actualWindowRectChanged != null && this.f0(a, b)) {
                this.actualWindowRectChanged(this, new RectChangedEventArgs(a, b));
            }
        }
        r8(a) {
            if (isNaN_(a) || isInfinity(a)) {
                a = 0.05;
            }
            let b = this.hu() - a;
            let c = this.hu() - a;
            let d = this.hl + (a / 2);
            let e = this.hm + (a / 2);
            this.w0 = new Rect(0, d, e, b, c);
        }
        r9(a) {
            this.r8(a * -1);
        }
        rh() {
            this.c9.d2();
        }
        qt(a, b) {
            if (this.gridAreaRectChanged != null && Rect.l_op_Inequality(a, b)) {
                this.gridAreaRectChanged(this, new RectChangedEventArgs(a, b));
            }
        }
        get_fd() {
            return false;
        }
        get fd() {
            return this.get_fd();
        }
        py(a, b) {
            this.qt(a, b);
            if (this.fa) {
                this.bb.f$ar(this);
            }
            if (this.fd && (Rect.l_op_Equality(a, null) || a.isEmpty || a.width == 0 || a.height == 0)) {
                this.r6(this.w0, false);
            }
            else {
                this.oa();
            }
            if (a.isEmpty || a.width == 0 || a.height == 0) {
                this.ok();
            }
        }
        oe() {
            this.oa();
        }
        get ho() {
            return this.g2;
        }
        set ho(a) {
            let b = this.g2;
            this.g2 = a;
            this.qv("ActualWindowRectMinWidth", b, this.g2);
        }
        get hn() {
            return this.g1;
        }
        set hn(a) {
            let b = this.g1;
            this.g1 = a;
            this.qv("ActualWindowRectMinHeight", b, this.g1);
        }
        get syncChannel() {
            return this._syncChannel;
        }
        set syncChannel(a) {
            this._syncChannel = a;
        }
        get actualSyncLink() {
            return this.cm;
        }
        set actualSyncLink(a) {
            let b = this.cm;
            this.cm = a;
            this.qv("ActualSyncLink", b, this.cm);
        }
        oc() {
            this.c9.d3();
        }
        o7() {
            this.ed = true;
        }
        o5() {
            this.ed = false;
        }
        o6() {
            if (this.ed) {
                if (this.ee) {
                    this.ee = false;
                    if (!this.d0) {
                        if (this.viewerManipulationEnding != null) {
                            let a = new SeriesViewerManipulationEventArgs();
                            a.isZoomPan = true;
                            this.viewerManipulationEnding(this, a);
                        }
                        this.d6 = false;
                    }
                }
            }
        }
        get c2() {
            return this.c9.i().a;
        }
        rz(a) {
            if (this.c2 != null) {
                this.c2.mobileMode = a;
            }
        }
        get cr() {
            return this.cq;
        }
        set cr(a) {
            this.cq = a;
        }
        cs() {
            if (this.ct == 0) {
                return 1;
            }
            return this.ct;
        }
        ep() {
            return this.c0 == 0 && !this.d8 && !this.d9;
        }
        eh() {
            if (this.actualSyncLink != null && this.actualSyncLink.ai.count > 0) {
                let a = true;
                a = this.ep();
                if (!a) {
                    return false;
                }
                for (let b = 0; b < this.actualSyncLink.ai.count; b++) {
                    if (!this.actualSyncLink.ai.item(b).ep()) {
                        return false;
                    }
                }
                return true;
            }
            else {
                return this.ep();
            }
        }
        nj() {
            if (this.c0 == 2) {
                this.c9.bt();
                this.c0 = 0;
                this.qi();
                this.qo(Rect.empty, true);
                if (this.cp == 1) {
                    this.r6(this.w1, true);
                }
            }
            if (this.c0 == 1 || this.c0 == 3) {
                this.c9.bt();
                this.c0 = 0;
                this.qi();
                this.c9.cf();
                this.qo(Rect.empty, true);
            }
        }
        notifyCrosshairUpdate() {
        }
        r4(a, b) {
            let c = this.ho;
            let d = this.hn;
            this.w0 = new Rect(0, this.hl, this.hm, MathUtil.d(a, c, 1), MathUtil.d(b, d, 1));
        }
        r5(a, b, c, d) {
            if (!MathUtil.a(a) || a < 0 || a >= 1) {
                a = this.hl;
            }
            if (!MathUtil.a(b) || b < 0 || b >= 1) {
                b = this.hm;
            }
            if (!MathUtil.a(d)) {
                d = this.hv();
            }
            if (!MathUtil.a(c)) {
                c = this.hu();
            }
            this.w0 = new Rect(0, a, b, MathUtil.d(c, this.ho, 1), MathUtil.d(d, this.hn, 1));
        }
        hu() {
            return 1;
        }
        hv() {
            return 1;
        }
        h8() {
            if (this.iv > 0) {
                return this.iv;
            }
            let a = Rect.l_op_Inequality(this.wz, null) && !this.wz.isEmpty && MathUtil.a(this.wz.width);
            let b = MathUtil.a(this.ix);
            if (b && a) {
                let c = this.ix / this.wz.width;
                if (c <= 0 || c >= 1) {
                    c = 0.0001;
                }
                return c;
            }
            return 0.0001;
        }
        h7() {
            if (this.iu > 0) {
                return this.iu;
            }
            let a = Rect.l_op_Inequality(this.wz, null) && !this.wz.isEmpty && MathUtil.a(this.wz.height);
            let b = MathUtil.a(this.iw);
            if (b && a) {
                let c = this.iw / this.wz.height;
                if (c <= 0 || c >= 1) {
                    c = 0.0001;
                }
                return c;
            }
            return 0.0001;
        }
        qq(a, b, c, d) {
            switch (b) {
                case SeriesViewer.$$p[47]:
                    this.c9.dj();
                    break;
                case SeriesViewer.$$p[44]:
                    this.c9.dj();
                    break;
                case SeriesViewer.$$p[59]:
                    this.cr = this.cs();
                    break;
                case "HorizontalViewScrollbarMode":
                    this.cf = this.ch;
                    if (this.en || this.fa) {
                        this.bc.onHorizontalScrollbarModeChanged(this.cf);
                    }
                    break;
                case "VerticalViewScrollbarMode":
                    this.cg = this.ci;
                    if (this.en || this.fa) {
                        this.bc.onVerticalScrollbarModeChanged(this.cg);
                    }
                    break;
                case "ActualContentHitTestMode":
                    this.os();
                    break;
                case "ContentHitTestMode":
                    this.q7();
                    break;
                case SeriesViewer.$$p[46]:
                    this.c9.dh(c, d);
                    this.c9.dj();
                    break;
                case SeriesViewer.$$p[43]:
                    this.c9.dd(c, d);
                    this.c9.dj();
                    break;
                case "TitleTextStyle":
                case "TitleTextColor":
                case "SubtitleTextStyle":
                case "SubtitleTextColor":
                case "TitleTopMargin":
                case "TitleLeftMargin":
                case "TitleRightMargin":
                case "TitleBottomMargin":
                case "SubtitleTopMargin":
                case "SubtitleLeftMargin":
                case "SubtitleRightMargin":
                case "SubtitleBottomMargin":
                    this.c9.dj();
                    break;
                case SeriesViewer.$$p[30]:
                case SeriesViewer.$$p[31]:
                case SeriesViewer.$$p[32]:
                    this.c9.db();
                    break;
                case "PixelScalingRatio":
                    if (isNaN_(DeviceUtils.a(this.h5))) {
                        this.n9();
                    }
                    else {
                        this.hk = DeviceUtils.a(this.h5);
                    }
                    break;
                case "InteractionPixelScalingRatio":
                    this.hj = this.h3;
                    break;
                case "ActualPixelScalingRatio":
                    this.c9.dq();
                    break;
                case SeriesViewer.$$p[17]:
                    this.c9.cp();
                    break;
                case "ActualSyncLink":
                    this.r2(typeCast(SyncLink.$, c), typeCast(SyncLink.$, d));
                    break;
                case SeriesViewer.$$p[3]:
                    if (!this.e0) {
                        this.gh = true;
                    }
                    if (this.w4 == 0) {
                        this.eq = true;
                    }
                    else {
                        this.eq = this.ef;
                    }
                    if (this.fa) {
                        this.bb.f$ar(this);
                    }
                    break;
                case "CrosshairPoint":
                    if (this.fa) {
                        if (this.fv) {
                            this.ry(this.v8);
                        }
                        this.bb.f$ar(this);
                    }
                    this.notifyCrosshairUpdate();
                    break;
                case SeriesViewer.$$p[55]:
                    if (this.actualSyncLink != null) {
                        this.i2++;
                        this.r6(d, false);
                        this.i2--;
                    }
                    if (!this.w0.equals1(c) && this.i2 == 0) {
                        this.qf(c, this.w0);
                    }
                    this.oa();
                    break;
                case SeriesViewer.$$p[51]:
                    this.hl = this.is;
                    break;
                case SeriesViewer.$$p[52]:
                    this.hm = this.it;
                    break;
                case "ActualWindowPositionVertical":
                case "ActualWindowPositionHorizontal":
                    if (!this.gc) {
                        this.r4(this.hu(), this.hv());
                    }
                    break;
                case SeriesViewer.$$p[54]:
                case SeriesViewer.$$p[58]:
                    this.ho = this.h8();
                    break;
                case SeriesViewer.$$p[53]:
                case SeriesViewer.$$p[57]:
                    this.hn = this.h7();
                    break;
                case SeriesViewer.$$p[18]:
                    this.c9.c5();
                    break;
                case SeriesViewer.$$p[14]:
                    this.db.r = this.i9;
                    break;
                case SeriesViewer.$$p[39]:
                    this.dd.r = this.jc;
                    break;
                case SeriesViewer.$$p[9]:
                    this.da.r = this.i6;
                    break;
                case SeriesViewer.$$p[37]:
                    if (this.fa) {
                        let e = this.dl;
                        e.dismissHighlightDelay = this.jb;
                    }
                    break;
                case SeriesViewer.$$p[13]:
                    if (this.fa) {
                        let f = this.dk;
                        f.dismissHighlightDelay = this.i8;
                    }
                    break;
                case SeriesViewer.$$p[8]:
                    if (this.fa) {
                        let g = this.dj;
                        g.dismissHighlightDelay = this.i5;
                    }
                    break;
                case SeriesViewer.$$p[23]:
                    this.r1();
                    break;
                case "ActualWindowRect":
                    this.dx = true;
                    if (this.f0(c, d)) {
                        this.ne(c, d);
                    }
                    if (d.width == 1 && d.height == 1 && c.isEmpty) {
                        this.gk = true;
                    }
                    this.qs(c, d);
                    break;
                case SeriesViewer.$$p[27]:
                    this.c9.da(d);
                    break;
                case SeriesViewer.$$p[49]:
                    this.eg = this.gi;
                    break;
                case SeriesViewer.$$p[60]:
                    this.i3 = this.jd;
                    this.no();
                    break;
                case SeriesViewer.$$p[29]:
                    this.bb.f$ai(this);
                    break;
                case "HighlightingMode":
                case "HighlightingBehavior":
                    this.bu = this.bx();
                    if (this.fa) {
                        let h = this.dk;
                        h.retainMainShapes = this.bv == 3;
                        h.isExclusiveHighlight = this.bv == 1;
                    }
                    break;
                case "SelectionMode":
                    this.b7 = this.ca();
                    if (this.b7 == 1 && this.selectedSeriesItems.count > 0) {
                        this.selectedSeriesItems.clear();
                    }
                    if (this.fa) {
                        let i = this.dl;
                    }
                    break;
                case "SelectionBehavior":
                    this.b3 = this.b5();
                    if (this.fa) {
                        let j = this.dl;
                    }
                    break;
                case "LegendItemBadgeShape":
                    for (let k of fromEnum(this.series)) {
                        k.legendItemBadgeShape = this.bf;
                    }
                    break;
                case "LegendItemBadgeMode":
                    for (let l of fromEnum(this.series)) {
                        l.be = this.be;
                    }
                    break;
                case SeriesViewer.$$p[1]:
                case SeriesViewer.$$p[22]:
                case SeriesViewer.$$p[20]:
                case SeriesViewer.$$p[21]:
                case SeriesViewer.$$p[19]:
                    for (let m of fromEnum(this.series)) {
                        m.qi();
                    }
                    break;
                case "HorizontalViewScrollbarCornerRadius":
                case "HorizontalViewScrollbarFill":
                case "HorizontalViewScrollbarMaxOpacity":
                case "HorizontalViewScrollbarOutline":
                case "HorizontalViewScrollbarStrokeThickness":
                case "VerticalViewScrollbarCornerRadius":
                case "VerticalViewScrollbarFill":
                case "VerticalViewScrollbarMaxOpacity":
                case "VerticalViewScrollbarOutline":
                case "VerticalViewScrollbarStrokeThickness":
                    if (this.fa) {
                        this.bc.updateBarAppearance(this, this.vv, this.v5, this.vw, this.v6, this.h0, this.io, this.hz, this.im);
                    }
                    break;
                case "HorizontalViewScrollbarHeight":
                case "HorizontalViewScrollbarInset":
                case SeriesViewer.kr:
                case "HorizontalViewScrollbarTrackStartInset":
                case "HorizontalViewScrollbarTrackEndInset":
                    if (this.fa) {
                        this.bc.updateBarDimensions(this, this.hx, this.hw, this.hy, this.ey, this.h2, this.h1, this.ir, this.ik, this.il, this.gj, this.iq, this.ip);
                    }
                    break;
                case "VerticalViewScrollbarPosition":
                    if (this.fa) {
                        this.bc.updateVerticalScrollbarPosition(this.cl);
                    }
                    break;
                case "HorizontalViewScrollbarPosition":
                    if (this.fa) {
                        this.bc.updateHorizontalScrollbarPosition(this.ce);
                    }
                    break;
            }
            if (this.fi && this.a8 != null) {
                this.a9.onTargetPropertyChanged(this, b, c, d);
            }
        }
        get e7() {
            return this.bv == 2 || this.bv == 3 || this.bv == 4;
        }
        get fv() {
            return this.bv == 2 || this.bv == 3 || this.bv == 4;
        }
        ry(a) {
            let b = 1.7976931348623157E+308;
            let c = null;
            for (let d = 0; d < this.series.count; d++) {
                let e = this.series._inner[d];
                if (e.eu) {
                    continue;
                }
                if (e.ef && e.el) {
                    continue;
                }
                if (e.isStacked) {
                    e.p5((f) => {
                        let g = this.nc(f, b, c, a);
                        if (g == null) {
                            return true;
                        }
                        b = g.c;
                        c = g.d;
                        if (f.ei) {
                            f.p3((h) => {
                                let i = this.nc(h, b, c, a);
                                if (i == null) {
                                    return true;
                                }
                                b = i.c;
                                c = i.d;
                                return true;
                            });
                        }
                        return true;
                    });
                }
                if (e.ei) {
                    e.p3((f) => {
                        let g = this.nc(f, b, c, a);
                        if (g == null) {
                            return true;
                        }
                        b = g.c;
                        c = g.d;
                        return true;
                    });
                }
                let f = this.nc(e, b, c, a);
                if (f == null) {
                    continue;
                }
                b = f.c;
                c = f.d;
            }
            this.bq = c;
        }
        nc(a, b, c, d) {
            let e = a.wc(d);
            let f = a.wh(d, true, true);
            if (isNaN_(f.x) || isNaN_(f.y)) {
                return null;
            }
            let g = (e.x - f.x) * (e.x - f.x) + (e.y - f.y) * (e.y - f.y);
            if (g < b) {
                b = g;
                c = a;
            }
            return new Tuple$2(Number_$type, Series.$, b, c);
        }
        r1() {
            this.ec = this.w5 == 0;
            this.c9.dp();
            this.r0();
            this.c9.em();
            this.oc();
            this.oq();
        }
        os() {
            this.c9.cv();
        }
        r0() {
            if (this.c2 == null) {
                return;
            }
            this.c2.visibility = this.w5;
            this.c2.isZoomable = this.fk();
        }
        get ws() {
            return this.wf;
        }
        set ws(a) {
            let b = this.wf;
            this.wf = a;
            if (this.wf.isEmpty) {
                this.c9.cj();
            }
            else {
                this.c9.en(this.wz, this.wv(this.ws));
                this.c9.ec();
                this.qv("PreviewRect", b, this.wf);
            }
        }
        get selectedSeriesItems() {
            return this._selectedSeriesItems;
        }
        set selectedSeriesItems(a) {
            this._selectedSeriesItems = a;
        }
        get focusedSeriesItems() {
            return this._focusedSeriesItems;
        }
        set focusedSeriesItems(a) {
            this._focusedSeriesItems = a;
        }
        p0(a, b) {
            if (this.selectedSeriesItemsChanged != null) {
                this.selectedSeriesItemsChanged(a, b);
            }
        }
        pd(a, b) {
            if (this.focusedSeriesItemsChanged != null) {
                this.focusedSeriesItemsChanged(a, b);
            }
        }
        rt() {
            this.hl = this.wh.x;
            this.hm = this.wh.y;
        }
        ne(a, b) {
            this.gk = false;
            this.gw = dateNow();
            if (this.e6) {
                for (let c = 0; c < this.series.count; c++) {
                    this.series._inner[c].o5();
                }
                this.dk.clear();
            }
            if (this.db.f()) {
                this.db.w();
            }
            let d = this.gc;
            this.gc = true;
            this.rt();
            this.gc = d;
            this.c9.ck();
            this.c9.ep(this.wh);
            if (this.el) {
                this.bc.updateScrollbars(this, a, this.wh, this.wz, this.wz);
            }
            this.ot(a, b);
        }
        f1() {
            return this.b8 != 1;
        }
        ot(a, b) {
        }
        wv(a) {
            if (this.wz.isEmpty) {
                return Rect.empty;
            }
            let b = this.wz;
            let c = b.left + (b.width * (a.left - this.wh.left) / this.wh.width);
            let d = b.top + (b.height * (a.top - this.wh.top) / this.wh.height);
            let e = b.left + (b.width * (a.right - this.wh.left) / this.wh.width);
            let f = b.top + (b.height * (a.bottom - this.wh.top) / this.wh.height);
            return new Rect(0, c, d, e - c, f - d);
        }
        qw() {
            if (this.refreshCompleted != null && !this.destroyed) {
                this.refreshCompleted(this, new RefreshCompletedEventArgs());
            }
        }
        qe(a) {
            this.r0();
        }
        get mj() {
            return this.jk;
        }
        set mj(a) {
            let b = this.jk;
            this.jk = a;
            this.qv("TitleTextStyle", b, a);
        }
        get l7() {
            return this.jj;
        }
        set l7(a) {
            let b = this.jj;
            this.jj = a;
            this.qv("SubtitleTextStyle", b, a);
        }
        get v3() {
            return this.vi;
        }
        set v3(a) {
            let b = this.vi;
            this.vi = a;
            this.qv("TitleTextColor", b, a);
        }
        get v2() {
            return this.vh;
        }
        set v2(a) {
            let b = this.vh;
            this.vh = a;
            this.qv("SubtitleTextColor", b, a);
        }
        get ii() {
            return this.hh;
        }
        set ii(a) {
            let b = this.hh;
            this.hh = a;
            this.qv("TitleTopMargin", b, a);
        }
        get ig() {
            return this.hf;
        }
        set ig(a) {
            let b = this.hf;
            this.hf = a;
            this.qv("TitleLeftMargin", b, a);
        }
        get ih() {
            return this.hg;
        }
        set ih(a) {
            let b = this.hg;
            this.hg = a;
            this.qv("TitleRightMargin", b, a);
        }
        get ie() {
            return this.he;
        }
        set ie(a) {
            let b = this.he;
            this.he = a;
            this.qv("TitleBottomMargin", b, a);
        }
        get id() {
            return this.hd;
        }
        set id(a) {
            let b = this.hd;
            this.hd = a;
            this.qv("SubtitleTopMargin", b, a);
        }
        get ib() {
            return this.hb;
        }
        set ib(a) {
            let b = this.hb;
            this.hb = a;
            this.qv("SubtitleLeftMargin", b, a);
        }
        get ic() {
            return this.hc;
        }
        set ic(a) {
            let b = this.hc;
            this.hc = a;
            this.qv("SubtitleRightMargin", b, a);
        }
        get ia() {
            return this.ha;
        }
        set ia(a) {
            let b = this.ha;
            this.ha = a;
            this.qv("SubtitleBottomMargin", b, a);
        }
        w2() {
            return this.c9.fj();
        }
        w3() {
            return this.c9.fk();
        }
        ap(a) {
            return this.c9.c(a);
        }
        aq(a) {
            return this.c9.d(a);
        }
        getFontHeight() {
            return this.c9.a9;
        }
        get_fu() {
            return false;
        }
        get fu() {
            return this.get_fu();
        }
        o4() {
        }
        provideContainer(a) {
            this.c9.c0(a);
        }
        o3(a, b) {
            this.c9.c1(a, b);
        }
        notifyContainerResized() {
            this.c9.cu();
        }
        wn() {
            return this.c9.fb();
        }
        nv() {
            this.c9.b5();
        }
        wa() {
            return this.c9.e8();
        }
        df() {
            return this.c9.t();
        }
        de() {
            return this.c9.q();
        }
        vo() {
            return this.c9.e0();
        }
        vp() {
            return this.c9.e3();
        }
        nh(a) {
            this.c9.bp(a);
        }
        rd(a) {
            this.c9.dy(a);
        }
        get fr() {
            return this.d7;
        }
        set fr(a) {
            let b = this.d7;
            this.d7 = a;
            if (b != this.d7) {
                this.c9.cr(this.d7);
            }
        }
        get ef() {
            return this.dw;
        }
        set ef(a) {
            let b = this.dw;
            this.dw = a;
            if (b != this.dw) {
                this.c9.bk(this.dw);
            }
        }
        get syncSettings() {
            return this._syncSettings;
        }
        set syncSettings(a) {
            this._syncSettings = a;
        }
        ng(a) {
            this.c9.bn(a);
        }
        rf(a) {
            this.c9.dz(a);
        }
        op(source_, a, b, c) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            let d = this.actualSyncLink.ag(source_);
            if (d == null) {
                return;
            }
            d.handleCollectionChanged(new NotifyCollectionChangedEventArgs(2, 2, c, b, a));
        }
        og(source_) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            let a = this.actualSyncLink.ag(source_);
            if (a == null) {
                return;
            }
            a.handleCollectionChanged(new NotifyCollectionChangedEventArgs(0, 4));
        }
        on(source_, a, b) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            let c = this.actualSyncLink.ag(source_);
            if (c == null) {
                return;
            }
            c.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 0, b, a));
        }
        oo(source_, a, b) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            let c = this.actualSyncLink.ag(source_);
            if (c == null) {
                return;
            }
            c.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 1, b, a));
        }
        destroy() {
            this.destroyed = true;
            let a = new List$1(Series.$, 0);
            for (let b = 0; b < this.series.count; b++) {
                a.add(this.series._inner[b]);
            }
            for (let c = 0; c < a.count; c++) {
                if (a._inner[c].cw != null) {
                    a._inner[c].cw.as();
                }
                this.series.remove(a._inner[c]);
                this.re(a._inner[c].name, true);
                a._inner[c].itemsSource = null;
                a._inner[c].rd(null, null);
            }
            this.nt();
            this.rg();
            this.onDetachedFromUI();
            this.c9.c0(null);
        }
        nt() {
        }
        ro(source_) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            this.je = source_;
            this.rx();
        }
        rg() {
            this.je = null;
            this.rx();
        }
        rn(a, source_) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            if (stringIsNullOrEmpty(a) == false) {
                if (!this.gl.containsKey(a)) {
                    this.gl.addItem(a, source_);
                }
                else {
                    this.gl.item(a, source_);
                }
            }
            this.rx();
        }
        re(a, b) {
            if (stringIsNullOrEmpty(a) == false) {
                if (this.gl.containsKey(a)) {
                    this.gl.removeItem(a);
                }
            }
            if (!b) {
                this.rx();
            }
        }
        rm(a, b) {
            if (a.itemsSource != b) {
                a.itemsSource = b;
            }
        }
        rw(a) {
            if (!this.fo) {
                return;
            }
            if (typeCast(Series.$, a) !== null) {
                let b = a;
                if (this.gl.containsKey(b.name)) {
                    let c = this.gl.item(b.name);
                    this.rm(b, c);
                }
                else {
                    this.rm(b, this.je);
                }
            }
            if (typeCast(CategoryAxisBase.$, a) !== null) {
                let d = a;
                if (this.gl.containsKey(d.name)) {
                    let e = this.gl.item(d.name);
                    if (d.itemsSource != e) {
                        d.itemsSource = e;
                    }
                }
                else {
                    if (d.itemsSource != this.je) {
                        d.itemsSource = this.je;
                    }
                }
            }
        }
        rx() {
            if (!this.fo) {
                return;
            }
            for (let a of fromEnum(this.series)) {
                this.rw(a);
            }
        }
        get ij() {
            return this.hi;
        }
        set ij(a) {
            this.hi = a;
            this.oc();
        }
        get h4() {
            return this.g7;
        }
        set h4(a) {
            this.g7 = a;
            this.oc();
        }
        get h9() {
            return this.g9;
        }
        set h9(a) {
            this.g9 = a;
            this.oc();
        }
        get hr() {
            return this.g5;
        }
        set hr(a) {
            this.g5 = a;
            this.oc();
        }
        get hq() {
            return this.g4;
        }
        set hq(a) {
            this.g4 = a;
            this.oc();
        }
        get hp() {
            return this.g3;
        }
        set hp(a) {
            this.g3 = a;
            this.oc();
        }
        f3() {
            return false;
        }
        get e3() {
            return this.d2;
        }
        set e3(a) {
            let b = this.d2;
            this.d2 = a;
            this.qv("IsAntiAliasingEnabledDuringInteraction", b, this.d2);
        }
        get h5() {
            return this.g8;
        }
        set h5(a) {
            let b = this.g8;
            this.g8 = a;
            this.qv("PixelScalingRatio", b, this.g8);
        }
        get h3() {
            return this.g6;
        }
        set h3(a) {
            let b = this.g6;
            this.g6 = a;
            this.qv("InteractionPixelScalingRatio", b, this.g6);
        }
        static cu(a, b) {
            let c = new CoercionInfo();
            c.b = a;
            c.a = null;
            let d = FastItemsSource.f(a);
            if (d.d == null) {
                return c;
            }
            if (b != null) {
                let methods_ = b;
                let key_ = d.d;
                let val_ = null;
                if (typeof methods_[key_] != 'undefined') {
                    val_ = methods_[key_];
                }
                ;
                c.b = d.c;
                c.a = val_;
            }
            else if (d.d == "defaultDateParse") {
                let e = defaultDVDateParse;
                c.b = d.c;
                c.a = e;
            }
            return c;
        }
        get k9() {
            return this.ji;
        }
        set k9(a) {
            this.ji = a;
            if (this.c2 == null) {
                return;
            }
            this.c2.backgroundImageUri = this.ji;
        }
        get hk() {
            return this.gy;
        }
        set hk(a) {
            let b = this.gy;
            this.gy = a;
            this.qv("ActualPixelScalingRatio", b, this.gy);
        }
        get hj() {
            return this.gx;
        }
        set hj(a) {
            let b = this.gx;
            this.gx = a;
            this.qv("ActualInteractionPixelScalingRatio", b, this.gx);
        }
        get wh() {
            return this.wc;
        }
        set wh(a) {
            let b = Rect.l_op_Inequality(this.wc, a);
            if (b) {
                let c = this.wc;
                this.wc = a;
                this.qv("ActualWindowRect", c, a);
            }
        }
        wo() {
            return this.wh;
        }
        oa() {
            if (this.ez) {
                return;
            }
            this.wh = this.wi();
        }
        wt() {
            return Rect.empty;
        }
        wi() {
            let a = this.w0.left;
            let b = this.w0.top;
            let c = this.w0.width;
            let d = this.w0.height;
            if (this.cr == 1) {
                a = Math.min(1, Math.max(0, this.w0.left));
                c = Math.min(1, Math.max(0, this.w0.width));
            }
            if (this.cr == 1) {
                b = Math.min(1, Math.max(0, this.w0.top));
                d = Math.min(1, Math.max(0, this.w0.height));
            }
            return new Rect(0, a, b, c, d);
        }
        jg(a, b) {
            return this.c9.bj(a, b, this.hk);
        }
        get hl() {
            return this.gz;
        }
        set hl(a) {
            let b = this.gz;
            this.gz = a;
            this.qv("ActualWindowPositionHorizontal", b, this.gz);
        }
        get hm() {
            return this.g0;
        }
        set hm(a) {
            let b = this.g0;
            this.g0 = a;
            this.qv("ActualWindowPositionVertical", b, this.g0);
        }
        or() {
            if (this.ec && this.c2 != null) {
                this.c2.surfaceIsDirty = true;
                this.c2.doRefresh(false);
            }
            this.np();
            this.ol();
        }
        oq() {
            if (this.ec && this.c2 != null) {
                this.c2.surfaceIsDirty = true;
                this.c2.doRefresh(false);
            }
            this.np();
        }
        flush() {
            this.n0(true, true, true);
        }
        n0(a, b, c) {
            this.ar.y();
            if (a) {
                this.c9.b7();
                this.ar.y();
            }
            if (c) {
                this.al.l();
            }
            if (b) {
                this.c9.a.l();
            }
            this.gk = true;
        }
        gg() {
            return false;
        }
        ra(a, b) {
            if (this.sk != null) {
                this.rs(this.sk);
                this.sk = null;
                this.az = null;
            }
            this.sk = a;
            this.az = this.ar.k(2, a, b);
        }
        rs(a) {
            this.ar.ad(2, a);
            this.sk = null;
            this.az = null;
        }
        nr() {
            this.ar.ac(2, this.sk, this.az, false);
        }
        ph() {
            let a = false;
            let b = false;
            let c = false;
            for (let d = 0; d < this.series.count; d++) {
                let e = this.series._inner[d];
                if (e.e3) {
                    a = true;
                }
                if (e.e4) {
                    b = true;
                }
                if (e.eu) {
                    c = true;
                }
            }
            this.e4 = a;
            this.e5 = b;
            this.e2 = c;
        }
        get fh() {
            return this.ec;
        }
        ni() {
            this.c9.bq();
            for (let a = 0; a < this.series.count; a++) {
                this.series._inner[a].qr();
            }
        }
        fn() {
            return this.c9.am();
        }
        i7() {
            let a = this.i1;
            this.i1++;
            return a;
        }
        di() {
            if (this.mj == null || this.c9.j.ae == null) {
                return null;
            }
            return FontUtil.toFontInfo(this.c9.j.ae, this.mj);
        }
        dh() {
            if (this.l7 == null || this.c9.j.ae == null) {
                return null;
            }
            return FontUtil.toFontInfo(this.c9.j.ae, this.l7);
        }
        rv() {
            let a = false;
            a = this.ef;
            this.e0 = true;
            this.eq = (a && !this.gh) || this.w4 == 0;
            this.e0 = false;
        }
        q0() {
            if (this.seriesDataUpdated != null) {
                this.seriesDataUpdated(this, EventArgs.empty);
            }
        }
        ok() {
            for (let a = 0; a < this.gq.count; a++) {
                this.gq._inner[a].notifySeriesCollectionChanged();
            }
        }
        ol() {
            for (let a = 0; a < this.gq.count; a++) {
                this.gq._inner[a].notifySeriesDataChanged();
            }
            this.notifySeriesDataChanged();
        }
        om(a) {
            for (let b = 0; b < this.gq.count; b++) {
                this.gq._inner[b].notifyVisualPropertiesChanged(a);
            }
        }
        oj(a) {
            for (let b = 0; b < this.gq.count; b++) {
                this.gq._inner[b].notifyCursorPositionChanged(a);
            }
        }
        attachDataLegend(a) {
            this.gq.add(a);
        }
        detachDataLegend(a) {
            this.gq.remove(a);
        }
        get isDetached() {
            return this.destroyed || this.d3;
        }
        getDataLegendSeries() {
            let a = 0;
            for (let b = 0; b < this.series.count; b++) {
                if (this.series._inner[b].isStacked) {
                    this.series._inner[b].p5((c) => {
                        if (c.isUsableInLegend) {
                            a++;
                        }
                        if (c.ei) {
                            c.p3((d) => {
                                if (d.isUsableInLegend) {
                                    a++;
                                }
                                return true;
                            });
                        }
                        return true;
                    });
                }
                else if (this.series._inner[b].ei) {
                    if (this.series._inner[b].isUsableInLegend) {
                        a++;
                    }
                    this.series._inner[b].p3((c) => {
                        if (c.isUsableInLegend) {
                            a++;
                        }
                        return true;
                    });
                }
                else {
                    if (this.series._inner[b].isUsableInLegend) {
                        a++;
                    }
                }
            }
            let c = new Array(a);
            let d = 0;
            for (let e = 0; e < this.series.count; e++) {
                if (this.series._inner[e].isStacked) {
                    this.series._inner[e].p5((f) => {
                        if (f.isUsableInLegend) {
                            c[d] = f;
                            d++;
                        }
                        if (f.ei) {
                            f.p3((g) => {
                                if (g.isUsableInLegend) {
                                    c[d] = g;
                                    d++;
                                }
                                return true;
                            });
                        }
                        return true;
                    });
                }
                else if (this.series._inner[e].ei) {
                    if (this.series._inner[e].isUsableInLegend) {
                        c[d] = this.series._inner[e];
                        d++;
                    }
                    this.series._inner[e].p3((f) => {
                        if (f.isUsableInLegend) {
                            c[d] = f;
                            d++;
                        }
                        return true;
                    });
                }
                else {
                    if (this.series._inner[e].isUsableInLegend) {
                        c[d] = this.series._inner[e];
                        d++;
                    }
                }
            }
            return c;
        }
        nf(a) {
            let b = this.wy(a);
            let c = new List$1(ChartSelection.$, 0);
            for (let d of fromEnum(this.series)) {
                d.p6(b, c, this.b4);
            }
            if (c.count == 0) {
                return;
            }
            c = this.gu(c, this.b4);
            c = this.gv(c, this.b4);
            let e = this.gr(this.selectedSeriesItems, c, this.b4);
            for (let f = 0; f < e.count; f++) {
                this.selectedSeriesItems.remove(e._inner[f]);
            }
            for (let g = 0; g < c.count; g++) {
                this.selectedSeriesItems.add(c._inner[g]);
            }
        }
        ww(a) {
            a = new Rect(0, a.left, a.top, a.width, a.height);
            let b = this.wz;
            let c = this.wh.left + this.wh.width * (a.left - b.left) / b.width;
            let d = this.wh.top + this.wh.height * (a.top - b.top) / b.height;
            let e = this.wh.left + this.wh.width * (a.right - b.left) / b.width;
            let f = this.wh.top + this.wh.height * (a.bottom - b.top) / b.height;
            return new Rect(0, c, d, e - c, f - d);
        }
        wx(a) {
            a = new Rect(0, a.left + this.wz.left, a.top + this.wz.top, a.width, a.height);
            return this.ww(a);
        }
        nk(a) {
            if (this.gt == null) {
                this.gt = new List$1(CaptureImageSettings.$, 0);
            }
            this.gt.add(a);
            this.ar.z();
        }
        nl() {
            if (this.gt != null && this.gt.count > 0) {
                let a = this.gt.toArray();
                this.gt.clear();
                for (let c = 0; c < a.length; c++) {
                    let b = a[c];
                    this.jx(b, (d, e) => {
                        if (d != null) {
                            this.qu(b, d, e);
                        }
                    });
                }
            }
        }
        jx(a, b) {
            let c = "image/png";
            switch (a.a) {
                case 0:
                    c = "image/png";
                    break;
                case 1:
                    c = "image/jpeg";
                    break;
                default: return null;
            }
            let d = null;
            d = this.c9.j.at(this.c9.a8, this.c9.a7, this.hk, c, (e, f) => {
                if (a.b) {
                    let b_ = f;
                    if ((window.ClipboardItem)) {
                        navigator.clipboard.write([new window.ClipboardItem({ [b_.type]: b_ })]);
                    }
                }
                if (b != null) {
                    b(e, f);
                }
            });
            return d;
        }
        qu(a, b, c = null) {
            if (this.imageCaptured != null) {
                let d = new ImageCapturedEventArgs(b, c, a);
                this.imageCaptured(this, d);
            }
        }
        notifySeriesDataChanged() {
            if (this.seriesDataChanged != null) {
                this.seriesDataChanged(this, null);
            }
        }
    }
    SeriesViewer.$t = /*@__PURE__*/ markType(SeriesViewer, 'SeriesViewer', Control.$, [INotifyPropertyChanged_$type, ILegendOwner_$type, IInternalLegendOwner_$type, IDataLegendTarget_$type, IToolbarTarget_$type, ISupportsAnimation_$type]);
    SeriesViewer.tp = /*@__PURE__*/ DependencyProperty.i("Legend", IChartLegend_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("Legend", b.oldValue, b.newValue);
    }));
    SeriesViewer.sm = /*@__PURE__*/ DependencyProperty.i("AnimateSeriesWhenAxisRangeChanges", Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("AnimateSeriesWhenAxisRangeChanges", b.oldValue, b.newValue);
    }));
    SeriesViewer.ud = /*@__PURE__*/ DependencyProperty.i("SeriesValueLayerUseLegend", Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("SeriesValueLayerUseLegend", b.oldValue, b.newValue);
    }));
    SeriesViewer.tl = /*@__PURE__*/ DependencyProperty.i("IsWindowSyncedToVisibleRange", Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("IsWindowSyncedToVisibleRange", b.oldValue, b.newValue);
    }));
    SeriesViewer.ug = /*@__PURE__*/ DependencyProperty.i("ShouldSimulateHoverMoveCrosshairPoint", Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("ShouldSimulateHoverMoveCrosshairPoint", b.oldValue, b.newValue);
    }));
    SeriesViewer.s3 = /*@__PURE__*/ DependencyProperty.i("HighlightingMode", SeriesHighlightingMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesHighlightingMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HighlightingMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.ua = /*@__PURE__*/ DependencyProperty.i("SelectionMode", SeriesSelectionMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesSelectionMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("SelectionMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.t7 = /*@__PURE__*/ DependencyProperty.i("SelectionBehavior", SeriesSelectionBehavior_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesSelectionBehavior_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("SelectionBehavior", b.oldValue, b.newValue);
    }));
    SeriesViewer.sw = /*@__PURE__*/ DependencyProperty.i("FocusMode", SeriesSelectionMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesSelectionMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("FocusMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.tb = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarMode", SeriesViewerScrollbarMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesViewerScrollbarMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.uu = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarMode", SeriesViewerScrollbarMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesViewerScrollbarMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.td = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarPosition", SeriesViewerHorizontalScrollbarPosition_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesViewerHorizontalScrollbarPosition_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarPosition", b.oldValue, b.newValue);
    }));
    SeriesViewer.uw = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarPosition", SeriesViewerVerticalScrollbarPosition_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesViewerVerticalScrollbarPosition_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarPosition", b.oldValue, b.newValue);
    }));
    SeriesViewer.s7 = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarFill", Brush.$, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarFill", b.oldValue, b.newValue);
    }));
    SeriesViewer.tc = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarOutline", Brush.$, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarOutline", b.oldValue, b.newValue);
    }));
    SeriesViewer.tf = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarStrokeThickness", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarStrokeThickness", b.oldValue, b.newValue);
    }));
    SeriesViewer.ta = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarMaxOpacity", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarMaxOpacity", b.oldValue, b.newValue);
    }));
    SeriesViewer.s6 = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarCornerRadius", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarCornerRadius", b.oldValue, b.newValue);
    }));
    SeriesViewer.s8 = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarHeight", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarHeight", b.oldValue, b.newValue);
    }));
    SeriesViewer.s9 = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.th = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarTrackStartInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarTrackStartInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.tg = /*@__PURE__*/ DependencyProperty.i("HorizontalViewScrollbarTrackEndInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HorizontalViewScrollbarTrackEndInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.kr = "HorizontalViewScrollbarShouldAddAutoTrackInsets";
    SeriesViewer.te = /*@__PURE__*/ DependencyProperty.i(SeriesViewer.kr, Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, true, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv(SeriesViewer.kr, b.oldValue, b.newValue);
    }));
    SeriesViewer.ur = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarFill", Brush.$, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarFill", b.oldValue, b.newValue);
    }));
    SeriesViewer.uv = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarOutline", Brush.$, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarOutline", b.oldValue, b.newValue);
    }));
    SeriesViewer.uy = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarStrokeThickness", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarStrokeThickness", b.oldValue, b.newValue);
    }));
    SeriesViewer.ut = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarMaxOpacity", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarMaxOpacity", b.oldValue, b.newValue);
    }));
    SeriesViewer.uq = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarCornerRadius", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarCornerRadius", b.oldValue, b.newValue);
    }));
    SeriesViewer.u1 = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarWidth", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarWidth", b.oldValue, b.newValue);
    }));
    SeriesViewer.us = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.u0 = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarTrackStartInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarTrackStartInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.uz = /*@__PURE__*/ DependencyProperty.i("VerticalViewScrollbarTrackEndInset", Number_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, NaN, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("VerticalViewScrollbarTrackEndInset", b.oldValue, b.newValue);
    }));
    SeriesViewer.mx = "VerticalViewScrollbarShouldAddAutoTrackInsets";
    SeriesViewer.ux = /*@__PURE__*/ DependencyProperty.i(SeriesViewer.mx, Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, true, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv(SeriesViewer.mx, b.oldValue, b.newValue);
    }));
    SeriesViewer.s1 = /*@__PURE__*/ DependencyProperty.i("HighlightingBehavior", SeriesHighlightingBehavior_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(SeriesHighlightingBehavior_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("HighlightingBehavior", b.oldValue, b.newValue);
    }));
    SeriesViewer.tm = /*@__PURE__*/ DependencyProperty.i("LegendHighlightingMode", LegendHighlightingMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(LegendHighlightingMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("LegendHighlightingMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.to = /*@__PURE__*/ DependencyProperty.i("LegendItemBadgeShape", LegendItemBadgeShape_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(LegendItemBadgeShape_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("LegendItemBadgeShape", b.oldValue, b.newValue);
    }));
    SeriesViewer.tn = /*@__PURE__*/ DependencyProperty.i("LegendItemBadgeMode", LegendItemBadgeMode_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(LegendItemBadgeMode_$type, 0), (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("LegendItemBadgeMode", b.oldValue, b.newValue);
    }));
    SeriesViewer.st = /*@__PURE__*/ DependencyProperty.i("FireMouseLeaveOnManipulationStart", Boolean_$type, SeriesViewer.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => {
        let c = typeCast(SeriesViewer.$, a);
        c.qv("FireMouseLeaveOnManipulationStart", b.oldValue, b.newValue);
    }));
    SeriesViewer.wu = Rect.empty;
    SeriesViewer.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, SeriesViewer, 'qv', ['ActualPlotAreaBorderBrush:vj:sl', [Brush.$, null], 'Brushes:ag:sn', [BrushCollection.$, null], 'CircleMarkerTemplate:sa:so', [DataTemplate.$, null], 'CrosshairVisibility:w4:sp', [Visibility_$type, /*@__PURE__*/ enumGetBox(Visibility_$type, 0)], 'DefaultInteraction:cw:sq', [InteractionState_$type, /*@__PURE__*/ enumGetBox(InteractionState_$type, 4)], 'DiamondMarkerTemplate:sb:sr', [DataTemplate.$, null], 'DragModifier:ve:ss', [ModifierKeys_$type, /*@__PURE__*/ enumGetBox(ModifierKeys_$type, 2)], 'FocusBrush:vk:su', [Brush.$, null], 'FocusDismissDelayMilliseconds:i5:sv', [1, 200], 'FocusTransitionDuration:i6:sx', [1, 100], 'HexagonMarkerTemplate:sc:sy', [DataTemplate.$, null], 'HexagramMarkerTemplate:sd:sz', [DataTemplate.$, null], 'HighlightedValuesDisplayMode:bt:s0', [SeriesHighlightedValuesDisplayMode_$type, /*@__PURE__*/ enumGetBox(SeriesHighlightedValuesDisplayMode_$type, 0)], 'HighlightingDismissDelayMilliseconds:i8:s2', [1, 200], 'HighlightingTransitionDuration:i9:s4', [1, 300], 'HorizontalCrosshairBrush:vu:s5', [Brush.$, null], 'InteractionOverride:cx:ti', [InteractionState_$type, /*@__PURE__*/ enumGetBox(InteractionState_$type, 0)], 'IsPagePanningAllowed:fe:tj', [0, true], 'IsSurfaceInteractionDisabled:ff:tk', [0, false], 'MarkerAutomaticBehavior:bg:tq', [MarkerAutomaticBehavior_$type, /*@__PURE__*/ enumGetBox(MarkerAutomaticBehavior_$type, 4)], 'MarkerBrushes:ah:tr', [BrushCollection.$, null], 'MarkerOutlines:ai:ts', [BrushCollection.$, null], 'Outlines:aj:tt', [BrushCollection.$, null], 'OverviewPlusDetailPaneVisibility:w5:tu', [Visibility_$type, /*@__PURE__*/ enumGetBox(Visibility_$type, 1)], 'PanModifier:vf:tv', [ModifierKeys_$type, /*@__PURE__*/ enumGetBox(ModifierKeys_$type, 4)], 'PentagonMarkerTemplate:se:tw', [DataTemplate.$, null], 'PentagramMarkerTemplate:sf:tx', [DataTemplate.$, null], 'PlotAreaBackground:vx:ty', [Brush.$, null], 'PlotAreaBorderBrush:vy:tz', [Brush.$, null], 'PreferHigherResolutionTiles:fz:t0', [0, false], 'PreviewPathFill:vz:t1', [Brush.$, null], 'PreviewPathOpacity:h6:t2', [1, NaN], 'PreviewPathStroke:v0:t3', [Brush.$, null], 'PyramidMarkerTemplate:sg:t4', [DataTemplate.$, null], 'RightButtonDefaultInteraction:cz:t5', [InteractionState_$type, /*@__PURE__*/ enumGetBox(InteractionState_$type, 4)], 'ScrollbarsAnimationDuration:ja:t6', [1, 300], 'SelectionBrush:v1:t8', [Brush.$, null], 'SelectionDismissDelayMilliseconds:jb:t9', [1, 200], 'SelectionModifier:vg:ub', [ModifierKeys_$type, /*@__PURE__*/ enumGetBox(ModifierKeys_$type, 1)], 'SelectionTransitionDuration:jc:uc', [1, 300], 'ShouldMatchZOrderToSeriesOrder:f5:ue', [0, false], 'ShouldPanOnMaximumZoom:f6:uf', [0, true], 'SquareMarkerTemplate:sh:uh', [DataTemplate.$, null], 'SubtitleHorizontalAlignment:vc:ui', [HorizontalAlignment_$type, /*@__PURE__*/ enumGetBox(HorizontalAlignment_$type, 1)], 'Subtitle:l0:uj', [2, null], 'TetragramMarkerTemplate:si:uk', [DataTemplate.$, null], 'TitleHorizontalAlignment:vd:ul', [HorizontalAlignment_$type, /*@__PURE__*/ enumGetBox(HorizontalAlignment_$type, 1)], 'Title:mc:um', [2, null], 'TriangleMarkerTemplate:sj:un', [DataTemplate.$, null], 'UseTiledZooming:gi:uo', [0, false], 'VerticalCrosshairBrush:v4:up', [Brush.$, null], 'WindowPositionHorizontal:is:u2', [1, NaN], 'WindowPositionVertical:it:u3', [1, NaN], 'WindowRectMinHeight:iu:u4', [1, NaN], 'WindowRectMinWidth:iv:u5', [1, NaN], 'WindowRect:w0:u6', [Rect.$, /*@__PURE__*/ new Rect(0, 0, 0, 1, 1)], 'WindowResponse:cp:u7', [WindowResponse_$type, /*@__PURE__*/ enumGetBox(WindowResponse_$type, 1)], 'WindowSizeMinHeight:iw:u8', [1, NaN], 'WindowSizeMinWidth:ix:u9', [1, NaN], 'ZoomCoercionMode:ct:va', [ZoomCoercionMode_$type, /*@__PURE__*/ enumGetBox(ZoomCoercionMode_$type, 0)], 'ZoomTileCacheSize:jd:vb', [1, 30]]);
    return SeriesViewer;
})();
/**
 * @hidden
 */
export let SeriesViewerView = /*@__PURE__*/ (() => {
    class SeriesViewerView extends Base {
        constructor(a) {
            super();
            this.p = null;
            this.a = null;
            this.n = null;
            this.o = null;
            this.g = null;
            this.b = null;
            this.ai = false;
            this.fi = null;
            this.ff = null;
            this.fe = null;
            this.fd = null;
            this.h = new SeriesViewerComponentsFromView();
            this.j = null;
            this.w = null;
            this.z = null;
            this.y = null;
            this.x = null;
            this.an = false;
            this.ao = false;
            this.bi = null;
            this.k = null;
            this.a9 = 0;
            this.a8 = 0;
            this.a7 = 0;
            this.e9 = Rect.empty;
            this.aj = false;
            this.fg = null;
            this.fh = null;
            this.a1 = 0;
            this.az = 0;
            this.a0 = 0;
            this.ay = 0;
            this.ak = true;
            this.aa = false;
            this.a2 = NaN;
            this.fa = Rect.empty;
            this.ab = false;
            this.af = false;
            this.ae = false;
            this.av = false;
            this.et = null;
            this.es = null;
            this.ad = false;
            this.ac = false;
            this.ag = true;
            this.ax = null;
            this.ar = false;
            this.bg = 0;
            this.ah = true;
            this.a8 = 0;
            this.a7 = 0;
            this.p = a;
            this.p.v8 = { $type: Point_$type, x: NaN, y: NaN };
            this.p.cp = 1;
            this.j = new SeriesViewerViewManager(this);
            this.fd = ((() => {
                let $ret = new Line();
                $ret.visibility = 1;
                return $ret;
            })());
            this.fe = ((() => {
                let $ret = new Line();
                $ret.visibility = 1;
                return $ret;
            })());
        }
        l() {
            return new DOMExecutionContext(this.j.ae);
        }
        co() {
            this.j.ba();
        }
        c4() {
            this.p.e0 = true;
            this.p.w4 = 1;
            this.p.e0 = false;
            this.ff = new Path();
            this.fi = new Rectangle();
            this.fi._visibility = 1;
            this.d6();
            this.g = new SeriesCollection();
            this.b = new AxisCollection();
            this.a = new CanvasRenderScheduler();
            this.a.o(this);
            this.a.h.add(this.p.am);
            if (this.p.w5 == 0) {
                this.cn();
            }
            let a = this.p;
            a.windowRectChanged = delegateCombine(a.windowRectChanged, runOn(this, this.ct));
            let b = this.p;
            b.gridAreaRectChanged = delegateCombine(b.gridAreaRectChanged, runOn(this, this.cs));
            this.o = new OverviewPlusDetailViewportHost(this);
            this.dp();
        }
        e() {
            for (let a = 0; a < this.g.count; a++) {
                if (this.g._inner[a].ba.a$e) {
                    return this.g._inner[a];
                }
            }
            return null;
        }
        cn() {
            if (this.n == null) {
                this.n = this.j.g();
            }
            this.p.c2.provideContext(this.z);
            this.p.c2.provideContainer(this.bi);
            this.p.c2.provideEventSource(this.k);
            this.n.world = new Rect(0, 0, 0, 1, 1);
            this.n.window = this.p.w0;
            this.n.surfaceViewer = TypeRegistrar.create("SeriesViewerSurfaceViewer", this.p, this);
            this.n.viewScheduler = this.a;
            this.em();
            let a = this.n;
            a.windowChanging = delegateCombine(a.windowChanging, runOn(this, this.dn));
            let b = this.n;
            b.windowChanged = delegateCombine(b.windowChanged, runOn(this, this.dm));
        }
        dn(a, b) {
            let c = b.newValue;
            if (this.n != null) {
                c = this.n.changeRect(b.oldValue, b.newValue, this.p.fl(), this.p.fm(), this.n.world);
            }
            if (c.isEmpty) {
                this.n.window = b.oldValue;
            }
            else if (!c.equals1(b.newValue)) {
                this.n.window = c;
            }
            if (this.p.cp == 1) {
                let d = this.p.wz.width / this.p.wz.height;
                c = new Rect(0, c.left / d, c.top, c.width / d, c.height);
                this.p.w0 = c;
            }
        }
        dm(a, b) {
            let c = b.newValue;
            if (this.n != null) {
                c = this.n.changeRect(b.oldValue, b.newValue, this.p.fl(), this.p.fm(), this.n.world);
            }
            if (c.isEmpty) {
                c = b.oldValue;
            }
            else if (!c.equals1(b.newValue)) {
                this.n.window = c;
            }
            let d = this.p.wz.width / this.p.wz.height;
            c = new Rect(0, c.left / d, c.top, c.width / d, c.height);
            this.p.w0 = c;
        }
        em() {
            if (this.n == null) {
                return;
            }
            if (this.p.w5 != 0) {
                return;
            }
            let a = 1;
            if (this.p.wz.isEmpty == false) {
                a = this.p.wz.width / this.p.wz.height;
            }
            let b = this.n.world;
            let c = new Rect(0, 0, 0, a, 1);
            this.n.world = c;
            if (b.width != c.width || b.height != c.height || b.x != c.x || b.y != c.y) {
                this.n.surfaceViewer.isDirty = true;
            }
            this.n.window = new Rect(0, this.p.w0.left * a, this.p.w0.top, this.p.w0.width * a, this.p.w0.height);
        }
        ct(a, b) {
            this.em();
        }
        cs(a, b) {
            this.em();
        }
        cb(a, b, c) {
            let d = true;
            for (let e of fromEnum(this.p.series)) {
                if (d && e.g1) {
                    d = false;
                    if (!c.a.e) {
                        c.a.l(0, 0, a, b);
                    }
                }
                e.rw(new Rect(0, 0, 0, a, b), c);
            }
        }
        d5() {
            this.j.bm();
        }
        cd() {
        }
        d7() {
            this.j.bn();
        }
        ck() {
            for (let a = 0; a < this.p.series.count; a++) {
                this.p.series._inner[a].cw.a1();
            }
        }
        cc() {
        }
        ce() {
        }
        dy(a) {
            let b = this.g.indexOf(a);
            if (b >= 0) {
                this.g.removeAt(b);
            }
            if (a.isStacked) {
                a.p5((c) => {
                    c.dc = null;
                    b = this.g.indexOf(c);
                    if (b >= 0) {
                        this.g.removeAt(b);
                    }
                    if (c.ei) {
                        c.p3((d) => {
                            d.dc = null;
                            b = this.g.indexOf(d);
                            if (b >= 0) {
                                this.g.removeAt(b);
                            }
                            return true;
                        });
                    }
                    return true;
                });
            }
            if (a.ei) {
                a.p3((c) => {
                    c.dc = null;
                    b = this.g.indexOf(c);
                    if (b >= 0) {
                        this.g.removeAt(b);
                    }
                    return true;
                });
            }
            this.p.q7();
            a.rd(null, null);
            this.dc();
        }
        dc() {
            if (this.p.destroyed) {
                return;
            }
            if (this.g.count == 0) {
                if (this.y != null && Rect.l_op_Inequality(this.p.wz, null) && !this.p.wz.isEmpty) {
                    this.er();
                }
            }
            this.p.al.r(this.y, this.x);
        }
        er() {
            if (this.g.count > 0) {
                return;
            }
            if (this.y != null && Rect.l_op_Inequality(this.p.wz, null) && !this.p.wz.isEmpty) {
                if (this.p.hk != 1) {
                    this.y.aa();
                    this.y.ab(this.p.hk, this.p.hk);
                }
                if (!this.y.e) {
                    this.y.l(this.p.wz.left, this.p.wz.top, this.p.wz.width, this.p.wz.height);
                }
                if (this.p.hk != 1) {
                    this.y.z();
                }
            }
        }
        aq(a) {
            a.q4(a.cw.b9, this.e9);
            return this.g.contains(a);
        }
        get au() {
            return this.ai;
        }
        set au(a) {
            this.ai = a;
        }
        bp(a) {
            if (this.p.f5) {
                let b = this.p.series.indexOf(a);
                if (b < (this.p.series.count - 1)) {
                    let c = this.p.series._inner[b + 1];
                    let d = this.g.indexOf(c);
                    let e = d;
                    if (!this.g.contains(a)) {
                        this.g.insert(e, a);
                        e++;
                        if (a.isStacked) {
                            a.p5((f) => {
                                this.g.insert(e, f);
                                e++;
                                if (f.ei) {
                                    f.p3((g) => {
                                        if (!this.g.contains(g)) {
                                            this.g.insert(e, g);
                                            e++;
                                        }
                                        return true;
                                    });
                                }
                                return true;
                            });
                        }
                        if (a.ei) {
                            a.p3((f) => {
                                if (!this.g.contains(f)) {
                                    this.g.insert(e, f);
                                    e++;
                                }
                                return true;
                            });
                        }
                    }
                }
            }
            if (!this.g.contains(a)) {
                this.g.add(a);
                if (a.isStacked) {
                    a.p5((f) => {
                        this.g.add(f);
                        if (f.ei) {
                            f.p3((g) => {
                                if (!this.g.contains(g)) {
                                    this.g.add(g);
                                }
                                return true;
                            });
                        }
                        return true;
                    });
                }
                if (a.ei) {
                    a.p3((f) => {
                        if (!this.g.contains(f)) {
                            this.g.add(f);
                        }
                        return true;
                    });
                }
            }
            this.p.q7();
            a.rd(this.y, this.x);
            this.p.oc();
        }
        dt(a) {
            this.x = a;
            for (let b = 0; b < this.g.count; b++) {
                this.g._inner[b].rd(this.y, this.x);
            }
            for (let c = 0; c < this.b.count; c++) {
                this.b._inner[c].h0(this.y, this.x);
            }
        }
        bx() {
        }
        bt() {
            this.cf();
            this.ck();
        }
        cf() {
            this.fi._visibility = 1;
            this.cq();
        }
        ca() {
        }
        dr() {
        }
        d8() {
            this.fi._visibility = 0;
            this.cq();
        }
        eg(a) {
            this.fi.o = a.top + this.p.wz.top;
            this.fi.n = a.left + this.p.wz.left;
            this.fi.width = a.width;
            this.fi.height = a.height;
            this.db();
            this.fi._fill = null;
            this.fi.ad = 0.5;
            this.cq();
        }
        bw() {
        }
        df() {
        }
        eo(a, b, c, d) {
            this.fe.an = a;
            this.fe.ap = b;
            this.fe.ao = c;
            this.fe.aq = d;
            this.cq();
        }
        ed() {
            this.fe._visibility = 0;
            this.cq();
        }
        cl() {
            if (this.fe._visibility == 0) {
                this.fe._visibility = 1;
                this.cq();
            }
        }
        eh(a, b, c, d) {
            this.fd.an = a;
            this.fd.ap = b;
            this.fd.ao = c;
            this.fd.aq = d;
            this.cq();
        }
        d9() {
            this.fd._visibility = 0;
            this.cq();
        }
        cg() {
            if (this.fd._visibility == 0) {
                this.fd._visibility = 1;
                this.cq();
            }
        }
        cj() {
            this.ff._visibility = 1;
            this.cq();
        }
        e6(a) {
            let b = new PathFigureCollection();
            let c = new PathFigure();
            c._isClosed = true;
            c._startPoint = { $type: Point_$type, x: a.left, y: a.top };
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.left, y: a.bottom }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.right, y: a.bottom }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.right, y: a.top }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.left, y: a.top }));
            b.add(c);
            return b;
        }
        e7(a) {
            let b = new PathFigureCollection();
            let c = new PathFigure();
            c._isClosed = true;
            c._startPoint = { $type: Point_$type, x: a.left, y: a.top };
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.right, y: a.top }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.right, y: a.bottom }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.left, y: a.bottom }));
            c._segments.add(new LineSegment(0, { $type: Point_$type, x: a.left, y: a.top }));
            b.add(c);
            return b;
        }
        en(a, b) {
            b.intersect(a);
            let c = new PathGeometry();
            c.c = this.e7(a);
            let d = new PathGeometry();
            d.c = this.e6(b);
            let e = new GeometryGroup();
            e.d.add(c);
            e.d.add(d);
            this.ff.an = e;
            this.db();
            this.cq();
        }
        ec() {
            this.ff._visibility = 0;
            this.cq();
        }
        ep(a) {
        }
        dw(a) {
            let b = this.b.indexOf(a);
            this.b.removeAt(b);
            a.h0(null, null);
            this.d3();
            this.p.re(a.name, true);
        }
        dx(a) {
        }
        bo(a) {
            if (!this.b.contains(a)) {
                this.b.add(a);
            }
            a.h0(this.y, this.x);
            this.d3();
        }
        bl(a) {
        }
        i() {
            this.h.a = this.n;
            return this.h;
        }
        static aw(a) {
            let b = a.dc.series;
            let c = new List$1(Series.$, 0);
            for (let d = 0; d < b.count; d++) {
                c.add(b._inner[d]);
                if (b._inner[d].isStacked) {
                    b._inner[d].p5((e) => {
                        c.add(e);
                        return true;
                    });
                }
            }
            return c;
        }
        d2() {
            this.p.w0 = new Rect(0, 0, 0, 1, 1);
        }
        c0(a) {
            if (a == this.bi) {
                return;
            }
            if (a == null) {
                if (this.k != null) {
                    this.k.av();
                }
                this.j.bg(null);
                this.w = null;
                this.z = null;
                this.y = null;
                this.x = null;
                this.k = null;
                if (this.p.c2 != null) {
                    this.p.c2.provideContext(null);
                    this.p.c2.provideContainer(null);
                    this.p.c2.provideEventSource(null);
                }
                return;
            }
            this.bi = a;
            if (this.au) {
                this.a.h.add(this.p.al);
            }
            this.j.bg(a);
            this.w = this.j.t;
            this.z = this.j.w;
            this.y = this.j.v;
            this.x = this.j.u;
            this.an = false;
            try {
                this.an = (window.navigator.msPointerEnabled && window.MSGesture !== undefined);
            }
            catch (b) {
            }
            this.ao = false;
            try {
                this.ao = (window.PointerEvent !== undefined);
            }
            catch (c) {
            }
            if (this.an || this.ao) {
                this.av = true;
            }
            this.k = this.j.f;
            if (this.k != null) {
                this.k.bl = this.p.wz;
                this.k.ao = runOn(this, this.as);
                let d = this.k;
                d.onContactCompleted = delegateCombine(d.onContactCompleted, (d, e) => this.cx(d, e, this.k.am));
                let e = this.k;
                e.onContactMoved = delegateCombine(e.onContactMoved, runOn(this, this.cy));
                let f = this.k;
                f.onContactStarted = delegateCombine(f.onContactStarted, runOn(this, this.cz));
                let g = this.k;
                g.onDragCompleted = delegateCombine(g.onDragCompleted, runOn(this.p, this.p.pa));
                let h = this.k;
                h.onFlingStarted = delegateCombine(h.onFlingStarted, runOn(this, this.al));
                let i = this.k;
                i.onDragDelta = delegateCombine(i.onDragDelta, (i) => this.p.pb(i));
                let j = this.k;
                j.onDragStarted = delegateCombine(j.onDragStarted, (j) => this.p.pc(j, true));
                let k = this.k;
                k.onKeyDown = delegateCombine(k.onKeyDown, runOn(this.p, this.p.fw));
                let l = this.k;
                l.onMouseDown = delegateCombine(l.onMouseDown, runOn(this, this.c6));
                let m = this.k;
                m.onMouseLeave = delegateCombine(m.onMouseLeave, runOn(this, this.c7));
                let n = this.k;
                n.onMouseOver = delegateCombine(n.onMouseOver, runOn(this, this.c8));
                let o = this.k;
                o.onMouseUp = delegateCombine(o.onMouseUp, runOn(this, this.c9));
                let p = this.k;
                p.onMouseWheel = delegateCombine(p.onMouseWheel, runOn(this.p, this.p.fx));
                if (this.k.an) {
                    let q = this.k;
                    q.onZoomDelta = delegateCombine(q.onZoomDelta, (q, r, s, t) => this.p.qh(q, r, s, t));
                    let r = this.k;
                    r.onZoomStarted = delegateCombine(r.onZoomStarted, (r, s, t, u) => this.p.ql(r, s, t, u));
                    let s = this.k;
                    s.onZoomCompleted = delegateCombine(s.onZoomCompleted, (s, t, u, v) => {
                        if (this.k.af) {
                            this.p.qd();
                        }
                        this.p.qg(s, t, u, v);
                    });
                }
                else {
                    let t = this.k;
                    t.onPinchDelta = delegateCombine(t.onPinchDelta, (t, u) => this.p.pt(u));
                    let u = this.k;
                    u.onPinchStarted = delegateCombine(u.onPinchStarted, (u, v) => this.p.pu(u));
                    let v = this.k;
                    v.onGestureCompleted = delegateCombine(v.onGestureCompleted, (v, w) => this.p.pf(v));
                }
                let w = this.k;
                w.onDoubleTap = delegateCombine(w.onDoubleTap, (w) => this.p.o9(w));
                let x = this.k;
                x.onHold = delegateCombine(x.onHold, runOn(this, this.c3));
            }
            if (this.p.c2 != null) {
                this.p.c2.provideContext(this.z);
                this.p.c2.provideContainer(a);
                this.p.c2.provideEventSource(this.k);
            }
            for (let y of fromEnum(this.b)) {
                y.a5.a2();
                this.bo(y);
            }
            for (let z of fromEnum(this.g)) {
                this.bp(z);
            }
        }
        al(a, b, c) {
            if (this.p.ek) {
                return false;
            }
            return true;
        }
        cy(a, b) {
            this.p.o1(a, b);
        }
        cz(a, b) {
            this.p.bb.f$w(this.p, a, b);
        }
        c3(a) {
            this.p.pv(a);
        }
        cx(a, b, c) {
            this.p.o0(a, b, c);
        }
        du(a) {
        }
        get_ap() {
            return false;
        }
        get ap() {
            return this.get_ap();
        }
        ef() {
            this.a9 = FontUtil.getCurrentFontHeight(this.j.ae, this.p.getFontInfo());
        }
        f(a, b, c, d) {
            return {
                ret: ((() => { let e = this.p.bb.f$c(this.p, this.g, this.x, a, b, c, d); c = e.p5; return e.ret; })()),
                p2: c
            };
        }
        bd() {
            return this.a8;
        }
        bc() {
            return this.a7;
        }
        cu() {
            this.j.bd();
        }
        c1(a, b) {
            let c = this.a8;
            let d = this.a7;
            if (this.a8 != a) {
                this.aj = true;
            }
            this.a8 = a;
            if (this.a7 != b) {
                this.aj = true;
            }
            this.a7 = b;
            if (this.aj) {
                let e = new Size(1, c, d);
                let f = new Size(1, a, b);
                this.p.qc(e, f);
            }
            this.dj();
            this.d3();
            this.p.o4();
            this.p.al.r(this.y, this.x);
        }
        b6(a) {
            this.fg = a;
        }
        b9(a) {
            this.fh = a;
        }
        b8() {
            this.a.r(this.z, null);
        }
        d3() {
            if (this.p.destroyed) {
                return;
            }
            this.ag = true;
            this.p.ar.z();
        }
        b2() {
            if (this.a8 == 0 || this.a7 == 0) {
                return;
            }
            this.ag = false;
            this.aa = false;
            if (this.ak) {
                this.di();
                this.de();
                this.ak = false;
                this.cq();
            }
            let a = this.a8;
            let b = this.a7;
            let c = this.p.h4;
            let d = this.p.h9;
            let e = this.p.hr;
            let f = this.p.ij;
            let g = this.p.hp;
            let h = this.p.hq;
            if (isNaN_(g)) {
                g = this.a9 / 2;
            }
            if (isNaN_(h)) {
                h = 0;
            }
            let i = this.p.f3();
            let j = new List$1(AxisLabelPanelBase.$, 0);
            for (let k of fromEnum(this.b)) {
                if (k.aw != null) {
                    j.add(k.aw);
                    k.aw.bx = () => this.aj;
                }
            }
            if (i) {
                let l = false;
                let m = false;
                let n = false;
                let o = false;
                for (let p of fromEnum(j)) {
                    if (LabelPanelArranger.b(p) == 2 && (p.ad.az == null || p.ad.az.visibility == 0)) {
                        l = true;
                    }
                    if (LabelPanelArranger.b(p) == 3 && (p.ad.az == null || p.ad.az.visibility == 0)) {
                        m = true;
                    }
                    if (LabelPanelArranger.b(p) == 0 && (p.ad.az == null || p.ad.az.visibility == 0)) {
                        n = true;
                    }
                    if (LabelPanelArranger.b(p) == 1 && (p.ad.az == null || p.ad.az.visibility == 0)) {
                        o = true;
                    }
                    if (p.ad != null && p.ad.az != null) {
                        p.ad.az.c = p.ad.az.location;
                    }
                }
                if (l || m) {
                    if (!n && isNaN_(f)) {
                        f = g;
                    }
                    if (!o && isNaN_(e)) {
                        e = g;
                    }
                }
                if (o || n) {
                    if (!l && isNaN_(c)) {
                        c = h;
                    }
                    if (!m && isNaN_(d)) {
                        d = h;
                    }
                }
            }
            if (isNaN_(f)) {
                f = 0;
            }
            if (isNaN_(c)) {
                c = 0;
            }
            if (isNaN_(d)) {
                d = 0;
            }
            if (isNaN_(e)) {
                e = 0;
            }
            let q = this.bf();
            f += q;
            let r = this.be();
            f += r;
            let s = new Rect(0, c, f, a - (c + d), b - (f + e));
            s = LabelPanelArranger.e(j, s);
            let t = new Size(1, Math.max(0, a - (c + d)), Math.max(0, b - (f + e)));
            this.a1 = f - (q + r);
            this.az = c;
            this.a0 = d;
            this.ay = e;
            this.e9 = s;
            let u = ((() => {
                let $ret = new LabelPanelsArrangeState();
                $ret.f = c;
                $ret.c = c;
                $ret.a = f + t.height;
                $ret.b = f + t.height;
                $ret.g = c + t.width;
                $ret.d = c + t.width;
                $ret.h = f;
                $ret.e = f;
                return $ret;
            })());
            LabelPanelArranger.d(j, u, this.e9, (v, w) => {
                if (!v.c1.equals1(w)) {
                    if (v.ad != null) {
                        v.ad.cr = true;
                    }
                    v.c1 = w;
                    v.ad.a5.ai();
                }
            });
            let v = false;
            if (this.aj) {
                this.aj = false;
                v = true;
            }
            this.p.qp(this.p.wz, this.e9);
            for (let w of fromEnum(this.b)) {
                if (Rect.l_op_Equality(w.kh, null) || w.kh.isEmpty) {
                    this.aa = true;
                }
                if (w.kh.equals1(this.e9) && !this.j.y()) {
                    continue;
                }
                w.hs(w.kh, this.e9);
            }
            for (let x of fromEnum(this.g)) {
                if (Rect.l_op_Equality(x.cw.b9, null) || x.cw.b9.isEmpty) {
                    this.aa = true;
                }
                if (x.cw.b9.equals1(this.e9) && !this.j.y()) {
                    continue;
                }
                x.q4(x.cw.b9, this.e9);
            }
            this.ek();
            this.dv(this.e9);
            this.j.bc(false);
        }
        ek() {
            if (this.p.c2 != null && !this.e9.isEmpty) {
                let a = this.p.c2;
                let b = (this.p.ef) ? this.e9.width : Number.POSITIVE_INFINITY;
                let c = (this.p.ef) ? this.e9.height : Number.POSITIVE_INFINITY;
                let d = a.getDesiredSize(new Size(1, b, c));
                this.p.c2.arrange(new Rect(0, this.e9.right - d.width, this.e9.bottom - d.height, d.width, d.height));
                this.em();
            }
        }
        v() {
            let a = this.p.getFontInfo();
            let b = this.s();
            if (this.p.di() != null) {
                a = this.p.di();
            }
            else if (b != null) {
                a = b;
            }
            return a;
        }
        u() {
            let a = this.p.getFontInfo();
            let b = this.r();
            if (this.p.dh() != null) {
                a = this.p.dh();
            }
            else if (b != null) {
                a = b;
            }
            return a;
        }
        e5() {
            let a = this.p.getFontBrush();
            let b = this.e2();
            if (this.p.v3 != null) {
                a = this.p.v3;
            }
            else if (b != null) {
                a = b;
            }
            return a;
        }
        e4() {
            let a = this.p.getFontBrush();
            let b = this.e1();
            if (this.p.v2 != null) {
                a = this.p.v2;
            }
            else if (b != null) {
                a = b;
            }
            return a;
        }
        bf() {
            if (this.p.mc == null || !(typeCast(XamDataChart.$, this.p) !== null)) {
                return 0;
            }
            let a = this.v();
            let b = 0;
            b = FontUtil.getCurrentFontHeight(this.j.ae, a);
            let c = this.fm();
            b += c.top + c.bottom;
            return b;
        }
        be() {
            if (this.p.l0 == null || !(typeCast(XamDataChart.$, this.p) !== null)) {
                return 0;
            }
            if (!isNaN_(this.a2)) {
                return this.a2;
            }
            let a = this.u();
            this.a2 = FontUtil.getCurrentFontHeight(this.j.ae, a);
            let b = this.fl();
            this.a2 += b.top + b.bottom;
            return this.a2;
        }
        fm() {
            let a = this.j.ce();
            let b = isNaN_(this.p.ii) ? a.top : this.p.ii;
            let c = isNaN_(this.p.ig) ? a.left : this.p.ig;
            let d = isNaN_(this.p.ih) ? a.right : this.p.ih;
            let e = isNaN_(this.p.ie) ? a.bottom : this.p.ie;
            return new Thickness(1, c, b, d, e);
        }
        fl() {
            let a = this.j.cd();
            let b = isNaN_(this.p.id) ? a.top : this.p.id;
            let c = isNaN_(this.p.ib) ? a.left : this.p.ib;
            let d = isNaN_(this.p.ic) ? a.right : this.p.ic;
            let e = isNaN_(this.p.ia) ? a.bottom : this.p.ia;
            return new Thickness(1, c, b, d, e);
        }
        dv(a) {
        }
        cq() {
            if (!this.af) {
                if (this.z != null) {
                    this.af = true;
                    this.a.r(this.z, null);
                }
            }
        }
        d0() {
            if (this.z == null) {
                return;
            }
            if (this.z.d) {
                if (this.p.hk != 1) {
                    this.z.aa();
                    this.z.ab(this.p.hk, this.p.hk);
                }
                if (!this.fa.isEmpty) {
                    if (!this.au) {
                        if (!this.z.e) {
                            this.z.l(this.fa.left, this.fa.top, this.fa.width, this.fa.height);
                        }
                    }
                }
            }
            this.d1();
            if (this.z.d) {
                if (this.p.hk != 1) {
                    this.z.z();
                }
            }
        }
        isValid() {
            return true;
        }
        preRender() {
            this.j.a6(this.a8, this.a7);
            this.ds();
        }
        ds() {
        }
        d1() {
            if (this.z.d) {
                this.fa = new Rect(0, 0, 0, this.a8, this.a7);
                if (this.ax != null && this.ax.count > 0) {
                    this.ci();
                    this.z.aa();
                    this.z.af(this.p.wz);
                    if (!this.au) {
                        if (!this.z.e) {
                            this.z.l(this.p.wz.left, this.p.wz.top, this.p.wz.width, this.p.wz.height);
                        }
                    }
                }
                this.z.s(this.fd);
                this.z.s(this.fe);
                this.z.t(this.ff);
                this.z.w(this.fi);
                this.z.ad(this.v());
                if (this.et != null) {
                    this.et.ao = this.e5();
                    this.z.x(this.et);
                }
                this.z.ad(this.u());
                if (this.es != null) {
                    this.es.ao = this.e4();
                    this.z.x(this.es);
                }
                if (this.ax != null && this.ax.count > 0) {
                    this.j.bl(this.ax);
                    this.z.z();
                }
                if (this.ar) {
                    this.eb();
                    this.ar = false;
                    this.ax.clear();
                    this.p.bb.f$l(this.p);
                    this.cq();
                }
                if (this.p.el) {
                    if (this.fh != null) {
                        this.z.w(this.fh);
                    }
                    if (this.fg != null) {
                        this.z.w(this.fg);
                    }
                }
            }
        }
        c2() {
            this.j.bh();
        }
        cw() {
            this.j.bf();
        }
        fb() {
            return new Rect(0, 0, 0, this.a8, this.a7);
        }
        e8() {
            return this.j.b8();
        }
        d6() {
            this.p.sa = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.d;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sj = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.m;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sg = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.j;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sh = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.k;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sb = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.e;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.se = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.h;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sc = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.f;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.si = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.l;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sf = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.i;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
            this.p.sd = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.g;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
        }
        ee() {
            this.j.bp();
            this.d4();
            let a = this.a9;
            this.ef();
            if (a != this.a9) {
                this.p.oc();
            }
        }
        dp() {
            if (this.p.w5 == 0) {
                this.cn();
                this.p.n8();
            }
            if (this.p.c2 != null) {
                let a = this.p.w5;
                this.p.c2.visibility = a;
                this.p.c2.doRefresh(false);
            }
        }
        as(a) {
            return this.p.bb.f$i(this.p, a);
        }
        c8(a, b, c) {
            this.p.bb.f$z(this.p, this.g, this.x, a, b, c);
            this.p.nm(a, this.p.c0 != 0 || this.p.fp);
        }
        c7(a) {
            this.p.bb.f$y(this.p, a);
        }
        c6(a) {
            this.p.bb.f$x(this.p, this.k, a);
        }
        c9(a) {
            this.p.bb.f$aa(this.p, this.k, a);
        }
        d4() {
        }
        get ez() {
            return this.k.bi;
        }
        eq(a) {
            if (this.k != null) {
                this.k.bl = this.p.wz;
            }
        }
        cr(a) {
            this.p.bb.f$ad(this.p, a);
            this.p.ef = a;
        }
        bk(a) {
            this.p.rv();
            this.j.bw(a);
            if (this.p.c2 != null) {
                this.p.c2.mobileMode = a;
            }
            this.el();
        }
        el() {
            this.p.r1();
        }
        get isDirty() {
            return this.af;
        }
        set isDirty(a) {
            this.af = a;
        }
        undirty(a) {
            this.af = false;
            this.d0();
        }
        get index() {
            return 10;
        }
        postRender() {
        }
        b7() {
            this.d3();
        }
        ch() {
            this.j.a9();
        }
        ea() {
            this.j.bo();
        }
        bv(a) {
            this.j.ay();
        }
        bm(a) {
            this.j.au(a);
        }
        ei(a) {
            this.j.bu(a);
        }
        ej(a) {
            this.j.bv(a);
        }
        bn(a) {
            this.j.av(a);
        }
        dz(a) {
            this.j.bk(a);
        }
        da(a) {
            this.p.al.r(this.y, this.z);
        }
        bu(a) {
        }
        m(a) {
            if (this.p.ef) {
                return 2;
            }
            else {
                return 1;
            }
        }
        c5() {
            if (this.k != null) {
                this.k.ae = this.p.ff;
            }
            if (this.n != null) {
                this.n.isSurfaceInteractionDisabled = this.p.ff;
            }
        }
        bb(a, b) {
            if (a == null || this.z == null) {
                return 0;
            }
            this.z.ad(b);
            return this.z.f(a);
        }
        ba(a, b) {
            if (a == null) {
                return 0;
            }
            let c = 0;
            c = FontUtil.getCurrentFontHeight(this.j.ae, b);
            return c;
        }
        dj() {
            this.ak = true;
            this.d3();
            this.cq();
        }
        eu(a, b, c, d) {
            if (a == null) {
                return null;
            }
            let e = ((() => {
                let $ret = new TextBlock();
                $ret.al = a;
                $ret.o = b.top;
                return $ret;
            })());
            let f = this.bb(e, c);
            e.o = b.top;
            let g = this.ba(a, c);
            e.m = f;
            e.l = g;
            switch (d) {
                case 0:
                    e.n = b.left;
                    break;
                case 2:
                    e.n = Math.max((this.a8 - b.right) - f, b.left);
                    break;
                case 1:
                case 3:
                default:
                    let h = (this.a8 / 2) - (f / 2);
                    h += b.left;
                    h -= b.right;
                    e.n = h;
                    break;
            }
            return e;
        }
        di() {
            this.et = typeCast(XamDataChart.$, this.p) !== null ? this.eu(this.p.mc, this.fm(), this.v(), this.ey()) : null;
        }
        de() {
            this.a2 = NaN;
            this.es = typeCast(XamDataChart.$, this.p) !== null ? this.eu(this.p.l0, this.fl(), this.u(), this.ex()) : null;
            if (this.es != null) {
                this.es.o += this.bf();
            }
        }
        c(a) {
            let b = this.j.c();
            if (b == 0) {
                let c = LabelPanelArranger.b(a.aw);
                if (a.aj == null) {
                    if (c == 4) {
                        return 4;
                    }
                    if (c == 5) {
                        return 3;
                    }
                }
                else {
                    if (c == 4) {
                        return 3;
                    }
                    if (c == 5) {
                        return 4;
                    }
                }
                if (c == 0) {
                    return 3;
                }
                return 4;
            }
            return b;
        }
        d(a) {
            let b = this.j.d();
            if (b == 0) {
                let c = LabelPanelArranger.b(a.aw);
                if (a.aj == null) {
                    if (c == 7) {
                        return 1;
                    }
                    if (c == 6) {
                        return 2;
                    }
                }
                else {
                    if (c == 7) {
                        return 2;
                    }
                    if (c == 6) {
                        return 1;
                    }
                }
                if (c == 3) {
                    return 2;
                }
                return 1;
            }
            return b;
        }
        dk() {
            if (!isNaN_(this.p.hj)) {
                if (!isNaN_(DeviceUtils.a(this.p.h5))) {
                    this.p.hk = DeviceUtils.a(this.p.h5);
                }
                else {
                    this.co();
                }
            }
            if (!this.p.e3) {
                this.j.a5();
            }
        }
        dl() {
            if (!isNaN_(DeviceUtils.a(this.p.hj))) {
                this.p.hk = DeviceUtils.a(this.p.hj);
            }
            if (!this.p.e3) {
                this.j.a4();
            }
        }
        t() {
            return this.j.r();
        }
        e3() {
            return this.j.b7();
        }
        q() {
            return this.j.q();
        }
        e0() {
            return this.j.b6();
        }
        s() {
            return this.j.p();
        }
        r() {
            return this.j.o();
        }
        e2() {
            return this.j.b5();
        }
        e1() {
            return this.j.b4();
        }
        get a4() {
            return this.az;
        }
        get a5() {
            return this.a0;
        }
        get a6() {
            return this.a1;
        }
        get a3() {
            return this.ay;
        }
        get ew() {
            return this.et;
        }
        get ev() {
            return this.es;
        }
        fc() {
            return new Rect(0, 0, 0, this.a8, this.a7);
        }
        fk() {
            return this.j.cg();
        }
        fj() {
            return this.j.cf();
        }
        dd(a, b) {
            this.ac = true;
        }
        dh(a, b) {
            this.ad = true;
        }
        ey() {
            if (this.ad) {
                return this.p.vd;
            }
            else {
                let a = 1;
                switch (this.j.as()) {
                    case "left":
                        a = 0;
                        break;
                    case "right":
                        a = 2;
                        break;
                }
                return a;
            }
        }
        ex() {
            if (this.ac) {
                return this.p.vc;
            }
            else {
                let a = 1;
                switch (this.j.ar()) {
                    case "left":
                        a = 0;
                        break;
                    case "right":
                        a = 2;
                        break;
                }
                return a;
            }
        }
        bq() {
            if (this.ag) {
                this.b2();
                if (this.aa) {
                    this.p.ar.y();
                }
                if (this.ag) {
                    this.b2();
                }
            }
        }
        am() {
            if (this.p.gk) {
                return false;
            }
            if ((dateNow().getTime() - this.p.gw.getTime()) < 300) {
                return true;
            }
            return false;
        }
        b5() {
            this.j.a6(this.a8, this.a7);
        }
        cp() {
            this.j.bb(this.p.fe);
        }
        at(a) {
            let b = this.p.wh;
            let c = b.top > 0;
            let d = b.left > 0;
            let e = b.right < 1;
            let f = b.bottom < 1;
            let g = a.y < 0;
            let h = a.y > 0;
            let i = a.x < 0;
            let j = a.x > 0;
            if (c && g) {
                return true;
            }
            if (d && i) {
                return true;
            }
            if (f && h) {
                return true;
            }
            if (j && e) {
                return true;
            }
            return false;
        }
        dq() {
            this.j.bj();
            this.p.al.r(this.y, this.x);
            this.p.am.r(this.y, null);
            this.p.ak.r(this.y, this.x);
            this.a.r(this.z, null);
        }
        b3(a, b, c) {
            this.ar = false;
            if (this.ax == null) {
                this.ax = new List$1(ITileZoomTile_$type, 0);
            }
            for (let d = 0; d < this.ax.count; d++) {
                while (d < this.ax.count && !a.containsKey(this.ax._inner[d].content)) {
                    this.ax.removeAt(d);
                }
            }
            for (let e = 0; e < b.count; e++) {
                this.ax.add(b._inner[e]);
            }
            this.cq();
        }
        bh(a, b, c) {
            return this.j.an(a, b, c);
        }
        b0() {
            this.j.a2();
        }
        b1(a) {
            this.j.a3(a);
        }
        cm() {
            if (this.ax == null) {
                return;
            }
            this.ar = true;
            this.cq();
        }
        by() {
            this.j.a0();
        }
        br() {
            this.j.aw();
        }
        bz(a) {
            this.j.a1(a);
            this.p.o7();
        }
        bs() {
            this.j.ax();
            this.p.o5();
        }
        ci() {
            if (this.ah) {
                this.ah = false;
                if (!this.y.e) {
                    this.y.l(this.p.wz.left, this.p.wz.top, this.p.wz.width, this.p.wz.height);
                }
                this.p.al.e = true;
            }
        }
        eb() {
            if (!this.ah) {
                this.ah = true;
                this.p.al.e = false;
                this.p.al.r(this.y, this.x);
            }
        }
        dg() {
        }
        cv() {
            this.j.be();
        }
        db() {
            this.ff._fill = this.p.vz == null ? this.j.b3() : this.p.vz;
            this.ff._opacity = isNaN_(this.p.h6) ? 0.1 : this.p.h6;
            this.fi._stroke = this.p.v0 == null ? this.j.b3() : this.p.v0;
        }
        b4(a) {
            if (this.j.ae == null || (this.j.ae != a)) {
                this.p.provideContainer(a);
            }
        }
        bj(a, b, c) {
            return this.j.ao(a, b, c);
        }
    }
    SeriesViewerView.$t = /*@__PURE__*/ markType(SeriesViewerView, 'SeriesViewerView', Base.$, [ISchedulableRender_$type]);
    return SeriesViewerView;
})();
/**
 * @hidden
 */
export let OverviewPlusDetailViewportHost = /*@__PURE__*/ (() => {
    class OverviewPlusDetailViewportHost extends Base {
        constructor(a) {
            super();
            this.a = null;
            if (a == null) {
                throw new ArgumentNullException(0, "view");
            }
            this.a = a;
        }
        getViewInfo(a, b) {
            a = new Rect(0, 0, 0, this.a.n.worldRectViewport.width, this.a.n.worldRectViewport.height);
            b = SeriesViewer.wu;
            return {
                p0: a,
                p1: b
            };
        }
        getEffectiveViewport() {
            if (!this.a.p.fd) {
                if (this.a.p.wl.isEmpty) {
                    return this.a.p.wl;
                }
                return this.a.p.wr(this.a.n.previewViewportdRect, this.a.p.wz, this.a.p.wl);
            }
            return Rect.empty;
        }
        getMainContentViewport() {
            if (!this.a.p.fd) {
                if (this.a.p.wk.isEmpty) {
                    return this.a.p.wk;
                }
                return Rect.empty;
            }
            return Rect.empty;
        }
    }
    OverviewPlusDetailViewportHost.$t = /*@__PURE__*/ markType(OverviewPlusDetailViewportHost, 'OverviewPlusDetailViewportHost', Base.$, [IProvidesViewport_$type]);
    return OverviewPlusDetailViewportHost;
})();
/**
 * @hidden
 */
export let LegendTemplates = /*@__PURE__*/ (() => {
    class LegendTemplates extends Base {
        static af(a) {
            let b = a.av();
            switch (b) {
                case 3: return LegendTemplates.y;
                case 4: return LegendTemplates.aa;
                case 0: return LegendTemplates.z;
                case 8: return LegendTemplates.ae;
                case 9: return LegendTemplates.ac;
                case 5: return LegendTemplates.ah;
                case 1:
                case 2: return LegendTemplates.ad;
                case 6:
                case 7: return LegendTemplates.ab;
            }
            return LegendTemplates.ah;
        }
        static a(a) {
            return new RenderingContext(new CanvasViewRenderer(), a.context);
        }
        static v(a) {
            let b = typeCast(Series.$, a.series);
            if (b == null || b.be == 0) {
                a.thickness = Defaults.legendBadge_ShapeThickness;
            }
            else {
                a.thickness = b.ig;
            }
            if (a.itemBrush != null) {
                a.actualItemBrush = a.itemBrush;
            }
            else {
                if (b != null) {
                    a.actualItemBrush = b.vg;
                }
            }
            if (a.outline == null) {
                if (b != null) {
                    a.m = a.outline;
                    a.outline = b.vh;
                }
            }
        }
        static b(a, b, c) {
            let d = (c - b) / 2;
            return a + d;
        }
        static c(a, b, c) {
            let d = (c - b) / 2;
            return a + d;
        }
        static u(a, b, c, d, e, f, g, h) {
            let i = DeviceUtils.g(Defaults.legendBadge_ShapeWidth);
            let j = DeviceUtils.g(Defaults.legendBadge_ShapeHeight);
            let k = LegendTemplates.c(f, j, a.availableHeight);
            let l = LegendTemplates.c(h, j, a.availableHeight);
            let m = LegendTemplates.b(e, i, a.availableWidth);
            let n = LegendTemplates.b(g, i, a.availableWidth);
            let o = ((() => {
                let $ret = new PathFigure();
                $ret.isClosed = true;
                $ret.isFilled = true;
                return $ret;
            })());
            o._startPoint = { $type: Point_$type, x: m, y: l };
            o._segments.add(new LineSegment(0, { $type: Point_$type, x: m, y: l }));
            o._segments.add(new LineSegment(0, { $type: Point_$type, x: n, y: l }));
            o._segments.add(new LineSegment(0, { $type: Point_$type, x: n, y: k }));
            o._segments.add(new LineSegment(0, { $type: Point_$type, x: m, y: k }));
            let p = new PathGeometry();
            p.c.add(o);
            let q = new Path();
            q.an = p;
            q.ad = b;
            q._stroke = c;
            q._fill = d;
            let r = LegendTemplates.a(a);
            r.t(q);
        }
        static s(a) {
            let b = a.data;
            let c = b.series;
            LegendTemplates.v(b);
            let d = DeviceUtils.g(Defaults.legendBadge_ShapeWidth);
            let e = DeviceUtils.g(Defaults.legendBadge_ShapeHeight);
            let f = new Line();
            f.an = LegendTemplates.b(0, d, a.availableWidth);
            f.ap = a.availableHeight / 2;
            f.ao = LegendTemplates.b(d, d, a.availableWidth);
            f.aq = a.availableHeight / 2;
            f._stroke = b.actualItemBrush;
            if (c.be == 0) {
                f.ad = Defaults.legendBadge_ShapeThickness;
            }
            else {
                f.ad = c.ig;
                f.al = c.v9;
                f.ak = c.v9;
                f.ai = c.v7;
                f.ac = c.ji;
                f.am = c.wa;
            }
            let g = LegendTemplates.a(a);
            g.s(f);
        }
        static r(a, b, c) {
            let d = a.data;
            LegendTemplates.v(d);
            let e = DeviceUtils.g(Defaults.legendBadge_ShapeWidth);
            let f = DeviceUtils.g(Defaults.legendBadge_ShapeHeight);
            let g = e / 2;
            let h = f / 2;
            let i = LegendTemplates.b(g, e, a.availableWidth);
            let j = LegendTemplates.c(h, f, a.availableHeight);
            let k = new EllipseGeometry();
            k.e = { $type: Point_$type, x: i, y: j };
            k.c = g;
            k.d = h;
            let l = new Path();
            l.an = k;
            l.ad = d.thickness;
            l._stroke = d.outline;
            l._fill = d.actualItemBrush;
            let m = LegendTemplates.a(a);
            m.t(l);
        }
        static t(a, b = 0) {
            let c = a.data;
            let d = DeviceUtils.g(Defaults.legendBadge_ShapeWidth - b);
            let e = DeviceUtils.g(Defaults.legendBadge_ShapeHeight - b);
            let f = new DataTemplateMeasureInfo();
            f.passInfo = a.passInfo;
            f.width = d;
            f.height = e;
            f.data = a.data;
            f.context = a.context;
            f.renderContext = a.renderContext;
            let g = c.actualItemBrush;
            let h = c.itemBrush;
            let i = c.outline;
            let j = c.series;
            let k = j.s3();
            c.actualItemBrush = j.vq();
            c.outline = j.vr();
            if (c.itemBrush != null) {
                c.actualItemBrush = c.itemBrush;
            }
            if (c.m != null) {
                c.outline = c.m;
            }
            if (j.be == 1) {
                c.thickness = j.ip();
            }
            else {
                c.thickness = Defaults.series_MarkerThickness;
            }
            if (k != null && k.measure != null && k.render != null) {
                let l = new DataTemplateRenderInfo();
                l.passInfo = a.passInfo;
                l.availableWidth = f.width;
                l.availableHeight = f.height;
                l.xPosition = (a.availableWidth / 2);
                l.yPosition = (a.availableHeight / 2);
                l.data = a.data;
                l.context = a.context;
                l.renderContext = a.renderContext;
                k.render(l);
            }
            c.itemBrush = h;
            c.actualItemBrush = g;
            c.outline = i;
        }
        static j(a) {
            let b = a.data;
            LegendTemplates.v(b);
            LegendTemplates.r(a, Defaults.legendBadge_ShapeWidth, Defaults.legendBadge_ShapeHeight);
        }
        static n(a) {
            let b = a.data;
            let c = b.series;
            LegendTemplates.s(a);
            if (c.be == 1) {
                LegendTemplates.t(a, Defaults.legendBadge_OverlaidMarkerPadding);
            }
        }
        static o(a) {
            LegendTemplates.t(a, 0);
        }
        static q(a) {
            let b = a.data;
            LegendTemplates.v(b);
            LegendTemplates.u(a, b.thickness, b.outline, b.actualItemBrush, 0, 0, Defaults.legendBadge_ShapeWidth, Defaults.legendBadge_ShapeHeight);
        }
        static p(a) {
            let b = a.data;
            let c = b.series;
            LegendTemplates.v(b);
            if (c.be == 0) {
                let d = Defaults.legendBadge_ShapeThickness;
                let e = b.actualItemBrush;
                let f = c.vh;
                let g = Defaults.legendBadge_ShapeWidth;
                let h = Defaults.legendBadge_ShapeHeight;
                LegendTemplates.u(a, d, f, e, 0, 0, g, h);
            }
            else {
                let i = Defaults.legendBadge_ShapeThickness;
                let j = b.actualItemBrush;
                let k = c.v1();
                let l = Defaults.legendBadge_ShapeWidth / 2;
                let m = Defaults.legendBadge_ShapeWidth;
                let n = Defaults.legendBadge_ShapeHeight;
                LegendTemplates.u(a, i, j, j, 0, 0, l, n);
                LegendTemplates.u(a, i, k, k, l, 0, m, n);
            }
        }
        static i(a) {
            let b = a.data;
            LegendTemplates.v(b);
            let c = 0;
            let d = Defaults.legendBadge_ShapeWidth;
            let e = (Defaults.legendBadge_ShapeHeight * 0.25);
            let f = (Defaults.legendBadge_ShapeHeight * 0.75);
            LegendTemplates.u(a, b.thickness, b.outline, b.actualItemBrush, c, e, d, f);
        }
        static l(a) {
            let b = a.data;
            LegendTemplates.v(b);
            let c = (Defaults.legendBadge_ShapeWidth * 0.25);
            let d = (Defaults.legendBadge_ShapeWidth * 0.75);
            let e = Defaults.legendBadge_ShapeHeight;
            let f = 0;
            LegendTemplates.u(a, b.thickness, b.outline, b.actualItemBrush, c, f, d, e);
        }
        static m(a) {
            let b = a.data;
            let c = BrushUtil.j(0, 0, 0, 0);
            let d = BrushUtil.j(0, 0, 0, 0);
            LegendTemplates.u(a, Defaults.legendBadge_ShapeThickness, c, d, 0, 0, Defaults.legendBadge_ShapeWidth, Defaults.legendBadge_ShapeHeight);
        }
        static k(a) {
        }
        static g(a) {
            let b = a.data;
            let c = b.series;
            let d = c.legendItemBadgeTemplate;
            if (d == null) {
                d = LegendTemplates.af(c);
            }
            let e = c.title;
            if (e == null) {
                e = "Series Title";
            }
            LegendItemHelper.d(a.context, a.xPosition, a.yPosition, a.availableWidth, a.availableHeight, a.data, e.toString(), d, a.passInfo, c.a5 != null && c.a5.isFinancial, c.io, c.jj);
        }
        static resolveLegendItemTemplate(a) {
            switch (a) {
                case 0: return LegendTemplates.w;
                case 1: return LegendTemplates.x;
            }
            return LegendTemplates.w;
        }
        static e(a) {
            let b = a.data;
            let c = b.series;
            let d = c.legendItemBadgeTemplate;
            if (d == null) {
                d = LegendTemplates.af(c);
            }
            let e = b.legendLabel != null ? b.legendLabel : b.itemLabel;
            if (e == null) {
                e = "Series Item";
            }
            LegendItemHelper.c(a.context, a.xPosition, a.yPosition, a.availableWidth, a.availableHeight, a.data, e.toString(), d, a.passInfo);
        }
        static f(a) {
        }
        static d(a) {
        }
        static h(a) {
        }
    }
    LegendTemplates.$t = /*@__PURE__*/ markType(LegendTemplates, 'LegendTemplates');
    LegendTemplates.z = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.j;
        return $ret;
    })());
    LegendTemplates.ae = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.o;
        return $ret;
    })());
    LegendTemplates.ad = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.n;
        return $ret;
    })());
    LegendTemplates.ah = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.q;
        return $ret;
    })());
    LegendTemplates.ab = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.p;
        return $ret;
    })());
    LegendTemplates.y = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.i;
        return $ret;
    })());
    LegendTemplates.aa = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.l;
        return $ret;
    })());
    LegendTemplates.ac = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.m;
        return $ret;
    })());
    LegendTemplates.w = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.f;
        $ret.render = LegendTemplates.g;
        return $ret;
    })());
    LegendTemplates.x = /*@__PURE__*/ ((() => {
        let $ret = new DataTemplate();
        $ret.measure = LegendTemplates.d;
        $ret.render = LegendTemplates.e;
        return $ret;
    })());
    return LegendTemplates;
})();
/**
 * @hidden
 */
export let SeriesViewerViewManager = /*@__PURE__*/ (() => {
    class SeriesViewerViewManager extends Base {
        constructor(a) {
            super();
            this.ae = null;
            this.af = null;
            this.aj = null;
            this.ai = null;
            this.ag = null;
            this.ak = null;
            this.t = null;
            this.w = null;
            this.v = null;
            this.u = null;
            this.x = null;
            this.f = null;
            this.j = null;
            this.ah = null;
            this.ab = 0;
            this.aa = 0;
            this.ac = 1;
            this.ad = 0;
            this.l = null;
            this.ca = new Thickness(0, 0);
            this.aq = null;
            this.ap = stringEmpty();
            this.b9 = new Thickness(0, 0);
            this.b0 = null;
            this.bz = null;
            this.k = null;
            this.a = 0;
            this.b = 0;
            this.n = null;
            this.b2 = null;
            this.m = null;
            this.b1 = null;
            this.cb = new Thickness(0, 0);
            this.cc = new Thickness(0, 0);
            this.h = null;
            this.z = new Dictionary$2(String_$type, Tuple$2.$.specialize(DomWrapper_$type, RenderingContext.$), 0);
            this.al = -1;
            this.am = -1;
            this.s = null;
            this.j = a;
        }
        bj() {
        }
        bg(a) {
            if (a == null) {
                if (this.f != null) {
                    this.f.av();
                }
                this.ae = null;
                if (this.af != null) {
                    this.af.remove();
                }
                this.af = null;
                if (this.aj != null) {
                    this.aj.remove();
                }
                this.aj = null;
                if (this.ai != null) {
                    this.ai.remove();
                }
                this.ai = null;
                if (this.ag != null) {
                    this.ag.remove();
                }
                this.ag = null;
                if (this.ak != null) {
                    this.ak.remove();
                }
                this.ak = null;
                this.t = null;
                this.w = null;
                this.v = null;
                this.u = null;
                if (this.ah != null) {
                    this.ah.remove();
                }
                this.ah = null;
                this.f = null;
                this.j.p.db.u(null);
                this.j.p.dd.u(null);
                this.j.p.da.u(null);
                this.j.p.dc.u(null);
                this.j.p.al.m(null);
                this.j.p.am.m(null);
                this.j.p.ak.m(null);
                this.j.a.m(null);
                return;
            }
            this.ae = a;
            this.j.p.db.u(this.ae);
            this.j.p.dd.u(this.ae);
            this.j.p.da.u(this.ae);
            this.j.p.dc.u(this.ae);
            this.j.p.al.m(this.ae);
            this.j.p.am.m(this.ae);
            this.j.p.ak.m(this.ae);
            this.j.a.m(this.ae);
            this.j.p.ar.aa(this.ae);
            this.bi();
            this.ae.rootWrapper.setStyleProperty("position", "relative");
            this.af = this.ae.createElement("canvas");
            this.af.setStyleProperty("position", "absolute");
            this.af.setStyleProperty("top", "0px");
            this.af.setStyleProperty("left", "0px");
            this.aj = this.ae.createElement("canvas");
            this.aj.setStyleProperty("position", "absolute");
            this.aj.setStyleProperty("top", "0px");
            this.aj.setStyleProperty("left", "0px");
            this.ai = this.ae.createElement("canvas");
            this.ai.setStyleProperty("position", "absolute");
            this.ai.setStyleProperty("top", "0px");
            this.ai.setStyleProperty("left", "0px");
            this.ag = this.ae.createElement("canvas");
            this.ag.setStyleProperty("position", "absolute");
            this.ag.setStyleProperty("top", "0px");
            this.ag.setStyleProperty("left", "0px");
            this.ak = this.ae.createElement("canvas");
            this.ak.setStyleProperty("position", "absolute");
            this.ak.setStyleProperty("top", "0px");
            this.ak.setStyleProperty("left", "0px");
            this.ae.append(this.af);
            this.ae.append(this.ai);
            this.ae.append(this.aj);
            this.t = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.af));
            this.w = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.aj));
            this.v = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ai));
            if (this.j.p.au != 1) {
                this.u = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ag));
                this.s = this.u;
            }
            else {
                this.u = new RenderingContext(null, null);
            }
            this.x = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ak));
            this.j.du(this.t);
            this.j.c1(this.ae.rootWrapper.width(), this.ae.rootWrapper.height());
            {
                if ((TypeRegistrar.isRegistered('CanvasGestureDOMEventProxy'))) {
                    let overlayCanvas_ = this.aj;
                    let container_ = this.ae;
                    this.f = (TypeRegistrar.create('CanvasGestureDOMEventProxy', overlayCanvas_, container_, false));
                }
                else {
                    this.f = null;
                }
                if (this.f != null) {
                    this.f.ap = runOn(this.j, this.j.at);
                }
            }
            this.ah = this.ae.createElement("div");
            this.ah.hide();
            this.ah.setStyleProperty("position", "absolute");
            this.ah.setStyleProperty("z-index", "10000");
            this.ah.addClass(this.j.p.mm);
            this.ae.append(this.ah);
        }
        static by(a, b) {
            b();
            return;
        }
        bi() {
            this.j.d4();
            this.j.ef();
            this.bp();
        }
        ba() {
            let a = this.j.p.h5;
            let b = this.j.p.hk;
            if (!isNaN_(a) && a != 0) {
                return;
            }
            if (window.devicePixelRatio != undefined && window.devicePixelRatio != b) {
                this.j.p.hk = window.devicePixelRatio;
            }
        }
        g() {
            if ((TypeRegistrar.isRegistered('XamOverviewPlusDetailPane'))) {
                let overlayCanvas_ = this.aj;
                let container_ = this.ae;
                return (TypeRegistrar.create('XamOverviewPlusDetailPane'));
            }
            return null;
        }
        bm() {
            this.aj.setStyleProperty("cursor", "default");
        }
        bn() {
            this.aj.setStyleProperty("cursor", "pointer");
        }
        b3() {
            return ((() => {
                let $ret = new Brush();
                $ret.fill = "#000000";
                return $ret;
            })());
        }
        az(a, b, c) {
            this.ab = a;
            this.aa = b;
            this.ac = c;
            let d = a;
            let e = b;
            if (c != 1) {
                d = Math.round(a * c);
                e = Math.round(b * c);
            }
            if (this.af != null) {
                this.af.setAttribute("width", d.toString());
                this.af.setAttribute("height", e.toString());
                this.af.setStyleProperty("width", a.toString() + "px");
                this.af.setStyleProperty("height", b.toString() + "px");
            }
            if (this.aj != null) {
                this.aj.setAttribute("width", d.toString());
                this.aj.setAttribute("height", e.toString());
                this.aj.setStyleProperty("width", a.toString() + "px");
                this.aj.setStyleProperty("height", b.toString() + "px");
                this.aj.setAttribute("tabindex", "0");
                this.aj.setStyleProperty("outline", "0");
            }
            if (this.ai != null) {
                this.ai.setAttribute("width", d.toString());
                this.ai.setAttribute("height", e.toString());
                this.ai.setStyleProperty("width", a.toString() + "px");
                this.ai.setStyleProperty("height", b.toString() + "px");
            }
            if (this.ag != null) {
                this.ag.setAttribute("width", d.toString());
                this.ag.setAttribute("height", e.toString());
                this.ag.setStyleProperty("width", a.toString() + "px");
                this.ag.setStyleProperty("height", b.toString() + "px");
            }
            if (this.ak != null) {
                this.ak.setAttribute("width", d.toString());
                this.ak.setAttribute("height", e.toString());
                this.ak.setStyleProperty("width", a.toString() + "px");
                this.ak.setStyleProperty("height", b.toString() + "px");
            }
            this.j.p.al.q();
            this.j.p.am.q();
            this.j.p.ak.q();
        }
        b8() {
            if (this.f == null) {
                return { $type: Point_$type, x: 0, y: 0 };
            }
            let a = this.f.bk(this.ae.rootWrapper);
            return { $type: Point_$type, x: a.left, y: a.top };
        }
        y() {
            return false;
        }
        bc(a) {
        }
        a8(a, b, c, d, e) {
            let f = this.e();
            a = f.a;
            b = f.f;
            c = f.k;
            d = f.h;
            e = f.i;
            return {
                p0: a,
                p1: b,
                p2: c,
                p3: d,
                p4: e
            };
        }
        e() {
            let a = new DefaultPaletteInfo();
            a.a = new BrushCollection();
            a.f = new BrushCollection();
            a.b = new BrushCollection();
            a.c = new BrushCollection();
            let b = new List$1(String_$type, 0);
            b.add("background-image");
            this.ae.startCSSQuery();
            let c = this.ae.getCssDefaultValuesForClassCollection("ui-chart-fill-palette-", b.toArray());
            let d = c.length;
            let e = this.ae.getCssDefaultValuesForClassCollection("ui-chart-outline-palette-", b.toArray());
            let f = e.length;
            let g = this.ae.getCssDefaultValuesForClassCollection("ui-chart-marker-fill-palette-", b.toArray());
            let h = g.length;
            let i = this.ae.getCssDefaultValuesForClassCollection("ui-chart-marker-outline-palette-", b.toArray());
            let j = i.length;
            for (let k = 0; k < d; k++) {
                a.a.add(CssGradientUtil.brushFromGradientString(c[k][0]));
            }
            for (let l = 0; l < f; l++) {
                a.f.add(CssGradientUtil.brushFromGradientString(e[l][0]));
            }
            for (let m = 0; m < h; m++) {
                a.b.add(CssGradientUtil.brushFromGradientString(g[m][0]));
            }
            for (let n = 0; n < j; n++) {
                a.c.add(CssGradientUtil.brushFromGradientString(i[n][0]));
            }
            b.clear();
            let o = 0;
            let p = 0;
            let q = Math.min(d, f);
            let r = null;
            if (d == 0) {
                b.add("background-color");
            }
            if (f == 0) {
                b.add("border-top-color");
                p = d == 0 ? 1 : 0;
            }
            if (b.count > 0) {
                r = this.ae.getCssDefaultValuesForClassCollection("ui-chart-palette-", b.toArray());
                q = r.length;
            }
            if (d == 0) {
                if (q > 0) {
                    for (let s = 0; s < q; s++) {
                        let t = new Brush();
                        t._fill = r[s][o];
                        a.a.add(t);
                    }
                }
                else {
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#8BDC5C";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#8961A9";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#6DB1FF";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#82E9D9";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#EA3C63";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#735656";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#F8CE4F";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#A8A8B7";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#E051A9";
                        return $ret;
                    })()));
                    a.a.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#FF903B";
                        return $ret;
                    })()));
                }
            }
            if (f == 0) {
                if (q > 0) {
                    for (let u = 0; u < q; u++) {
                        let v = new Brush();
                        v._fill = r[u][p];
                        a.f.add(v);
                    }
                }
                else {
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#8BDC5C";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#8961A9";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#6DB1FF";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#82E9D9";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#EA3C63";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#735656";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#F8CE4F";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#A8A8B7";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#E051A9";
                        return $ret;
                    })()));
                    a.f.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#FF903B";
                        return $ret;
                    })()));
                }
            }
            b.clear();
            let w = Math.min(h, j);
            if (h == 0) {
                b.add("background-color");
            }
            if (j == 0) {
                b.add("border-top-color");
                p = h == 0 ? 1 : 0;
            }
            if (b.count > 0) {
                r = this.ae.getCssDefaultValuesForClassCollection("ui-chart-marker-palette-", b.toArray());
                w = r.length;
            }
            if (h == 0) {
                if (w > 0) {
                    for (let x = 0; x < w; x++) {
                        let y = ((() => {
                            let $ret = new Brush();
                            $ret.fill = r[x][o];
                            return $ret;
                        })());
                        a.b.add(y);
                    }
                }
                else {
                    a.b.add(((() => {
                        let $ret = new Brush();
                        $ret.fill = "#FFFFFF";
                        return $ret;
                    })()));
                }
            }
            if (j == 0) {
                if (w > 0) {
                    for (let z = 0; z < w; z++) {
                        let aa = ((() => {
                            let $ret = new Brush();
                            $ret.fill = r[z][p];
                            return $ret;
                        })());
                        a.c.add(aa);
                    }
                }
                else {
                    for (let ab of fromEnum(a.a)) {
                        a.c.add(ab);
                    }
                }
            }
            let ac = this.ae.getCssDefaultPropertyValue("ui-chart-axis", "border-top-color");
            if (ac != null) {
                a.i = new Brush();
                a.i._fill = ac;
            }
            else {
                a.i = AxisDefaults.axis_LineBrush;
            }
            a.k = new Brush();
            a.k._fill = this.ae.getCssDefaultPropertyValue("", "color");
            a.j = Defaults.crosshairLineBrush;
            let ad = this.ae.getCssDefaultPropertyValue("ui-chart-crosshair", "border-top-color");
            if (ad != null) {
                a.j = new Brush();
                a.j._fill = ad;
            }
            this.ae.endCSSQuery();
            a.h = FontUtil.getFont(this.ae);
            let ae = ((() => {
                let $ret = new Brush();
                $ret.fill = "#ee5879";
                return $ret;
            })());
            a.d = new BrushCollection();
            a.d.add(ae);
            a.e = new BrushCollection();
            a.e.add(ae);
            return a;
        }
        a7(a, b, c, d, e, f) {
            this.ae.startCSSQuery();
            let g = this.ae.getCssDefaultPropertyValue("ui-chart-area-fill-opacity", "opacity");
            a = g != null ? parseFloat(g) : 1;
            b = new Array(4);
            let h = this.ae.getCssDefaultPropertyValue("ui-chart-render-margins", "margin-top");
            let i = this.ae.getCssDefaultPropertyValue("ui-chart-render-margins", "margin-right");
            let j = this.ae.getCssDefaultPropertyValue("ui-chart-render-margins", "margin-bottom");
            let k = this.ae.getCssDefaultPropertyValue("ui-chart-render-margins", "margin-left");
            b[0] = h != null ? parseFloat(h) : NaN;
            b[1] = i != null ? parseFloat(i) : NaN;
            b[2] = j != null ? parseFloat(j) : NaN;
            b[3] = k != null ? parseFloat(k) : NaN;
            c = d = null;
            let l = this.ae.getCssDefaultPropertyValue("ui-chart-axis-stroke", "border-top-color");
            if (l != null) {
                let m = new Brush();
                m._fill = l;
                c = m;
            }
            let n = this.ae.getCssDefaultPropertyValue("ui-chart-axis-major-line", "border-top-color");
            if (n != null) {
                let o = new Brush();
                o._fill = n;
                d = o;
            }
            let p = this.ae.getCssDefaultPropertyValue("ui-chart-aligned-gridlines", "visibility");
            f = p != null && p == "visible";
            let q = this.ae.getCssDefaultPropertyValue("ui-chart-category-axis-tick", "height");
            if (q != null) {
                e = parseFloat(q);
                if (Math.abs(e) > 4000) {
                    e = 0;
                }
            }
            else {
                q = this.ae.getCssDefaultPropertyValue("ui-chart-category-axis-tick", "width");
                e = q != null ? parseFloat(q) : 0;
            }
            this.ae.endCSSQuery();
            return {
                p0: a,
                p1: b,
                p2: c,
                p3: d,
                p4: e,
                p5: f
            };
        }
        ay() {
            this.ah.removeChildren();
        }
        bu(x_) {
            let box_ = this.ah;
            let offset_ = this.f.bk(this.ah);
            let a = this.b8();
            x_ = a.x + this.j.p.wz.left + x_;
            box_.setOffset(x_, this.j.p.wz.top + this.ad + a.y);
        }
        bv(y_) {
            this.ad = y_;
            let box_ = this.ah;
            let offset_ = this.ah.getOffset();
            let a = this.b8();
            y_ = this.j.p.wz.top + this.ad + a.y;
            box_.setOffset(offset_.left, y_);
        }
        au(a) {
            let b = a;
            b.show();
            this.ah.append(b);
        }
        a9() {
            this.ah.hide();
        }
        bo() {
            this.ah.show();
        }
        av(a) {
            this.ae.appendToBody(a);
        }
        bk(a) {
            a.remove();
        }
        bd() {
            if (this.ae == null) {
                return;
            }
            this.ba();
            this.j.c1(this.ae.rootWrapper.width(), this.ae.rootWrapper.height());
        }
        p() {
            return this.l;
        }
        ce() {
            return this.ca;
        }
        as() {
            return this.aq;
        }
        ar() {
            return this.ap;
        }
        cd() {
            return this.b9;
        }
        b5() {
            return this.b0;
        }
        b4() {
            return this.bz;
        }
        o() {
            return this.k;
        }
        c() {
            return this.a;
        }
        d() {
            return this.b;
        }
        r() {
            return this.n;
        }
        b7() {
            return this.b2;
        }
        q() {
            return this.m;
        }
        b6() {
            return this.b1;
        }
        cf() {
            return this.cb;
        }
        cg() {
            return this.cc;
        }
        bp() {
            this.ae.startCSSQuery();
            this.br();
            this.bq();
            this.bt();
            this.bs();
            this.bx();
            this.ae.endCSSQuery();
        }
        bx() {
            let a = "ui-chart-pointer-tooltip";
            let b = this.ae.getCssDefaultPropertyValue(a, "background-color");
            let c = this.ae.getCssDefaultPropertyValue(a, "border-top-color");
            let d = this.ae.getCssDefaultPropertyValue(a, "border-top-left-radius");
            let e = this.ae.getCssDefaultPropertyValue(a, "border-top-width");
            let f = new PointerTooltipStyle();
            f.a = d != null ? parseFloat(d) : 0;
            f.c = b != null ? Brush.create(b) : ((() => {
                let $ret = new Brush();
                $ret.fill = "white";
                return $ret;
            })());
            f.d = c != null ? Brush.create(c) : ((() => {
                let $ret = new Brush();
                $ret.fill = "gray";
                return $ret;
            })());
            f.b = e != null ? parseFloat(e) : 0;
            this.h = f;
        }
        br() {
            let a = "ui-chart-title";
            this.l = FontUtil.getFontForClass(this.ae, a);
            this.b0 = ((() => {
                let $ret = new Brush();
                $ret.fill = this.ae.getCssDefaultPropertyValue(a, "color");
                return $ret;
            })());
            this.aq = this.ae.getCssDefaultPropertyValue(a, "text-align");
            if (this.aq == null) {
                this.aq = "center";
            }
            let b = this.ae.getCssDefaultPropertyValue(a, "margin-top");
            let c = this.ae.getCssDefaultPropertyValue(a, "margin-bottom");
            let d = this.ae.getCssDefaultPropertyValue(a, "margin-left");
            let e = this.ae.getCssDefaultPropertyValue(a, "margin-right");
            let f = b != null ? parseFloat(b) : 0;
            let g = c != null ? parseFloat(c) : 0;
            let h = d != null ? parseFloat(d) : 0;
            let i = e != null ? parseFloat(e) : 0;
            this.ca = new Thickness(1, h, f, i, g);
        }
        bq() {
            let a = "ui-chart-subtitle";
            this.k = FontUtil.getFontForClass(this.ae, a);
            this.bz = ((() => {
                let $ret = new Brush();
                $ret.fill = this.ae.getCssDefaultPropertyValue(a, "color");
                return $ret;
            })());
            this.ap = this.ae.getCssDefaultPropertyValue(a, "text-align");
            if (this.ap == null) {
                this.ap = "center";
            }
            let b = this.ae.getCssDefaultPropertyValue(a, "margin-top");
            let c = this.ae.getCssDefaultPropertyValue(a, "margin-bottom");
            let d = this.ae.getCssDefaultPropertyValue(a, "margin-left");
            let e = this.ae.getCssDefaultPropertyValue(a, "margin-right");
            let f = b != null ? parseFloat(b) : 0;
            let g = c != null ? parseFloat(c) : 0;
            let h = d != null ? parseFloat(d) : 0;
            let i = e != null ? parseFloat(e) : 0;
            this.b9 = new Thickness(1, h, f, i, g);
        }
        bs() {
            let a = "ui-chart-horizontal-axis-title";
            this.m = FontUtil.getFontForClass(this.ae, a);
            this.b1 = ((() => {
                let $ret = new Brush();
                $ret.fill = this.ae.getCssDefaultPropertyValue(a, "color");
                return $ret;
            })());
            let b = this.ae.getCssDefaultPropertyValue(a, "vertical-align");
            if (b == null) {
                this.a = 0;
            }
            else if (b.toLowerCase() == "bottom") {
                this.a = 4;
            }
            else {
                this.a = 3;
            }
            let c = this.ae.getCssDefaultPropertyValue(a, "margin-top");
            let d = this.ae.getCssDefaultPropertyValue(a, "margin-bottom");
            let e = this.ae.getCssDefaultPropertyValue(a, "margin-left");
            let f = this.ae.getCssDefaultPropertyValue(a, "margin-right");
            let g = c != null ? parseFloat(c) : 2;
            let h = d != null ? parseFloat(d) : 2;
            let i = e != null ? parseFloat(e) : 2;
            let j = f != null ? parseFloat(f) : 2;
            this.cb = new Thickness(1, i, g, j, h);
        }
        bt() {
            let a = "ui-chart-vertical-axis-title";
            this.n = FontUtil.getFontForClass(this.ae, a);
            this.b2 = ((() => {
                let $ret = new Brush();
                $ret.fill = this.ae.getCssDefaultPropertyValue(a, "color");
                return $ret;
            })());
            let b = this.ae.getCssDefaultPropertyValue(a, "text-align");
            if (b == null) {
                this.b = 0;
            }
            else if (b.toLowerCase() == "right") {
                this.b = 2;
            }
            else {
                this.b = 1;
            }
            let c = this.ae.getCssDefaultPropertyValue(a, "margin-top");
            let d = this.ae.getCssDefaultPropertyValue(a, "margin-bottom");
            let e = this.ae.getCssDefaultPropertyValue(a, "margin-left");
            let f = this.ae.getCssDefaultPropertyValue(a, "margin-right");
            let g = c != null ? parseFloat(c) : 0;
            let h = d != null ? parseFloat(d) : 0;
            let i = e != null ? parseFloat(e) : 0;
            let j = f != null ? parseFloat(f) : 0;
            this.cc = new Thickness(1, i, g, j, h);
        }
        a6(a, b) {
            let c = this.j.p.hk;
            if (a != this.ab || b != this.aa || c != this.ac) {
                this.az(a, b, this.j.p.hk);
                this.j.p.al.l();
                this.j.a.l();
            }
        }
        i() {
            return this.h;
        }
        bb(a) {
            if (this.f == null) {
                return;
            }
            this.f.ab = a;
            this.f.ap = runOn(this.j, this.j.at);
        }
        an(a, b, c) {
            let d;
            if (!((() => { let e = this.z.tryGetValue(b.iD.toString(), d); d = e.p1; return e.ret; })())) {
                let e = this.ae.createElement("canvas");
                e.setAttribute("width", c.toString());
                e.setAttribute("height", c.toString());
                e.setStyleProperty("width", c.toString() + "px");
                e.setStyleProperty("height", c.toString() + "px");
                let f = this.ae.get2DCanvasContext(e);
                let g = new RenderingContext(new CanvasViewRenderer(), f);
                let h = new Tuple$2(DomWrapper_$type, RenderingContext.$, e, g);
                d = h;
                this.z.addItem(b.iD.toString(), d);
            }
            let i = new Rect(0, 0, 0, c, c);
            let j = new RenderSurface();
            j.a = d.d;
            for (let k = 0; k < this.j.p.series.count; k++) {
                let l = this.j.p.series._inner[k];
                l.rt(i, a, j, "tile", 1);
            }
            this.j.p.ak.l();
            return d.c;
        }
        a3(a) {
            this.z.removeItem(a.iD.toString());
        }
        a2() {
            this.z.clear();
        }
        bl(a) {
            for (let b = 0; b < a.count; b++) {
                let c = a._inner[b];
                let d = c.content;
                this.j.z.n(d.getNativeElement(), 1, c.xPosition + this.j.p.wz.left, c.yPosition + this.j.p.wz.top, c.width, c.height);
            }
        }
        a0() {
            if (this.al != -1) {
                this.aw();
            }
            if (this.ae != null) {
                this.al = this.ae.setTimeout(() => this.j.p.bb.f$m(this.j.p), 5000);
            }
            else {
                this.al = window.setTimeout(() => this.j.p.bb.f$m(this.j.p), 5000);
            }
        }
        aw() {
            if (this.al != -1) {
                if (this.ae != null) {
                    this.ae.clearTimeout(this.al);
                }
                else {
                    window.clearTimeout(this.al);
                }
                this.al = -1;
            }
        }
        a1(a) {
            if (this.am != -1) {
                this.ax();
            }
            if (this.ae != null) {
                this.am = this.ae.setTimeout(() => this.j.p.nu(), a);
            }
            else {
                this.am = window.setTimeout(() => this.j.p.nu(), a);
            }
        }
        ax() {
            if (this.am != -1) {
                if (this.ae != null) {
                    this.ae.clearTimeout(this.am);
                }
                else {
                    window.clearTimeout(this.am);
                }
                this.am = -1;
            }
        }
        be() {
            if (this.j.p.au != 1) {
                if (this.s == null) {
                    this.u = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ag));
                    this.s = this.u;
                }
                else {
                    this.u = this.s;
                }
            }
            else {
                this.u = new RenderingContext(null, null);
            }
            this.j.dt(this.u);
        }
        bw(a) {
            if (this.ae != null) {
                let b = "igTouch";
                if (a) {
                    this.ae.rootWrapper.addClass(b);
                }
                else {
                    this.ae.rootWrapper.removeClass(b);
                }
            }
        }
        a4() {
        }
        a5() {
        }
        bh() {
            if (this.f != null) {
                this.f.bh(this.aj, "");
            }
        }
        bf() {
            this.ba();
            if (this.f != null) {
                this.f.at(this.aj, "");
            }
        }
        ao(a, b, c) {
            let d = this.ae.createElement("img");
            d.setProperty("src", this.at(a, b, c, "image/png"));
            return d.getNativeElement();
        }
        at(a, b, c, d, e = null) {
            let f = a * c;
            let g = b * c;
            let h = this.ae.createElement("canvas");
            h.setStyleProperty("width", a + "px");
            h.setStyleProperty("height", b + "px");
            h.setProperty("width", f);
            h.setProperty("height", g);
            let i = this.ae.get2DCanvasContext(h);
            let j = ((() => {
                let $ret = new Brush();
                $ret.fill = this.ae.rootWrapper.getStyleProperty("background-color");
                return $ret;
            })());
            if (BrushUtilCore.a(j)) {
                j._fill = this.ae.rootWrapper.parent().getStyleProperty("background-color");
                if (BrushUtilCore.a(j)) {
                    j._fill = "rgb(255, 255, 255)";
                }
            }
            if (c != 1) {
                i.save();
                i.scale(c, c);
            }
            i.fillStyle = j._fill;
            i.fillRect(0, 0, a, b);
            if (this.t != null && this.t != this.v) {
                i.drawImage(this.af.getNativeElement(), 0, 0, a, b);
            }
            if (this.v != null) {
                i.drawImage(this.ai.getNativeElement(), 0, 0, a, b);
            }
            if (this.w != null && this.w != this.v) {
                i.drawImage(this.aj.getNativeElement(), 0, 0, a, b);
            }
            if (c != 1) {
                i.restore();
            }
            let format_ = d;
            let sCanv_ = h.getNativeElement();
            let url_ = (sCanv_.toDataURL(format_));
            if (e != null) {
                let cb_ = e;
                sCanv_.toBlob((blob) => { cb_(url_, blob); }, format_);
            }
            return url_;
        }
    }
    SeriesViewerViewManager.$t = /*@__PURE__*/ markType(SeriesViewerViewManager, 'SeriesViewerViewManager');
    return SeriesViewerViewManager;
})();
/**
 * @hidden
 */
export let AutoRangeCalculator = /*@__PURE__*/ (() => {
    class AutoRangeCalculator extends Base {
        static a(a, b, c, d, e, f, g) {
            f = !isNaN_(b) && !isInfinity(b) ? b : Number.POSITIVE_INFINITY;
            g = !isNaN_(c) && !isInfinity(c) ? c : Number.NEGATIVE_INFINITY;
            let h = f;
            let i = g;
            if (isInfinity(h) || isInfinity(i)) {
                if (a != null) {
                    let j = a.kv();
                    if (j != null) {
                        h = Math.min(h, j.c);
                        i = Math.max(i, j.b);
                    }
                }
            }
            if (!isInfinity(h) && !isInfinity(i)) {
                if (h == i && h != 0) {
                    h *= h > 0 ? 0.9 : 1.1;
                    i *= i > 0 ? 1.1 : 0.9;
                }
                if (h == i && h == 0) {
                    i = 1;
                }
                if (b > c) {
                    let k = c;
                    c = b;
                    b = k;
                }
                let l = isNaN_(b) || isInfinity(b) ? h : b;
                let m = isNaN_(c) || isInfinity(c) ? i : c;
                if (d) {
                    if (l <= 0) {
                        if (m > 1) {
                            l = 1;
                        }
                        else {
                            l = Math.pow(e, Math.floor(logBase(m, e)));
                        }
                    }
                    if (isNaN_(b) || isInfinity(b)) {
                        let n = logBase(l, e);
                        h = Math.pow(e, Math.floor(n));
                    }
                    else {
                        h = l;
                    }
                    if (isNaN_(c) || isInfinity(c)) {
                        i = Math.pow(e, Math.ceil(logBase(m, e)));
                    }
                    else {
                        i = m;
                    }
                }
                else {
                    let o = Math.pow(10, Math.floor(log10(m - l)) - 1);
                    let p = a.ek();
                    if (a != null && p > 0 && (!a.lm && !a.ll)) {
                        let q = new LinearNumericSnapper(0, h, i, p, a.e0(), a.mk);
                        o = q.g;
                    }
                    else if (a.lh && p > 0 && (!a.lm || !a.ll)) {
                        let r = h;
                        let s = i;
                        if (a.lm) {
                            r = b;
                        }
                        if (a.ll) {
                            s = c;
                        }
                        let t = new LinearNumericSnapper(0, r, s, p, a.e0(), a.mk);
                        o = t.g;
                    }
                    if ((isNaN_(b) || isInfinity(b)) && !isNaN_(h) && !isNaN_(o) && o != 0) {
                        {
                            h = o * Math.floor(h / o);
                        }
                    }
                    else {
                        h = l;
                    }
                    if ((isNaN_(c) || isInfinity(c)) && !isNaN_(i) && !isNaN_(o) && o != 0) {
                        let u = Math.ceil(i / o);
                        {
                            i = o * u;
                        }
                    }
                    else {
                        i = m;
                    }
                    if (a.lh) {
                        if (a.lh && p > 0 && (!a.lm || !a.ll)) {
                            let v = new LinearNumericSnapper(0, h, i, p, a.e0(), a.mk);
                            let w = v.g;
                            if (w != o) {
                                o = w;
                                if ((isNaN_(b) || isInfinity(b)) && !isNaN_(h) && !isNaN_(o) && o != 0) {
                                    {
                                        h = o * Math.floor(h / o);
                                    }
                                }
                                else {
                                    h = l;
                                }
                                if ((isNaN_(c) || isInfinity(c)) && !isNaN_(i) && !isNaN_(o) && o != 0) {
                                    let x = Math.ceil(i / o);
                                    {
                                        i = o * x;
                                    }
                                }
                                else {
                                    i = m;
                                }
                            }
                        }
                    }
                }
            }
            f = h;
            g = i;
            return {
                p5: f,
                p6: g
            };
        }
    }
    AutoRangeCalculator.$t = /*@__PURE__*/ markType(AutoRangeCalculator, 'AutoRangeCalculator');
    return AutoRangeCalculator;
})();
/**
 * @hidden
 */
export let IAxisAnnotationManager_$type = /*@__PURE__*/ new Type(null, 'IAxisAnnotationManager');
/**
 * @hidden
 */
export let AxisLabelSettings = /*@__PURE__*/ (() => {
    class AxisLabelSettings extends Base {
        constructor() {
            super();
            this.ab = null;
            this.ay = null;
            this.b = 1;
            this.a3 = 0;
            this.i = true;
            this.c = 0;
            this.a = null;
            this.n = 0;
            this.p = NaN;
            this.q = 2;
            this.r = 2;
            this.s = 2;
            this.o = 2;
            this.av = 0;
            this.a0 = 1;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.f = null;
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (a, b) => this.ar(a, b.propertyName, b.oldValue, b.newValue));
        }
        get textStyle() {
            return this.ab;
        }
        set textStyle(a) {
            let b = this.ab;
            this.ab = a;
            if (this.ab != b) {
                this.f = null;
                this.as("TextStyle", b, a);
            }
        }
        get textColor() {
            return this.ay;
        }
        set textColor(a) {
            let b = this.ay;
            this.ay = a;
            this.as("TextColor", b, a);
        }
        get location() {
            return this.b;
        }
        set location(a) {
            let b = this.b;
            this.b = a;
            this.as("Location", enumGetBox(AxisLabelsLocation_$type, b), enumGetBox(AxisLabelsLocation_$type, a));
        }
        get visibility() {
            return this.a3;
        }
        set visibility(a) {
            let b = this.a3;
            this.a3 = a;
            this.as("Visibility", enumGetBox(Visibility_$type, b), enumGetBox(Visibility_$type, a));
        }
        get showFirstLabel() {
            return this.i;
        }
        set showFirstLabel(a) {
            let b = this.i;
            this.i = a;
            this.as("ShowFirstLabel", b, a);
        }
        registerAxis(a) {
            this.a = a;
        }
        unregisterAxis(a) {
            this.a = null;
        }
        get angle() {
            return this.n;
        }
        set angle(a) {
            let b = this.n;
            this.n = a;
            this.as("Angle", b, a);
        }
        get extent() {
            return this.p;
        }
        set extent(a) {
            let b = this.p;
            this.p = a;
            this.as("Extent", b, a);
        }
        set margin(a) {
            this.leftMargin = a;
            this.bottomMargin = a;
            this.rightMargin = a;
            this.topMargin = a;
        }
        get leftMargin() {
            return this.q;
        }
        set leftMargin(a) {
            let b = this.q;
            this.q = a;
            this.as("LeftMargin", b, a);
        }
        get rightMargin() {
            return this.r;
        }
        set rightMargin(a) {
            let b = this.r;
            this.r = a;
            this.as("RightMargin", b, a);
        }
        get topMargin() {
            return this.s;
        }
        set topMargin(a) {
            let b = this.s;
            this.s = a;
            this.as("TopMargin", b, a);
        }
        get bottomMargin() {
            return this.o;
        }
        set bottomMargin(a) {
            let b = this.o;
            this.o = a;
            this.as("BottomMargin", b, a);
        }
        get horizontalAlignment() {
            return this.av;
        }
        set horizontalAlignment(a) {
            let b = this.av;
            this.av = a;
            this.as("HorizontalAlignment", enumGetBox(HorizontalAlignment_$type, b), enumGetBox(HorizontalAlignment_$type, a));
        }
        get verticalAlignment() {
            return this.a0;
        }
        set verticalAlignment(a) {
            let b = this.a0;
            this.a0 = a;
            this.as("VerticalAlignment", enumGetBox(VerticalAlignment_$type, b), enumGetBox(VerticalAlignment_$type, a));
        }
        as(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
        ar(a, b, c, d) {
            switch (b) {
                case "Location":
                    this.c = this.location;
                    break;
            }
            if (this.a == null || this.a.bg == null) {
                return;
            }
            switch (b) {
                case "Angle":
                    this.a.cq = true;
                    this.a.ia();
                    break;
                case "TextStyle":
                    this.f = null;
                    this.a.cq = true;
                    if (this.a.bi != null) {
                        this.a.bi.oc();
                    }
                    this.a.ia();
                    break;
                case "Location":
                case "Extent":
                case "Visibility":
                case "HorizontalAlignment":
                case "VerticalAlignment":
                case "TopMargin":
                case "RightMargin":
                case "BottomMargin":
                case "LeftMargin":
                case "ShowFirstLabel":
                    this.a.cq = true;
                    if (this.a.bi != null) {
                        this.a.bi.oc();
                    }
                    this.a.ia();
                    break;
                case "TextColor":
                    this.a.ia();
                    break;
            }
        }
        k() {
            return this.n != 0;
        }
        l() {
            return !isNaN_(this.p);
        }
        get j() {
            return this.textStyle != null || this.f != null;
        }
        get g() {
            return this.f;
        }
        set g(a) {
            this.f = a;
        }
        h(a) {
            if (this.f == null) {
                this.f = FontUtil.toFontInfo(a, this.textStyle);
            }
            return this.f;
        }
    }
    AxisLabelSettings.$t = /*@__PURE__*/ markType(AxisLabelSettings, 'AxisLabelSettings', Base.$, [INotifyPropertyChanged_$type]);
    AxisLabelSettings.extentPropertyDefault = NaN;
    return AxisLabelSettings;
})();
/**
 * @hidden
 */
export let TitleSettings = /*@__PURE__*/ (() => {
    class TitleSettings extends AxisLabelSettings {
        constructor() {
            super();
            this.a5 = 0;
            this.horizontalAlignment = 1;
            this.leftMargin = NaN;
            this.rightMargin = NaN;
            this.topMargin = NaN;
            this.bottomMargin = NaN;
        }
        get position() {
            return this.a5;
        }
        set position(a) {
            let b = this.a5;
            this.a5 = a;
            this.as("AxisTitlePosition", enumGetBox(AxisTitlePosition_$type, b), enumGetBox(AxisTitlePosition_$type, a));
        }
        ar(a, b, c, d) {
            super.ar(a, b, c, d);
            if (this.a == null || this.a.bi == null) {
                return;
            }
            switch (b) {
                case "AxisTitlePosition":
                    this.a.cq = true;
                    this.a.ia();
                    break;
            }
        }
    }
    TitleSettings.$t = /*@__PURE__*/ markType(TitleSettings, 'TitleSettings', AxisLabelSettings.$);
    return TitleSettings;
})();
/**
 * @hidden
 */
export let Axis = /*@__PURE__*/ (() => {
    class Axis extends Control {
        a4() {
            return new AxisView(this);
        }
        hv(a) {
        }
        hh() {
            if (this.ca) {
                this.a8.onAddAnnotations(this);
            }
        }
        get bu() {
            if (this.bt == null) {
                this.bt = new SRProvider(this.fn);
            }
            if (this.bt.l == null) {
                this.bt.l = this.fn;
            }
            return this.bt;
        }
        get ba() {
            if (this.a9 == null) {
                this.a9 = DVContainer.instance.createInstance(IAxisVisualDataManager_$type, () => this.bu.q);
            }
            return this.a9;
        }
        ek() {
            return this.kb().width;
        }
        f4() {
            return null;
        }
        f3() {
            return null;
        }
        get_cb() {
            return false;
        }
        get cb() {
            return this.get_cb();
        }
        get_cj() {
            return false;
        }
        get cj() {
            return this.get_cj();
        }
        get_b9() {
            return false;
        }
        get b9() {
            return this.get_b9();
        }
        get_cm() {
            return false;
        }
        get cm() {
            return this.get_cm();
        }
        get_cp() {
            return false;
        }
        get cp() {
            return this.get_cp();
        }
        get_cn() {
            return false;
        }
        get cn() {
            return this.get_cn();
        }
        d5(a) {
            return NaN;
        }
        get_ce() {
            return false;
        }
        get ce() {
            return this.get_ce();
        }
        get_ck() {
            return false;
        }
        get ck() {
            return this.get_ck();
        }
        get_cl() {
            return false;
        }
        get cl() {
            return this.get_cl();
        }
        get_cc() {
            return false;
        }
        get cc() {
            return this.get_cc();
        }
        get_cd() {
            return true;
        }
        get cd() {
            return this.get_cd();
        }
        ak() {
            return this.aj;
        }
        constructor() {
            super();
            this.a5 = null;
            this.bt = null;
            this.a9 = null;
            this.a7 = null;
            this.iu = null;
            this.bn = null;
            this.bh = null;
            this.bs = null;
            this.by = false;
            this.dm = NaN;
            this.dg = 50;
            this.dt = 0;
            this.dq = 150;
            this.as = 0;
            this.dl = NaN;
            this.dx = 0;
            this.ds = 0;
            this.dp = 180;
            this.bk = null;
            this.bj = null;
            this.f5 = "Verdana";
            this.dn = NaN;
            this.dz = 0;
            this.du = 8;
            this.dr = 16;
            this.fq = -1;
            this.fp = 1;
            this.fo = 3;
            this.fr = 0;
            this.kn = 0;
            this.dw = 0;
            this.dv = 2;
            this.iv = null;
            this.d0 = 0;
            this.ci = false;
            this.bw = false;
            this.dh = 0;
            this.cv = false;
            this.cx = false;
            this.bz = false;
            this.rangeChanged = null;
            this.al = new AxisAnnotationCollection();
            this.am = new AxisAnnotationCollection();
            this.j9 = Rect.empty;
            this.kg = null;
            this.dd = null;
            this.de = null;
            this.aw = null;
            this.bx = false;
            this.ka = null;
            this.a6 = null;
            this.fn = null;
            this.ai = null;
            this._coercionMethods = null;
            this.bv = false;
            this.cy = false;
            this.c7 = false;
            this.renderRequested = null;
            this.bc = null;
            this.cr = false;
            this.dj = NaN;
            this.dk = -1;
            this.cs = false;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.df = null;
            this.da = new Dictionary$2(String_$type, String_$type, 0);
            this.c9 = new Dictionary$2(String_$type, FastReflectionHelper.$, 0);
            this.km = new Size();
            this.ap = new AxisComponentsForView();
            this.d4 = 0;
            this.di = 0;
            this.br = null;
            this.bq = null;
            this.bp = null;
            this.ax = new AxisLabelSettings();
            this.fm = null;
            DVContainer.instance.registerIfLoaded("VisualDataFactoryManager");
            DVContainer.instance.registerIfLoaded("AnnotationFactoryManager");
            this.ka = Rect.empty;
            this.bz = true;
            this.d4 = NaN;
            this.a5 = this.a4();
            this.hv(this.a5);
            this.a5.al();
            this.br = ((() => {
                let $ret = new Pool$1(TextBlock.$);
                $ret.create = runOn(this.a5, this.a5.a3);
                $ret.activate = runOn(this.a5, this.a5.aw);
                $ret.disactivate = runOn(this.a5, this.a5.ay);
                $ret.destroy = runOn(this.a5, this.a5.ax);
                return $ret;
            })());
            this.bq = ((() => {
                let $ret = new Pool$1(TextBlock.$);
                $ret.create = runOn(this.a5, this.a5.a3);
                $ret.activate = runOn(this.a5, this.a5.aw);
                $ret.disactivate = runOn(this.a5, this.a5.ay);
                $ret.destroy = runOn(this.a5, this.a5.ax);
                return $ret;
            })());
            this.bp = ((() => {
                let $ret = new Pool$1(Rectangle.$);
                $ret.create = runOn(this.a5, this.a5.bi);
                $ret.activate = runOn(this.a5, this.a5.t);
                $ret.disactivate = runOn(this.a5, this.a5.v);
                $ret.destroy = runOn(this.a5, this.a5.u);
                return $ret;
            })());
            this.kg = Rect.empty;
            this.dd = new List$1(Base.$, 0);
            this.de = new List$1(LabelPosition.$, 0);
            this.aw = this.av();
            this.aw.ag = this.az;
            this.aw.ad = this;
            this.df = new List$1(Series.$, 0);
            let a = this.al;
            a.collectionResetting = delegateCombine(a.collectionResetting, runOn(this, this.he));
            let b = this.al;
            b.collectionChanged = delegateCombine(b.collectionChanged, runOn(this, this.hd));
            let c = this.am;
            c.collectionResetting = delegateCombine(c.collectionResetting, runOn(this, this.hg));
            let d = this.am;
            d.collectionChanged = delegateCombine(d.collectionChanged, runOn(this, this.hf));
            this.ab = Axis.$;
            if (this.az != null) {
                this.ax = this.az;
            }
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (e, f) => this.hz(e, f.propertyName, f.oldValue, f.newValue));
            this.bs = (e, f) => {
                if (this.bi == null || !this.bi.e1) {
                    this.it(f.oldRect, f.newRect);
                }
            };
            this.a5.aa();
        }
        get a8() {
            if (this.a7 == null) {
                this.a7 = DVContainer.instance.createInstance(IAxisAnnotationManager_$type, () => this.bu.n);
                this.a7.owner = this;
            }
            return this.a7;
        }
        get ca() {
            return DVContainer.instance.checkLoaded("AnnotationFactoryManager");
        }
        hf(a, b) {
            if (!this.ca) {
                return;
            }
            this.a8.onAutoAnnotionsChanged(this, this.am, b);
        }
        hg(a, b) {
            if (!this.ca) {
                return;
            }
            this.a8.onAutoAnnotionsReset(this, this.am, b);
        }
        hd(a, b) {
            if (!this.ca) {
                return;
            }
            this.a8.onAnnotionsChanged(this, this.al, b);
        }
        he(a, b) {
            if (!this.ca) {
                return;
            }
            this.a8.onAnnotionsReset(this, this.al, b);
        }
        provideRenderer(a) {
            this.fn = a;
            this.hi();
            this.aw.ag = this.az;
        }
        hs(a, b) {
            if (!a.equals1(b)) {
                this.is(a, b);
            }
        }
        ac() {
            super.ac();
            this.a5.ao();
        }
        get bo() {
            return this.bn;
        }
        set bo(a) {
            if (this.bo != a) {
                let b = this.bo;
                this.bn = a;
                this.h5("FastItemsSourceProvider", b, this.bn);
            }
        }
        get bi() {
            return this.bh;
        }
        set bi(a) {
            if (this.bi != a) {
                let b = this.bi;
                this.bh = a;
                this.h5("SeriesViewer", b, this.bh);
            }
        }
        get bg() {
            return typeCast(XamDataChart.$, this.bi);
        }
        set bg(a) {
            this.bi = a;
        }
        get c6() {
            return this.by;
        }
        set c6(a) {
            if (this.by == a) {
                return;
            }
            this.by = a;
            let b = null;
            if (this.aw != null && Rect.l_op_Inequality(this.aw.c1, null)) {
                b = this.aw.c1;
            }
            this.aw = this.av();
            this.aw.ad = this;
            this.aw.ag = this.az;
            if (Rect.l_op_Inequality(b, null)) {
                this.aw.c1 = b;
            }
            if (this.bi != null && this.bi.c9 != null) {
                this.aw.af.al(this.bi.c9.y);
                this.h9(true);
            }
        }
        get e8() {
            return this.dm;
        }
        set e8(a) {
            let b = this.dm;
            if (b != a) {
                this.dm = a;
                this.dy = a;
                this.h9(true);
            }
        }
        get dy() {
            return this.dg;
        }
        set dy(a) {
            this.dg = a;
        }
        get fe() {
            return this.dt;
        }
        set fe(a) {
            this.dt = a;
            this.h9(true);
        }
        get fb() {
            return this.dq;
        }
        set fb(a) {
            this.dq = a;
            this.h9(true);
        }
        get at() {
            return this.as;
        }
        set at(a) {
            let b = this.as;
            if (b != a) {
                this.as = a;
                this.h9(true);
            }
        }
        get e7() {
            return this.dl;
        }
        set e7(a) {
            this.dl = a;
            this.h8();
        }
        get fd() {
            return this.ds;
        }
        set fd(a) {
            this.ds = a;
            this.h8();
        }
        get fa() {
            return this.dp;
        }
        set fa(a) {
            this.dp = a;
            this.h8();
        }
        get bm() {
            if (this.bk == null) {
                if (this.bj == null) {
                    this.bj = this.a5.i();
                }
                return this.bj;
            }
            return this.bk;
        }
        set bm(a) {
            this.bk = a;
            this.dn = FontUtil.getFontSize(this.bk);
            this.h8();
        }
        get gz() {
            return this.f5;
        }
        set gz(a) {
            this.f5 = a;
            let b = this.dn;
            if (isNaN_(b)) {
                b = 12;
            }
            this.bm.q = a;
            this.bm.f = b;
            this.aw.b8();
            this.h8();
        }
        get e9() {
            return this.dn;
        }
        set e9(a) {
            this.dn = a;
            this.bm = FontUtil.getFontWithNewFontSize(this.bm, this.dn);
            this.h8();
        }
        get ff() {
            return this.du;
        }
        set ff(a) {
            this.du = a;
            this.h8();
        }
        get fc() {
            return this.dr;
        }
        set fc(a) {
            this.dr = a;
            this.h8();
        }
        get fv() {
            return this.fq;
        }
        set fv(a) {
            this.fq = a;
            this.h8();
        }
        get fu() {
            return this.fp;
        }
        set fu(a) {
            this.fp = a;
            this.h8();
        }
        get ft() {
            return this.fo;
        }
        set ft(a) {
            this.fo = a;
            this.h8();
        }
        get kq() {
            return this.kn;
        }
        set kq(a) {
            this.kn = a;
            this.h8();
        }
        get fh() {
            return this.dw;
        }
        set fh(a) {
            this.dw = a;
            this.h8();
        }
        get fg() {
            return this.dv;
        }
        set fg(a) {
            this.dv = a;
            this.h8();
        }
        ik() {
            this.aw.cp();
        }
        h8() {
            this.h9(false);
        }
        h9(a) {
            if (a) {
                this.aw.co();
            }
            this.cq = true;
            this.h7();
        }
        io() {
            if (this.fj > 0) {
                this.d0 = this.fj;
                return;
            }
            let a = typeCast(XamDataChart.$, this.bi);
            if (a != null && isNaN_(this.fj) && this.cb && (this.cp || this.a2 == 0)) {
                this.d0 = a.xk.fq;
                return;
            }
            this.d0 = 0;
        }
        get b4() {
            return this.bw;
        }
        get b7() {
            return this.az != null && this.az.k();
        }
        ij(a) {
            this.bw = true;
            if (this.dh != a) {
                this.dh = a;
                this.ib(false);
            }
        }
        id() {
            this.bw = false;
            this.dh = 0;
            this.ib(false);
        }
        eh() {
            if (this.b4 && (!this.b7 || (this.b7 && this.az.angle == 0))) {
                return this.ey();
            }
            if (this.b7) {
                return this.az.angle;
            }
            return 0;
        }
        ey() {
            return this.dh;
        }
        get c4() {
            return this.c(Axis.js);
        }
        set c4(a) {
            this.h(Axis.js, a);
        }
        d7() {
            return 0;
        }
        ju() {
            if (this.cp) {
                return 2;
            }
            return 0;
        }
        ko() {
            return 1;
        }
        jv() {
            return 1;
        }
        kp() {
            return 1;
        }
        d9() {
            if (this.cp) {
                return DeviceUtils.g(5);
            }
            return 0;
        }
        eb() {
            if (!this.cp && !this.b9) {
                return DeviceUtils.g(5);
            }
            return 0;
        }
        ea() {
            if (this.cp) {
                return DeviceUtils.g(5);
            }
            return 0;
        }
        d8() {
            if (!this.cp && !this.b9) {
                return DeviceUtils.g(5);
            }
            return 0;
        }
        ee() {
            return NaN;
        }
        eg() {
            return NaN;
        }
        ef() {
            return NaN;
        }
        ed() {
            return NaN;
        }
        a0() {
            if (this.cp) {
                return 2;
            }
            if (this.cm) {
                return 5;
            }
            return 1;
        }
        a1() {
            return 1;
        }
        h6(a) {
            if (this.rangeChanged != null) {
                this.rangeChanged(this, a);
            }
        }
        ec() {
            if (this.cp) {
                return -90;
            }
            return 0;
        }
        d6() {
            return NaN;
        }
        get an() {
            return this.al;
        }
        get ao() {
            return this.am;
        }
        get kh() {
            if (this.kg.isEmpty) {
                return this.j9;
            }
            return this.kg;
        }
        set kh(a) {
            this.j9 = a;
        }
        ip() {
            let a = 0;
            let b = typeCast(XamDataChart.$, this.bi);
            if (b != null && b.xb == 0) {
                a = 1;
            }
            this.a5.a1(a);
        }
        c8(a, b, c) {
            return this.bi != null;
        }
        co() {
            let a = Rect.empty;
            if (this.bi != null) {
                a = this.bi.w0;
            }
            return this.c8(this.kh, a, this.a5);
        }
        is(a, b) {
            this.cr = false;
            this.kh = b;
            this.cq = true;
            this.c1();
            this.ib(false);
            if (this.bi != null) {
                this.bi.ar.ae(1, this, this.a6, b);
            }
        }
        get cq() {
            return this.bx;
        }
        set cq(a) {
            this.bx = a;
        }
        ke() {
            if (this.bi == null || this.bi.wl.isEmpty) {
                return Rect.empty;
            }
            let a = this.bi.wl;
            let b = this.kh;
            let c = (a.left - b.left) / b.width;
            let d = (a.top - b.top) / b.height;
            let e = (a.right - b.left) / b.width;
            let f = (a.bottom - b.top) / b.height;
            return new Rect(0, c, d, e - c, f - d);
        }
        it(a, b) {
            this.ka = b;
            this.cq = true;
            this.ib(true);
        }
        h7() {
            this.ib(false);
        }
        hz(a, b, c, d) {
            switch (b) {
                case Axis.$$p[10]:
                case Axis.$$p[11]:
                    if (this.gi != null) {
                        this.ai = new BindingFormatter();
                        this.ai.j = this.gi;
                        this.ai.d = this.ah;
                    }
                    else {
                        this.ai = null;
                    }
                    break;
                case "SeriesViewer":
                    let e = typeCast(SeriesViewer.$, c);
                    if (e != null) {
                        this.fn = null;
                        e.actualWindowRectChanged = delegateRemove(e.actualWindowRectChanged, this.bs);
                        e.ar.ad(1, this);
                        this.a5.af(e);
                    }
                    let f = typeCast(SeriesViewer.$, d);
                    if (f != null) {
                        this.fn = f.c9.j.ae;
                        this.ka = f.wh;
                        f.actualWindowRectChanged = delegateCombine(f.actualWindowRectChanged, this.bs);
                        this.a6 = f.ar.k(1, this, runOn(this, this.hn));
                        if (this.az == null && this.fn != null) {
                            this.provideRenderer(this.fn);
                        }
                        this.a5.y(f);
                        if (this.cs && !this.a6.e) {
                            this.cs = false;
                            this.c1();
                        }
                        this.im();
                        this.io();
                    }
                    break;
                case Axis.$$p[8]:
                    this.ib(false);
                    break;
                case Axis.$$p[21]:
                    this.cx = this.cw;
                    this.ib(false);
                    break;
                case Axis.$$p[20]:
                    this.cv = this.cu;
                    this.ib(false);
                    break;
                case Axis.$$p[9]:
                    this.ci = this.ch;
                    let g = new AxisRangeChangedEventArgs(0, 0, 0, 1, 1);
                    this.hm(g);
                    for (let h of fromEnum(this.df)) {
                        h.qd();
                        if (h.dc != null) {
                            h.qn();
                        }
                    }
                    break;
                case Axis.$$p[12]:
                    this.a5.am();
                    if (typeCast(DataTemplate.$, d) !== null) {
                        this.c7 = true;
                    }
                    else {
                        this.c7 = false;
                    }
                    this.cq = true;
                    this.ig();
                    this.ib(false);
                    break;
                case Axis.$$p[16]:
                case Axis.$$p[19]:
                case Axis.$$p[25]:
                    this.ib(false);
                    break;
                case Axis.$$p[13]:
                    let i = typeCast(AxisLabelSettings.$, d);
                    if (i != null) {
                        i.registerAxis(this);
                        this.ax = i;
                    }
                    else {
                        this.ax = new AxisLabelSettings();
                    }
                    if (this.aw != null) {
                        this.aw.ag = this.ax;
                    }
                    this.hx();
                    this.cq = true;
                    this.ib(false);
                    break;
                case Axis.$$p[30]:
                    this.a5.ap();
                    break;
                case Axis.$$p[31]:
                    let j = typeCast(TitleSettings.$, d);
                    if (j != null) {
                        j.registerAxis(this);
                    }
                    else {
                        j = new TitleSettings();
                    }
                    if (this.iv != null) {
                        this.iv.dataContext = j;
                    }
                    this.hy();
                    this.ib(false);
                    break;
                case Axis.$$p[26]:
                    this.cq = true;
                    this.io();
                    this.a5.ai();
                    this.ib(false);
                    break;
                case Axis.$$p[32]:
                case Axis.$$p[5]:
                case "UseEnhancedIntervalManagement":
                case Axis.$$p[6]:
                    this.bz = this.c5;
                    this.cq = true;
                    this.ib(false);
                    break;
                case Axis.$$p[3]:
                    if (this.bi != null) {
                        this.bi.oc();
                    }
                    break;
                case Axis.$$p[18]:
                    this.im();
                    if (d != null) {
                        this.cy = true;
                        this.ib(false);
                    }
                    else {
                        this.cy = false;
                    }
                    break;
                case Axis.$$p[4]:
                    if (this.aj != null) {
                        this.aj.ia();
                    }
                    break;
                case Axis.$$p[24]:
                case Axis.$$p[15]:
                    this.im();
                    this.ib(false);
                    break;
                case Axis.$$p[23]:
                case Axis.$$p[14]:
                case Axis.$$p[17]:
                case Axis.$$p[7]:
                case Axis.$$p[28]:
                case Axis.$$p[29]:
                case Axis.$$p[27]:
                case Axis.$$p[2]:
                case Axis.$$p[0]:
                case Axis.$$p[1]:
                case Axis.$$p[22]:
                    this.ib(false);
                    break;
                case "MinExtent":
                    this.a5.ai();
                    break;
            }
        }
        hx() {
            if (this.a5.p()) {
                this.a5.ab(this.ax);
            }
        }
        hy() {
            this.a5.ap();
        }
        get coercionMethods() {
            return this._coercionMethods;
        }
        set coercionMethods(a) {
            this._coercionMethods = a;
        }
        get_expectFunctions() {
            return this.bv;
        }
        set_expectFunctions(a) {
            this.bv = a;
        }
        get expectFunctions() {
            return this.get_expectFunctions();
        }
        set expectFunctions(a) {
            this.set_expectFunctions(a);
        }
        ig() {
            this.br.count = 0;
            this.bq.count = 0;
            this.bp.count = 0;
            if (this.a5.p()) {
                this.a5.at();
            }
        }
        hu(a, b, c, d) {
            let e = Math.min(b, c);
            let f = Math.max(b, c);
            if (e < d.bottom && f > d.top) {
                let g = new RectangleGeometry();
                g.e = new Rect(0, d.left, e, d.width, f - e);
                a.add(g);
            }
        }
        ht(a, b, c, d, e) {
            let f = b <= c.bottom && b >= c.top;
            if (!e && f) {
                f = !this.cg(b, d.c, c, false);
            }
            if (f) {
                if (d.a) {
                    b = this.d1(b, c.top, c.bottom, d);
                }
                let g = new LineGeometry();
                g.d = { $type: Point_$type, x: c.left, y: b };
                g.c = { $type: Point_$type, x: c.right, y: b };
                a.add(g);
            }
        }
        ir(a, b, c, d) {
            let e = Math.min(b, c);
            let f = Math.max(b, c);
            if (f > d.left && e < d.right) {
                let g = new RectangleGeometry();
                g.e = new Rect(0, e, d.top, f - e, d.height);
                a.add(g);
            }
        }
        iq(a, b, c, d, e) {
            let f = b >= c.left && b <= c.right;
            if (!f) {
                let g = truncate(Math.round(b));
                let h = truncate(Math.round(c.left));
                let i = truncate(Math.round(c.right));
                if (g >= h && g <= i) {
                    f = true;
                }
            }
            if (!e && f) {
                f = !this.cg(b, d.c, c, true);
            }
            if (f) {
                if (d.a) {
                    b = this.d1(b, c.left, c.right, d);
                }
                let j = new LineGeometry();
                j.d = { $type: Point_$type, x: b, y: c.top };
                j.c = { $type: Point_$type, x: b, y: c.bottom };
                a.add(j);
            }
        }
        cg(a, b, c, d) {
            let e = false;
            let f = typeCast(XamDataChart.$, this.bi);
            if (f != null && (f.x2 || f.x3) && !c.isEmpty) {
                let g = this.bi.wh.width == 1 && this.bi.wh.height == 1;
                for (let h of fromEnum(f.axes)) {
                    if (h._visibility != 0 || h.fi < 1 || h.jy == null || BrushUtilCore.a(h.jy) || h.kh.isEmpty) {
                        continue;
                    }
                    if (h.aj != null && h.b5()) {
                        if (f.x2) {
                            let i = this.cp ? c.left : c.top;
                            let j = 0;
                            let k = h.ii(i, j, h.bi.w0, c, h.kc(), d ? c.left : c.top, d ? c.right : c.bottom);
                            i = k.p0;
                            j = k.p1;
                            let l = Rect.empty;
                            let m = Rect.empty;
                            if (d && h.cp) {
                                l = new Rect(0, i - (h.fi / 2), h.kh.top, h.fi, h.kh.height);
                                m = new Rect(0, a - (b / 2), c.top, b, c.height);
                            }
                            else if (!d && !h.cp) {
                                l = new Rect(0, h.kh.left, i - (h.fi / 2), h.kh.width, h.fi);
                                m = new Rect(0, c.left, a - (b / 2), c.width, b);
                            }
                            if (l.left <= m.right && m.left <= l.right && l.top <= m.bottom && m.top <= l.bottom) {
                                e = true;
                                break;
                            }
                        }
                    }
                    else {
                        let n = Rect.empty;
                        let o = Rect.empty;
                        if (d && h.cp) {
                            n = new Rect(0, h.kh.left, h.kh.top, h.fi, h.kh.height);
                            o = new Rect(0, a - (b / 2), c.top, b, c.height);
                        }
                        else if (!d && !h.cp) {
                            n = new Rect(0, h.kh.left, h.kh.bottom - (h.fi / 2), h.kh.width, h.fi);
                            o = new Rect(0, c.left, a - (b / 2), c.width, b);
                        }
                        if (n.left <= o.right && o.left <= n.right && n.top <= o.bottom && o.top <= n.bottom) {
                            e = true;
                            break;
                        }
                        if (g && f.x3) {
                            let p = f.yw;
                            if (isNaN_(p)) {
                                if (d && h.cp) {
                                    p = 0;
                                    p = Math.max(p, f.yo);
                                    p = Math.max(p, f.yl);
                                }
                                else if (!d && !h.cp) {
                                    p = 0;
                                    p = Math.max(p, f.ym);
                                    p = Math.max(p, f.yn);
                                }
                                p += 1;
                            }
                            p *= 2;
                            if (d && h.cp) {
                                n = new Rect(0, h.kh.left, h.kh.top, h.fi, h.kh.height);
                                o = new Rect(0, a - (p / 2), c.top, p, c.height);
                            }
                            else if (!d && !h.cp) {
                                n = new Rect(0, h.kh.left, h.kh.bottom - (h.fi / 2), h.kh.width, h.fi);
                                o = new Rect(0, c.left, a - (p / 2), c.width, p);
                            }
                            if (n.left <= o.right && o.left <= n.right && n.top <= o.bottom && o.top <= n.bottom) {
                                e = true;
                                break;
                            }
                        }
                    }
                }
            }
            return e;
        }
        ii(a, b, c, d, e, f, g) {
            let h = Math.abs(f - g);
            a = this.fx;
            a = this.aj.e6(a);
            let i = typeCast(CategoryAxisBase.$, this.aj);
            if (i != null && i.categoryMode == 2) {
                let j = 0.5 * i.getCategorySize(c, d, e);
                let k = i.a2 == 0;
                if (i.ch == k) {
                    j = -j;
                }
                a = a + j;
            }
            b = a - f;
            if (a < f) {
                a = f;
            }
            else if (a > g) {
                a = g;
            }
            if (b < 0) {
                b = 0;
            }
            else if (b > h) {
                b = h;
            }
            return {
                p0: a,
                p1: b
            };
        }
        d1(a, b, c, d) {
            let e = a;
            if (d != null && d.c > 0) {
                let f = d.c % 2;
                if (f == 0 || f == 1) {
                    let g = 1;
                    e = Math.floor(a);
                    if (e + 0.5 < a) {
                        g = -1;
                        e = Math.ceil(a);
                    }
                    if (f == 1) {
                        e += 0.5 * g;
                    }
                    if (e >= c) {
                        e -= 1;
                    }
                    else if (e <= b) {
                        e += 1;
                    }
                }
            }
            return e;
        }
        hk(a) {
            this.a5.ae(a);
        }
        hj() {
            this.br.count = 0;
            this.bq.count = 0;
            this.bp.count = 0;
            this.a5.ac();
            this.dd.clear();
            this.de.clear();
        }
        ia() {
            this.ib(false);
        }
        ib(a) {
            if (this.bi != null) {
                this.bi.ar.ac(1, this, this.a6, a);
                if (this.renderRequested != null) {
                    let b = new RenderRequestedEventArgs();
                    b.animate = a;
                    this.renderRequested(this, b);
                    a = b.animate;
                }
            }
        }
        e1() {
            if (this.bc == null) {
                return -1;
            }
            if (isNaN_(this.bc.b)) {
                return -1;
            }
            if (this.eh() != 0) {
                return -1;
            }
            let a = this.bc.b;
            let b = this.e5();
            let c = this.e2();
            a = a + b + c;
            return Math.max(Axis.ev, a);
        }
        e5() {
            if (this.az == null) {
                return 0;
            }
            else {
                return this.az.topMargin;
            }
        }
        e3() {
            if (this.az == null) {
                return 0;
            }
            else {
                return this.az.leftMargin;
            }
        }
        e4() {
            if (this.az == null) {
                return 0;
            }
            else {
                return this.az.rightMargin;
            }
        }
        e2() {
            if (this.az == null) {
                return 0;
            }
            else {
                return this.az.bottomMargin;
            }
        }
        ez() {
            if (this.bc == null) {
                return -1;
            }
            if (isNaN_(this.bc.d) && isNaN_(this.dj)) {
                return -1;
            }
            if (this.az != null && (this.az.angle != 0)) {
                return -1;
            }
            let a = this.bc.d;
            if (!isNaN_(this.dj) && this.fs == -1) {
                return this.dj;
            }
            return Math.max(Axis.ev, this.bc.d);
        }
        d3(a, b, c, d, e) {
            if (a == 1) {
                return 1;
            }
            if (b) {
                return a;
            }
            let f = 0;
            let g = this.es(a, b, c, d, e);
            if (!b && f < 10 && this.cz(g, a, c, d, e)) {
                a = g;
                g = a - 1;
                f += 1;
                while (!b && f < 10 && this.cz(g, a, c, d, e)) {
                    a = g;
                    g = a - 1;
                    f += 1;
                }
            }
            return a;
        }
        es(a, b, c, d, e) {
            let f = false;
            if (this.cp) {
                f = this.cb && this.b1 && this.bc != null;
            }
            else {
                f = this.cb && this.b1 && this.b6();
            }
            if (f) {
                let g = this.ei(a, c, d, e);
                if (isNaN_(g)) {
                    return a;
                }
                let h = this.ej(a, c, d, e);
                if (g <= h) {
                    return a;
                }
                let i = Math.ceil((h / g) * a) + 1;
                if (f && i == a) {
                    i--;
                }
                return i;
            }
            return a;
        }
        ej(a, b, c, d) {
            if (this.cp) {
                let e = this.bc.b;
                return e;
            }
            else {
                let f = this.dj;
                if (this.bi != null && this.bi.ft) {
                    f = this.bc.b;
                }
                return f;
            }
        }
        cz(a, b, c, d, e) {
            if (this.cp) {
                if (this.cb && this.b1 && this.bc != null) {
                    let f = this.bc.b;
                    if (a >= 1) {
                        let g = a;
                        if (g < 1) {
                            return false;
                        }
                        let h = this.ei(g, c, d, e);
                        if (isNaN_(h)) {
                            return false;
                        }
                        if (h > f) {
                            return true;
                        }
                    }
                }
            }
            else {
                if (this.cb && this.b1 && this.b6()) {
                    if (a >= 1) {
                        let i = a;
                        if (i < 1) {
                            return false;
                        }
                        let j = this.ei(i, c, d, e);
                        if (isNaN_(j)) {
                            return false;
                        }
                        let k = this.dj;
                        if (this.bi != null && this.bi.ft) {
                            k = this.bc.b;
                        }
                        if (j > k) {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        ei(a, b, c, d) {
            return NaN;
        }
        e0() {
            if (this.cp) {
                return this.e1();
            }
            else {
                return this.ez();
            }
        }
        get c0() {
            return this.fs == -1;
        }
        hn(a) {
            if (this.a5.n()) {
                return;
            }
            let b = 0;
            let c = 0;
            if (this.de != null && this.de.count > 0) {
                b = this.de._inner[this.de.count - 1].c;
                c = this.de.count;
            }
            if (this.cq && this.c4) {
                this.bc = this.bb();
            }
            this.a5.z();
            this.ic(a);
            this.a5.aq();
            if (!this.cp && this.cq && this.c4 && this.c0) {
                if (this.b2()) {
                    this.a5.z();
                    this.ic(a);
                    this.a5.aq();
                }
            }
            let d = 1;
            let e = 0;
            if (this.de != null && this.de.count > 0) {
                d = this.de._inner[this.de.count - 1].c;
                e = this.de.count;
            }
            if (this.c6) {
                this.cq = true;
            }
            let f = false;
            if (d != b || e != c || this.cq) {
                this.cq = false;
                if (this.a5.p()) {
                    this.a5.ai();
                    f = true;
                }
            }
            this.a5.ah();
            if (!f) {
                this.ho();
            }
        }
        b2() {
            if (!isNaN_(this.dj) || this.dd == null || this.dd.count == 0) {
                return false;
            }
            let a = this.bl();
            if (a == null) {
                return false;
            }
            let b = -1.7976931348623157E+308;
            for (let c = 0; c < this.dd.count; c++) {
                let d = this.dd._inner[c];
                if (typeof d === 'string') {
                    let e = FontUtil.measureStringWidth(d, a, this.a5.j);
                    b = Math.max(e, b);
                }
            }
            b += 5;
            if (this.az != null) {
                b += this.az.leftMargin + this.az.rightMargin;
            }
            this.dj = b;
            return true;
        }
        ie() {
            this.dj = NaN;
            this.ib(false);
        }
        b6() {
            return !isNaN_(this.dj) && this.fs == -1;
        }
        d2(a, b) {
            return a;
        }
        ih() {
            this.dj = NaN;
        }
        bb() {
            let a = this.bl();
            if (a == null) {
                return null;
            }
            if (a.f == 0) {
                return null;
            }
            let b = "W";
            if (this.a5.j == null) {
                return null;
            }
            let c = FontUtil.measureStringWidth(b, a, this.a5.j);
            if (this.dk != c || this.bc == null) {
                this.dk = c;
                let d = FontUtil.getCurrentFontHeight(this.bi.c9.j.ae, a);
                if (this.bc == null) {
                    this.bc = new LabelFontHeuristics();
                }
                this.bc.b = d;
                this.bc.c = this.fs;
                this.bc.a = this.b1;
                this.bc.e = c;
                this.bc.d = this.bc.e * this.bc.c;
            }
            return this.bc;
        }
        bl() {
            let a = null;
            if (this.bi != null) {
                a = this.bi.getFontInfo();
            }
            if (this.az != null && this.az.j) {
                if (this.bi != null) {
                    a = this.az.h(this.bi.c9.j.ae);
                }
            }
            return a;
        }
        ho() {
            if (!this.a5.p()) {
                return;
            }
            if (!this.b8()) {
                this.a5.ag();
            }
        }
        c1() {
            return this.c2(false);
        }
        c2(a) {
            if (a || this.bi == null) {
                let b = this.c3();
                if (b) {
                    this.cq = true;
                }
                this.cs = false;
                return b;
            }
            if (!this.cs) {
                this.cs = true;
                this.bi.ar.ab(this, this.a6);
            }
            return false;
        }
        c3() {
            return false;
        }
        hl() {
        }
        ic(a) {
            if (this.iv != null) {
                if ((this.bf == null || this.bf.visibility == 0) && (this.az == null || this.az.visibility == 0) && this.g8 != null) {
                    this.iv._visibility = 0;
                }
                else {
                    this.iv._visibility = 1;
                }
            }
        }
        im() {
            let a = typeCast(XamDataChart.$, this.bi);
            if (a == null) {
                return;
            }
            let b = null, c = null, d = null;
            if (this.cb && !this.b9) {
                b = a.aa7;
                for (let e of fromEnum(this.df)) {
                    if (e.fx || e.fu || e.fq || e.fu) {
                        c = a.aa5;
                        d = a.aa6;
                        break;
                    }
                }
            }
            else if (this.cj && !this.b9) {
                c = a.aa5;
                d = a.aa6;
                b = this.aj != null ? a.aa7 : null;
                for (let f of fromEnum(this.df)) {
                    if (f.fx || f.fu || f.fq || f.fu) {
                        b = a.aa7;
                        break;
                    }
                }
            }
            else if (this.b9 || this.a2 == 3) {
                b = a.aa7;
                c = a.aa5;
                d = a.aa6;
            }
            this.jy = this.j2 != null ? this.j2 : b;
            this.jw = this.jz != null ? this.jz : c;
            this.jx = this.j0 != null ? this.j0 : d;
        }
        h5(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
        ct(a) {
            let b = this.df.contains(a);
            if (!b) {
                this.df.add(a);
            }
            this.im();
            return !b;
        }
        b0(a) {
            let b = this.df.contains(a);
            if (b) {
                this.df.remove(a);
            }
            this.im();
            return b;
        }
        fz(a, b) {
            let c = this.gu(b);
            if (c == Axis.$$p[12]) {
                return this.f0(a, b, this.f2);
            }
            return null;
        }
        gu(a) {
            if (!this.da.containsKey(a)) {
                let b = a.charAt(0).toUpperCase() + a.substr(1);
                this.da.addItem(a, b);
            }
            return this.da.item(a);
        }
        f0(a, b, c) {
            let d = null;
            if (!this.c9.containsKey(b)) {
                d = new FastReflectionHelper(false, c);
                this.c9.addItem(b, d);
            }
            else {
                d = this.c9.item(b);
            }
            d.propertyName = c;
            return d.getPropertyValue(a);
        }
        f1(a) {
            return this.a5.q(a);
        }
        gf(a) {
            return this.a5.s(a);
        }
        ex() {
            return NaN;
        }
        el(a, b) {
            return 0;
        }
        em(a, b, c) {
            return 0;
        }
        kd(a) {
            if (this.bi == null) {
                return Rect.empty;
            }
            if (!a.equals1(this.kh)) {
                return Rect.empty;
            }
            return this.bi.wl;
        }
        kc() {
            if (this.bi == null) {
                return Rect.empty;
            }
            return this.bi.wl;
        }
        kb() {
            if (this.bi == null || this.bi.wk.isEmpty) {
                return this.kh;
            }
            return this.bi.wk;
        }
        kf(a, b) {
            if (b.isEmpty) {
                return a;
            }
            return b;
        }
        en(a, b, c) {
            let d = this.kd(c);
            let e = new ScalerParams(0, b, c, this.ch, d);
            return this.el(a, e);
        }
        hq(a, b, c, d) {
        }
        hp(a, b, c, d, e) {
        }
        eo(a, b) {
            return 0;
        }
        ep(a, b, c) {
            return 0;
        }
        eq(a, b, c) {
            let d = this.kd(c);
            let e = new ScalerParams(0, b, c, this.ch, d);
            return this.eo(a, e);
        }
        hr(a, b, c, d) {
        }
        e6(a) {
            let b = this.kc();
            let c = new ScalerParams(0, this.bi.wh, this.kh, this.ch, b);
            return this.el(a, c);
        }
        hw(a) {
            let b = false;
            if (this.km.width == 0 || this.km.height == 0) {
                this.kg = new Rect(0, 0, 0, a.width, a.height);
            }
            else {
                b = true;
                this.kg = new Rect(0, 0, 0, this.km.width, this.km.height);
            }
            if (b) {
                this.a6.c = true;
                this.cq = true;
                this.aw.ci();
                this.c2(true);
            }
        }
        il() {
            this.kg = Rect.empty;
            this.aw.cq();
        }
        aq() {
            this.ap.a = this.aw;
            return this.ap;
        }
        get eu() {
            return this.di;
        }
        set eu(a) {
            let b = this.eu;
            if (a != b) {
                this.di = a;
                this.h5("MinExtent", b, this.eu);
            }
        }
        b8() {
            if (!isNaN_(this.d4)) {
                return true;
            }
            if (this.az == null) {
                return false;
            }
            else {
                return this.az.l();
            }
        }
        er() {
            if (!isNaN_(this.d4)) {
                return this.d4;
            }
            if (this.az == null) {
                return 50;
            }
            return this.az.extent;
        }
        hi() {
            this.a5.x();
        }
        hm(a) {
            this.h6(a);
        }
        get ki() {
            return this.ar().a;
        }
        get kj() {
            return this.ar().b;
        }
        get kl() {
            return this.a5.c().d;
        }
        get kk() {
            return this.ar().c;
        }
        be() {
            return SyncManager.a(this.bh);
        }
        ar() {
            return this.a5.c();
        }
        get ay() {
            return this.ax;
        }
        h0(a, b) {
            if (this.aw != null) {
                this.aw.cj(a);
            }
            this.a5.ak(a, b);
        }
        b5() {
            return this.fx != null;
        }
        fy() {
            return this.ba.exportVisualData(this);
        }
        *_db() {
            for (let a = 0; a < this.df.count; a++) {
                let b = this.df._inner[a];
                yield b;
            }
        }
        db() {
            return toEnum(() => this._db());
        }
        dc() {
            let a = new List$1(Series.$, 0);
            for (let b = 0; b < this.df.count; b++) {
                let c = this.df._inner[b];
                a.add(c);
            }
            if (this.bi != null && this.bi.series != null) {
                for (let d of fromEnum(this.bi.series)) {
                    if (d.eq) {
                        a.add(d);
                    }
                }
            }
            return a;
        }
        h1(a) {
        }
        h4(a) {
        }
        h3(a) {
        }
        j8(a, b, c, d, e) {
            if (this.cp) {
                let f = new LineGeometry();
                f.d = { $type: Point_$type, x: c.left, y: a };
                f.c = { $type: Point_$type, x: c.right, y: a };
                return f;
            }
            else {
                let g = new LineGeometry();
                g.d = { $type: Point_$type, x: a, y: c.bottom };
                g.c = { $type: Point_$type, x: a, y: c.top };
                return g;
            }
        }
    }
    Axis.$t = /*@__PURE__*/ markType(Axis, 'Axis', Control.$, [INotifyPropertyChanged_$type]);
    Axis.js = /*@__PURE__*/ DependencyProperty.i("UseEnhancedIntervalManagement", Boolean_$type, Axis.$, /*@__PURE__*/ new PropertyMetadata(2, false, (a, b) => a.h5("UseEnhancedIntervalManagement", b.oldValue, b.newValue)));
    Axis.ev = 7;
    Axis.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, Axis, 'h5', ['ActualMajorStroke:jw:iw', [Brush.$], 'ActualMinorStroke:jx:ix', [Brush.$], 'ActualStroke:jy:iy', [Brush.$], 'CrossingAxis:aj:iz', [Axis.$], 'CrossingValue:fx:i0', [4, null], 'EnhancedIntervalMinimumCharacters:fs:i1', [1, -1], 'EnhancedIntervalPreferMoreCategoryLabels:b1:i2', [0, false], 'FormatLabel:au:i3', [Delegate_$type], 'IsDisabled:cf:i4', [0, false], 'IsInverted:ch:i5', [0, false], 'LabelFormat:gi:i6', [2, null], 'LabelFormatSpecifiers:ah:i7', [Array_$type, null], 'Label:f2:i8', [4, null], 'LabelSettings:az:i9', [AxisLabelSettings.$, null], 'MajorStrokeDashArray:j4:ja', [DoubleCollection.$], 'MajorStroke:jz:jb', [Brush.$], 'MajorStrokeThickness:et:jc', [1, 1], 'MinorStrokeDashArray:j5:jd', [DoubleCollection.$], 'MinorStroke:j0:je', [Brush.$], 'MinorStrokeThickness:ew:jf', [1, 1], 'ShouldAvoidAnnotationCollisions:cu:jg', [0, false], 'ShouldKeepAnnotationsInView:cw:jh', [0, false], 'Strip:j1:ji', [Brush.$], 'StrokeDashArray:j6:jj', [DoubleCollection.$], 'Stroke:j2:jk', [Brush.$], 'StrokeThickness:fi:jl', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'TickLength:fj:jm', [1, NaN], 'TickStrokeDashArray:j7:jn', [DoubleCollection.$], 'TickStroke:j3:jo', [Brush.$], 'TickStrokeThickness:fk:jp', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'Title:g8:jq', [2], 'TitleSettings:bf:jr', [TitleSettings.$, null], 'UsePerLabelHeightMeasurement:c5:jt', [0, true]]);
    return Axis;
})();
/**
 * @hidden
 */
export let AxisCollection = /*@__PURE__*/ (() => {
    class AxisCollection extends ObservableCollection$1 {
        constructor() {
            super(Axis.$, 0);
            this.collectionResetting = null;
            this.propertyChanged = delegateCombine(this.propertyChanged, (a, b) => {
                if (b.propertyName == "Name") {
                    for (let c = 0; c < this.count; ++c) {
                        if (this._inner[c].name == b.propertyName) {
                            this.ac(new NotifyCollectionChangedEventArgs(2, 2, this._inner[c], this._inner[c], c));
                        }
                    }
                }
            });
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    AxisCollection.$t = /*@__PURE__*/ markType(AxisCollection, 'AxisCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(Axis.$));
    return AxisCollection;
})();
/**
 * @hidden
 */
export let AxisLabelManager = /*@__PURE__*/ (() => {
    class AxisLabelManager extends Base {
        constructor() {
            super();
            this.e = null;
            this.f = null;
            this.b = null;
            this.a = null;
            this.c = null;
            this.c = (a) => {
            };
        }
        n(a, b) {
            this.e.clear();
            this.f.clear();
            this.b.ad = this.a;
            this.b.c5 = a;
            this.b.c4 = b;
            if (b.isEmpty || a.isEmpty) {
                this.s(0);
                this.a.bq.count = 0;
                this.a.bp.count = 0;
            }
            if (this.a.br.count == 0 && this.a.bq.count == 0 && this.a.a5.l()) {
                this.b.ab.clear();
            }
        }
        i(a, b) {
            this.e.add1(a);
            this.f.add(b);
        }
        t() {
            this.b.a9 = this.e;
            this.b.ba = this.f;
            this.b.cl();
        }
        static j(a, b) {
            AxisLabelManager.k(a, false, b);
        }
        static k(a, b, c) {
        }
        static l(a, b, c) {
        }
        static m(a, b) {
            AxisLabelManager.l(a, true, b);
        }
        h(a) {
            this.b.ab.add(a);
        }
        r(a) {
            this.b.bw = a;
        }
        o(a) {
            this.c(a);
        }
        u(a) {
            let b = this.a.br.item(a);
            return b;
        }
        s(a) {
            if (this.a == null) {
                return;
            }
            this.a.br.count = a;
        }
        get d() {
            if (this.a == null || this.a.az == null) {
                return false;
            }
            return this.a.az.visibility != 0;
        }
        q() {
            this.a.br.count = 0;
            this.a.bq.count = 0;
            this.a.bp.count = 0;
            this.a.aw.bb.clear();
        }
        p() {
            this.a.cq = true;
        }
        g() {
            this.a.hh();
        }
    }
    AxisLabelManager.$t = /*@__PURE__*/ markType(AxisLabelManager, 'AxisLabelManager');
    return AxisLabelManager;
})();
/**
 * @hidden
 */
export let AxisLabelPanelBase = /*@__PURE__*/ (() => {
    class AxisLabelPanelBase extends Panel {
        ae() {
            return new AxisLabelPanelBaseView(this);
        }
        ch(a) {
        }
        b8() {
        }
        cp() {
        }
        co() {
        }
        constructor() {
            super();
            this.cx = null;
            this.bw = 0;
            this.ad = null;
            this.ak = false;
            this.a3 = null;
            this.ba = null;
            this.c4 = null;
            this.cw = Rect.empty;
            this.cv = null;
            this.c2 = null;
            this.bc = 0;
            this.bx = null;
            this.bb = null;
            this.a8 = null;
            this.ag = null;
            this.ao = false;
            this.c3 = null;
            this.ar = false;
            this.av = false;
            this.aw = false;
            this.ax = false;
            this.bz = null;
            this.al = false;
            this.bd = 50;
            this.be = 0;
            this.bf = 0;
            this.c7 = new Size();
            this.be = NaN;
            this.c4 = Rect.empty;
            this.c2 = Rect.empty;
            this.c1 = Rect.empty;
            this.af = this.ae();
            this.ch(this.af);
            this.af.an();
            this.bb = new List$1(FrameworkElement.$, 0);
            this.ba = new List$1(LabelPosition.$, 0);
            this.a8 = new List$1(Rect.$, 0);
            this.aw = false;
            this.av = false;
            this.ax = false;
            this.ao = false;
            this.ar = false;
            this.c3 = Rect.empty;
            this.ak = false;
        }
        get az() {
            return this.ak;
        }
        set az(a) {
            this.ak = a;
        }
        get a9() {
            return this.a3;
        }
        set a9(a) {
            let b = this.a3;
            this.a3 = a;
            if (b == null && b != a) {
                this.ce();
            }
        }
        get c5() {
            return this.cw;
        }
        set c5(a) {
            let b = this.cw;
            this.cw = a;
            this.ct(b, this.cw);
        }
        get c1() {
            if (!this.c2.isEmpty) {
                return this.c2;
            }
            return this.cv;
        }
        set c1(a) {
            let b = this.cv;
            this.cv = a;
            this.cd(b, this.cv);
        }
        get bg() {
            return this.bc;
        }
        set bg(a) {
            this.bc = a;
        }
        bn() {
            let a = 1.7976931348623157E+308;
            if (this.ba != null && this.ba.count > 1) {
                for (let b = 1; b < this.ba.count; b++) {
                    let c = this.ba._inner[b];
                    let d = this.ba._inner[b - 1];
                    if (c.a || d.a) {
                        continue;
                    }
                    let e = Math.abs(c.c - d.c);
                    if (e < a) {
                        a = e;
                    }
                }
            }
            return a;
        }
        cl() {
            this.ar = false;
            this.c3 = Rect.empty;
        }
        an(a, b) {
            for (let c = 0; c < a.count - 1; c++) {
                if (b._inner[c]) {
                    continue;
                }
                for (let d = c; d < a.count - 1; d++) {
                    if (b._inner[d + 1]) {
                        continue;
                    }
                    if (a._inner[c].intersectsWith(a._inner[d + 1])) {
                        return true;
                    }
                }
            }
            return false;
        }
        by(a, b, c) {
            return {
                ret: 0,
                p1: b
            };
        }
        a5() {
            return null;
        }
        b6() {
        }
        b2(a) {
        }
        get ap() {
            return this.ag != null && this.ag.k();
        }
        bl() {
            if (this.ad.b4 && (!this.ap || (this.ap && this.ag.angle == 0))) {
                return this.ad.ey();
            }
            return this.ag != null ? this.ag.angle : 0;
        }
        bq() {
            return this.ad.bf != null ? this.ad.bf.angle : 0;
        }
        at(a, b) {
            if (a == 0 && !this.ad.b9 && this.ag != null) {
                if (this.ad.cp) {
                    if (!this.ag.showFirstLabel && this.ad.bi.hv() == 1) {
                        return false;
                    }
                }
                else {
                    if (!this.ag.showFirstLabel && this.ad.bi.hu() == 1) {
                        return false;
                    }
                }
            }
            return true;
        }
        bk(a) {
            return this.af.m(a);
        }
        bv(a) {
            return this.af.w(a);
        }
        bm(a) {
            return this.af.n(a);
        }
        bj(a) {
            return this.af.l(a);
        }
        aq() {
            return false;
        }
        ct(a, b) {
        }
        cd(a, b) {
        }
        a7() {
            if (this.ab.count < 1 || this.ba.count == 0) {
                return new List$1(Rect.$, 0);
            }
            this.bb = new List$1(FrameworkElement.$, 0);
            this.a8 = new List$1(Rect.$, 0);
            this.b6();
            this.af.af();
            let a = this.bl();
            if (a % 360 == 0) {
                this.av = false;
            }
            if (this.bb.count == 0) {
                return new List$1(Rect.$, 0);
            }
            this.a8 = this.a5();
            this.a8 = this.a6(this.a8);
            this.ak = true;
            return this.a8;
        }
        a6(a) {
            if (this.ad.cu || this.ad.cw) {
                let b = this.af.p();
                let c = this.af.r();
                let d = this.af.q();
                let e = this.af.o();
                let f = Math.max(b, Math.max(c, Math.max(d, e)));
                let g = new Thickness(0, f);
                if (this.av) {
                    g = new Thickness(0, Math.sqrt((f * f) / 2));
                }
                let h = this.a4(a);
                let i = new List$1(Thickness.$, 0);
                if (h.count < 1) {
                    return a;
                }
                h.aa((j, k) => {
                    let l = this.cy(j, a._inner[j], g);
                    let m = this.cy(k, a._inner[k], g);
                    let n = l.top;
                    let o = m.top;
                    if (n < o) {
                        return -1;
                    }
                    if (n > o) {
                        return 1;
                    }
                    return 0;
                });
                for (let j = 0; j < h.count; j++) {
                    let k = h._inner[j];
                    let l = a._inner[k];
                    let m = this.cy(k, a._inner[k], g);
                    let n = this.ad.bi.wz.top;
                    if (this.ad.cw) {
                        if (l.top < (this.ad.bi.wz.top - n)) {
                            l = new Rect(0, l.left, l.top + ((this.ad.bi.wz.top - n) - l.top), l.width, l.height);
                            a._inner[k] = l;
                        }
                    }
                }
                let o = this.as(a, h, g);
                if (o && (this.ad.cu)) {
                    for (let p = 0; p < h.count - 1; p++) {
                        let q = h._inner[p];
                        let r = h._inner[p + 1];
                        let s = a._inner[q];
                        let t = a._inner[r];
                        let u = this.cy(q, a._inner[q], g);
                        let v = this.cy(r, a._inner[r], g);
                        if (u.intersectsWith(v) || u.top > v.bottom) {
                            let w = new Rect(0, t.left, u.bottom + 1 + (t.top - v.top), t.width, t.height);
                            a._inner[r] = w;
                        }
                    }
                }
                for (let x = h.count - 1; x >= 0; x--) {
                    let y = h._inner[x];
                    let z = a._inner[y];
                    let aa = this.cy(y, a._inner[y], g);
                    let ab = this.ad.bi.c9.a3;
                    if (this.ad.cw) {
                        if (aa.bottom > this.ad.bi.wz.bottom + ab) {
                            z = new Rect(0, z.left, z.top - (aa.bottom - (this.ad.bi.wz.bottom + ab)), z.width, z.height);
                            a._inner[y] = z;
                        }
                    }
                }
                if (this.ad.cu) {
                    for (let ac = h.count - 1; ac >= 1; ac--) {
                        let ad = h._inner[ac];
                        let ae = h._inner[ac - 1];
                        let af = a._inner[ad];
                        let ag = a._inner[ae];
                        let ah = this.cy(ad, a._inner[ad], g);
                        let ai = this.cy(ae, a._inner[ae], g);
                        if (ah.intersectsWith(ai) || ah.top < ai.bottom) {
                            let aj = new Rect(0, ag.left, ah.top - (ai.height + 1 + (ag.top - ai.top)), ag.width, ag.height);
                            a._inner[ae] = aj;
                        }
                    }
                }
                return a;
            }
            else {
                return a;
            }
        }
        cy(a, b, c) {
            let d = this.ba._inner[a];
            let e = d.d;
            if (isNaN_(e.left) || isNaN_(e.top) || isNaN_(e.right) || isNaN_(e.bottom)) {
                e = c;
            }
            if (e.left > c.left || e.top > c.top || e.right > c.right || e.bottom > c.bottom) {
                e = c;
            }
            let f = new Rect(0, b.left - e.left, b.top - e.top, b.width + e.left + e.right, b.height + e.top + e.bottom);
            return f;
        }
        as(a, b, c) {
            if (b.count <= 1) {
                return false;
            }
            for (let d = 0; d < b.count - 1; d++) {
                let e = b._inner[d];
                let f = b._inner[d + 1];
                let g = a._inner[e];
                let h = a._inner[f];
                let i = this.cy(e, a._inner[e], c);
                let j = this.cy(f, a._inner[f], c);
                if (i.intersectsWith(j)) {
                    return true;
                }
            }
            return false;
        }
        a4(a) {
            let b = new List$1(Number_$type, 0);
            for (let c = 0; c < a.count; c++) {
                let d = this.ba._inner[c].a;
                if (d) {
                    b.add(c);
                }
            }
            return b;
        }
        bp(a, b) {
            let c = a * (Math.PI / 180);
            let d = Math.abs(b.width * Math.cos(c)) + Math.abs(b.height * Math.sin(c));
            return d;
        }
        bo(a, b) {
            let c = a * (Math.PI / 180);
            let d = Math.abs(b.height * Math.cos(c)) + Math.abs(b.width * Math.sin(c));
            return d;
        }
        bt() {
            let a = this.af.k();
            return a;
        }
        br() {
            let a = this.af.j();
            return a;
        }
        bs() {
            if (this.ad.g8 == null || (this.ad.bf != null && this.ad.bf.visibility == 1)) {
                return 0;
            }
            let a = this.br();
            let b = this.bt();
            let c = new Rect(0, 0, 0, b, a);
            let d = this.bq();
            let e = RectUtil.w(c, d);
            return e.height + this.af.v() + this.af.s();
        }
        bu() {
            if (this.ad.g8 == null || (this.ad.bf != null && this.ad.bf.visibility == 1)) {
                return 0;
            }
            let a = this.br();
            let b = this.bt();
            let c = new Rect(0, 0, 0, b, a);
            let d = this.bq();
            let e = RectUtil.w(c, d);
            return e.width + this.af.t() + this.af.u();
        }
        c6(a) {
            if (this.ad == null || this.ab.count == 0) {
                return a;
            }
            this.b5(a);
            this.b9();
            this.b4(a);
            this.a8 = this.a7();
            if (this.bb.count != this.a8.count) {
                return a;
            }
            let b = this.af.p();
            let c = this.af.r();
            let d = this.af.q();
            let e = this.af.o();
            if (this.av) {
                for (let f = 0; f < this.bb.count; f++) {
                    if (this.at(f, this.a8._inner[f])) {
                        this.af.aa(this.bb._inner[f], this.a8._inner[f], b, c, d, e);
                    }
                    this.cm(this.bb._inner[f], this.bl());
                }
            }
            for (let g = 0; g < this.bb.count; g++) {
                if (!this.av) {
                    this.af.ae(this.bb._inner[g]);
                }
                if (this.at(g, this.a8._inner[g])) {
                    this.af.aa(this.bb._inner[g], this.a8._inner[g], b, c, d, e);
                }
                else {
                    this.af.aa(this.bb._inner[g], new Rect(0, 0, 0, 0, 0), b, c, d, e);
                }
            }
            if (this.ad.bq.count > 0) {
                this.ad.a8.arrangeAnnotations(this.ad, this.af, this.bb, this.a8, this.av, this.bl(), b, c, d, e);
            }
            this.b2(a);
            if (this.aq() && this.am && this.ad != null && this.ad.bg != null && !this.ad.cr && this.ad.bg.xp && !this.ad.bg.xw && this.a8 != null && this.a8.count > 0) {
                let h = this.a8.count - 1;
                if (this.ad.bq.count > 0) {
                    h -= this.ad.bq.count;
                }
                if (h < 0) {
                    h = 0;
                }
                this.ad.bg.aaa(this, this.c1, this.a8._inner[0], this.a8._inner[h]);
            }
            return a;
        }
        get am() {
            return this.ad.az != null && (this.ad.az.c != 5 && this.ad.az.c != 4);
        }
        c0() {
            return Rect.empty;
        }
        b5(a) {
            if (this.ad.iv == null) {
                return;
            }
            this.af.ai(this.ad.iv, new Size(1, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY));
            let b = Math.abs(this.bq() - 0) > 1E-06;
            let c = this.c0();
            let d = c.left + (c.width / 2);
            let e = c.top + (c.height / 2);
            let f = this.bt() + this.af.t() + this.af.u();
            let g = this.br() + this.af.v() + this.af.s();
            let h = f / 2;
            let i = g / 2;
            let j = new Rect(0, d - h, e - i, f, g);
            if (b) {
                this.cn(this.ad.iv);
            }
            else {
                this.af.ae(this.ad.iv);
            }
            this.af.aa(this.ad.iv, j, this.af.t(), this.af.v(), this.af.u(), this.af.s());
            if ((this.ad.bf == null || this.ad.bf.visibility == 0) && (this.ad.az == null || this.ad.az.visibility == 0) && this.ad.g8 != null) {
                this.ad.iv._visibility = 0;
            }
            else {
                this.ad.iv._visibility = 1;
                this.af.aa(this.ad.iv, new Rect(0, 0, 0, 0, 0), 0, 0, 0, 0);
            }
        }
        b4(a) {
            this.af.ab(a);
        }
        b9() {
        }
        a2() {
            if (typeCast(CategoryAxisBase.$, this.ad) !== null) {
                return this.ad.k2;
            }
            if (typeCast(NumericAxisBase.$, this.ad) !== null) {
                let a = new List$1(Number_$type, 0);
                let d = this.ad.k9.j();
                for (let c = 0; c < d.length; c++) {
                    let b = d[c];
                    let e = this.ad.kc();
                    let f = new ScalerParams(0, this.ad.bi.w0, this.ad.kh, this.ad.ci, e);
                    a.add(this.ad.el(b, f));
                }
                return a;
            }
            return null;
        }
        get ah() {
            let a = this.ag != null ? this.ag.c : this.ai();
            if (this.ad.aj == null) {
                if (a == 4) {
                    a = 5;
                }
                else if (a == 5) {
                    a = 4;
                }
                else if (a == 6) {
                    a = 7;
                }
                else if (a == 7) {
                    a = 6;
                }
            }
            return a;
        }
        cs(a, b, c, d, e, f) {
            let g = b;
            let h = b;
            if (f != null) {
                let i = f.c / 2;
                g -= i;
                h += i;
            }
            if (h >= e.left && g <= e.right) {
                if (f.a) {
                    b = this.ad.d1(b, e.left, e.right, f);
                }
                let j = new LineGeometry();
                j.d = { $type: Point_$type, x: b, y: c };
                j.c = { $type: Point_$type, x: b, y: d };
                a.add(j);
            }
        }
        cc(a, b, c, d, e, f) {
            if (b <= e.bottom && b >= e.top) {
                if (f.a) {
                    b = this.ad.d1(b, e.top, e.bottom, f);
                }
                let g = new LineGeometry();
                g.d = { $type: Point_$type, x: c, y: b };
                g.c = { $type: Point_$type, x: d, y: b };
                a.add(g);
            }
        }
        cm(a, b) {
            let c = this.bl();
            this.af.aj(a, c);
        }
        get_au() {
            return false;
        }
        get au() {
            return this.get_au();
        }
        ac(a, b) {
            let c = a.height;
            let d = a.width;
            let e = 0 + a.left;
            let f = (c / 2) + a.top;
            let g = new TransformGroup();
            let h = AngleSimplifier.a(b);
            let i = ((() => {
                let $ret = new RotateTransform();
                $ret.j = h;
                $ret.k = e;
                $ret.l = f;
                return $ret;
            })());
            let j = 0;
            let k = 0;
            if (h != 0 && h != 360) {
                if (h > 0 && h < 180) {
                    j = -Math.sin(MathUtil.o(h)) * (c / 2);
                }
                else {
                    i.k = d;
                    k = -d;
                    j = -Math.sin(MathUtil.o(h - 180)) * (c / 2);
                }
            }
            let l = ((() => {
                let $ret = new TranslateTransform();
                $ret.k = j;
                $ret.j = k;
                return $ret;
            })());
            g.j.add(i);
            g.j.add(l);
            let m = TransformMatrixHelpler.f(g);
            let n = RectUtil.n(a);
            let o = RectUtil.o(a);
            let p = RectUtil.k(a);
            let q = RectUtil.j(a);
            let r = TransformMatrixHelpler.i(m, n);
            let s = TransformMatrixHelpler.i(m, o);
            let t = TransformMatrixHelpler.i(m, p);
            let u = TransformMatrixHelpler.i(m, q);
            let v = new Array(4);
            v[0] = r;
            v[1] = s;
            v[2] = t;
            v[3] = u;
            return v;
        }
        cz(a, b) {
            let c = this.ac(a, b);
            let d = 1.7976931348623157E+308;
            let e = 1.7976931348623157E+308;
            let f = -1.7976931348623157E+308;
            let g = -1.7976931348623157E+308;
            for (let h = 0; h < c.length; h++) {
                d = c[h].x < d ? c[h].x : d;
                e = c[h].y < e ? c[h].y : e;
                f = c[h].x > f ? c[h].x : f;
                g = c[h].y > g ? c[h].y : g;
            }
            return new Rect(0, d, e, Math.max(f - d, 0), Math.max(g - e, 0));
        }
        cn(a) {
            let b = this.bq();
            this.cb(a, b);
        }
        cb(a, b) {
            let c = typeCast(FrameworkElement.$, a);
            let d = this.br();
            let e = this.bt();
            let f = 0.5 * e;
            let g = 0.5 * d;
            let h = ((() => {
                let $ret = new RotateTransform();
                $ret.j = b;
                $ret.k = f;
                $ret.l = g;
                return $ret;
            })());
            let i = new TransformGroup();
            i.j.add(h);
            c.j = i;
        }
        c8(a) {
            if ((this.ab.contains(this.ad.iv) == false) && this.ad.iv != null) {
                this.ab.add(this.ad.iv);
                AxisLabelManager.m(this.ad.iv, this.ad.bf);
            }
            for (let b of fromEnum(this.ab)) {
                if (b != this.ad.iv && b != this.af.aw) {
                    this.af.ah(b);
                }
            }
            let c = (this.ad == null || this.bd <= 0 || isNaN_(this.bd)) ? 50 : this.bd;
            if (this.ad != null && (this.ad.df == null || this.ad.df.count == 0)) {
                if (this.ad.b8()) {
                    c = this.ad.er();
                }
            }
            let d = this.aq();
            c = Math.min(c, d ? a.height : a.width);
            c = isInfinity(c) ? 50 : c;
            return d ? new Size(1, 50, c) : new Size(1, c, 50);
        }
        get bh() {
            return this.c(AxisLabelPanelBase.cu);
        }
        set bh(a) {
            this.h(AxisLabelPanelBase.cu, a);
        }
        aj(a) {
            if (a == null) {
                return this.ad.bi.ap(this.ad);
            }
            if (a.position == 0) {
                if (this.ad != null && this.ad.bi != null) {
                    return this.ad.bi.ap(this.ad);
                }
                return 4;
            }
            return a.position;
        }
        ai() {
            return 1;
        }
        ay(a) {
            return true;
        }
        *_a0() {
            for (let a of fromEnum(this.ab)) {
                if (a != this.ad.iv && a != this.af.aw) {
                    yield a;
                }
            }
        }
        a0() {
            return toEnum(() => this._a0());
        }
        b1(a, b, c, d, e) {
            let f = this.af.x(b, c, d, e);
            return f;
        }
        b7(a) {
            if (this.bz == null || this.bk(this.bz) < this.bk(a)) {
                this.bz = a;
            }
        }
        cg(a) {
            this.bb.add(a);
        }
        *_a1() {
            for (let a = 0; a < this.ad.br.count; a++) {
                yield this.ad.br.item(a);
            }
            for (let b = 0; b < this.ad.bq.count; b++) {
                yield this.ad.bq.item(b);
            }
        }
        a1() {
            return toEnum(() => this._a1());
        }
        ca() {
            this.af.ag();
            this.cr();
        }
        cr() {
            this.a8 = this.a7();
        }
        ce() {
        }
        bi(a) {
            return this.bd;
        }
        ci() {
            this.c2 = new Rect(0, 0, 0, this.c7.width, this.c7.height);
        }
        cq() {
            this.c2 = Rect.empty;
        }
        cf() {
            this.af.ak();
        }
        cj(a) {
            this.af.al(a);
        }
        b3() {
            this.af.y();
        }
        ck() {
            this.af.ao();
        }
    }
    AxisLabelPanelBase.$t = /*@__PURE__*/ markType(AxisLabelPanelBase, 'AxisLabelPanelBase', Panel.$);
    AxisLabelPanelBase.cu = /*@__PURE__*/ DependencyProperty.i("Extent", Number_$type, AxisLabelPanelBase.$, /*@__PURE__*/ new PropertyMetadata(2, 50, (a, b) => a.bd = b.newValue));
    return AxisLabelPanelBase;
})();
/**
 * @hidden
 */
export let CategoryAxisBase = /*@__PURE__*/ (() => {
    class CategoryAxisBase extends Axis {
        a4() {
            return new CategoryAxisBaseView(this);
        }
        ag() {
            return [0, this.lk - 1];
        }
        get_cd() {
            return false;
        }
        hv(a) {
            super.hv(a);
            this.kr = a;
        }
        ei(a, b, c, d) {
            let e = this.getCategorySize(b, c, d);
            let f = e * a;
            return f;
        }
        constructor() {
            super();
            this.k2 = null;
            this.ku = null;
            this.lh = 0;
            this.lj = 0;
            this.ks = 0;
            this.k4 = 1;
            this.li = 0;
            this.kw = false;
            this.k2 = new List$1(Number_$type, 0);
        }
        c8(a, b, c) {
            let d = super.c8(a, b, c);
            if (!d) {
                return false;
            }
            return this.itemsSource != null && this.lj > 0;
        }
        l6() {
            if (this.kv != null && this.bo != null && this.itemsSource != null) {
                this.kv = this.bo.releaseFastItemsSource(this.itemsSource);
            }
        }
        l5() {
            if (this.kv == null && this.bo != null && this.itemsSource != null) {
                this.kv = this.bo.getFastItemsSource(this.itemsSource);
            }
        }
        get_cb() {
            return true;
        }
        mj(a, b, c) {
            if (this.b9) {
                return Rect.empty;
            }
            return this.mk(a, b, c, this.cp);
        }
        mk(a, b, c, d) {
            let e = 0;
            let f = a.x;
            let g = this.kh.left;
            let h = this.kh.right;
            if (d) {
                f = a.y;
                g = this.kh.top;
                h = this.kh.bottom;
            }
            let i = this.k2;
            if ((d && !this.ch) || (!d && this.ch)) {
                i = new List$1(Number_$type, 0);
                for (let j = this.k2.count - 1; j >= 0; j--) {
                    i.add(this.k2._inner[j]);
                }
            }
            if (this.categoryMode == 0) {
                if (b) {
                    let k;
                    if (d) {
                        k = new Rect(0, this.kh.left, a.y - c / 2, this.kh.width, c);
                    }
                    else {
                        k = new Rect(0, a.x - c / 2, this.kh.top, c, this.kh.height);
                    }
                    k.intersect(this.kh);
                    return k;
                }
                else {
                    if (f > h) {
                        return Rect.empty;
                    }
                    if (f < g) {
                        return Rect.empty;
                    }
                    let l = 1.7976931348623157E+308;
                    let m = -1;
                    for (e = 0; e < i.count; e++) {
                        let n = Math.abs(i._inner[e] - f);
                        if (n < l) {
                            l = n;
                            m = e;
                        }
                    }
                    if (m == -1) {
                        return Rect.empty;
                    }
                    let o = i._inner[m];
                    let p;
                    if (d) {
                        p = new Rect(0, this.kh.left, o - c / 2, this.kh.width, c);
                    }
                    else {
                        p = new Rect(0, o - c / 2, this.kh.top, c, this.kh.height);
                    }
                    p.intersect(this.kh);
                    return p;
                }
            }
            else {
                for (e = 0; e < i.count; e++) {
                    if (i._inner[e] > f) {
                        break;
                    }
                }
                if (e == 0) {
                    return Rect.empty;
                }
                if (f > h) {
                    return Rect.empty;
                }
                if (f < g) {
                    return Rect.empty;
                }
                let q = this.kh.right;
                if (d) {
                    q = this.kh.bottom;
                }
                if (e < i.count) {
                    q = i._inner[e];
                }
                if (d) {
                    return new Rect(0, this.kh.left, i._inner[e - 1], this.kh.width, q - i._inner[e - 1]);
                }
                else {
                    return new Rect(0, i._inner[e - 1], this.kh.top, q - i._inner[e - 1], this.kh.height);
                }
            }
        }
        get itemsSource() {
            return this.c(CategoryAxisBase.me);
        }
        set itemsSource(a) {
            this.h(CategoryAxisBase.me, a);
        }
        get lk() {
            return this.lh;
        }
        set lk(a) {
            this.lh = a;
            this.lj = this.lh;
        }
        get categoryMode() {
            return this.ks;
        }
        set categoryMode(a) {
            if (this.ks != a) {
                let b = this.ks;
                this.ks = a;
                this.h5("CategoryMode", enumGetBox(CategoryMode_$type, b), enumGetBox(CategoryMode_$type, a));
            }
        }
        lf(a, b, c) {
            let d = !isNaN_(this.k5) ? MathUtil.d(this.k5, 0, this.k4) : 0;
            if (!this.b9 && this.ld > 0) {
                let e = this.getCategorySize(a, b, c);
                let f = 0.5 * d;
                let g = e * f;
                if (g < this.ld) {
                    g = this.ld;
                    f = g / e;
                    d = f / 0.5;
                    d = MathUtil.d(d, 0, this.k4);
                }
            }
            return d;
        }
        get ll() {
            return this.li;
        }
        set ll(a) {
            if (a != this.li) {
                let b = this.li;
                this.li = a;
                this.h5("GroupCount", b, this.li);
            }
        }
        eo(a, b) {
            return NaN;
        }
        getUnscaledValue3(a, b, c, d) {
            return NaN;
        }
        getCategorySize(a, b, c) {
            return NaN;
        }
        k8(a, b, c) {
            return NaN;
        }
        getGroupCenter(a, b, c, d) {
            return NaN;
        }
        lg(a) {
            let b = this.bi.w0;
            let c = this.kh;
            let d = this.kc();
            let e = new ScalerParams(0, b, c, this.ch, d);
            return this.eo(a, e);
        }
        *_k1() {
            for (let a of fromEnum(this.df)) {
                yield a;
            }
            if (this.bi != null && this.bi.fg && this.ky(this.bi)) {
                for (let b of fromEnum(this.bi.go())) {
                    if (b != this.bi) {
                        for (let c of fromEnum(b.series)) {
                            yield c;
                        }
                    }
                }
            }
        }
        k1() {
            return toEnum(() => this._k1());
        }
        kx(a) {
            return this.df.contains(a);
        }
        ky(a) {
            return false;
        }
        *_k0() {
            let a = typeCast(XamDataChart.$, this.bi);
            if (a != null && a.fg && this.ky(a)) {
                for (let b of fromEnum(a.go())) {
                    if (b != this.bi) {
                        let c = typeCast(XamDataChart.$, b);
                        if (c != null) {
                            for (let d of fromEnum(c.axes)) {
                                if (typeCast(CategoryAxisBase.$, d) !== null) {
                                    yield typeCast(CategoryAxisBase.$, d);
                                }
                            }
                        }
                    }
                }
            }
        }
        k0() {
            return toEnum(() => this._k0());
        }
        ma(a) {
            if (this.kw) {
                return;
            }
            try {
                this.kw = true;
                let b = 0;
                let c = 0;
                let d = false;
                for (let e of fromEnum(this.k1())) {
                    if (!e.e0 && !e.fu && !e.e8) {
                        continue;
                    }
                    if (e.bo != null) {
                        continue;
                    }
                    let f = e;
                    let g = f.preferredCategoryMode(this);
                    if (g == 2) {
                        b = 2;
                        d = true;
                        if (this.kx(e)) {
                            c++;
                        }
                    }
                    if (g == 1 && !d) {
                        b = 1;
                    }
                }
                let h = this.kz;
                for (let i of fromEnum(this.k0())) {
                    if (i.kz) {
                        h = true;
                    }
                    if (a) {
                        i.ma(false);
                    }
                }
                if (b == 0 && h) {
                    b = 2;
                    if (c == 0) {
                        c = 1;
                    }
                }
                this.categoryMode = b;
                this.ll = c;
            }
            finally {
                this.kw = false;
            }
        }
        lm() {
            if (this.kv == null) {
                return 0;
            }
            return this.kv.count;
        }
        hz(a, b, c, d) {
            super.hz(a, b, c, d);
            switch (b) {
                case "FastItemsSourceProvider":
                    if ((typeCast(IFastItemsSourceProvider_$type, c)) != null) {
                        this.kv = c.releaseFastItemsSource(this.itemsSource);
                    }
                    if ((typeCast(IFastItemsSourceProvider_$type, d)) != null) {
                        this.kv = d.getFastItemsSource(this.itemsSource);
                    }
                    this.lk = 0;
                    if (this.kv != null) {
                        this.lk = this.lm();
                    }
                    this.ma(true);
                    break;
                case "ItemsSource":
                    if (this.bo != null) {
                        this.kv = this.bo.getFastItemsSource(this.itemsSource);
                    }
                    break;
                case CategoryAxisBase.$$p[0]:
                    let e = typeCast(IFastItemsSource_$type, c);
                    this.lx();
                    this.cq = true;
                    if (e != null) {
                        e.event = delegateRemove(e.event, runOn(this, this.l0));
                    }
                    this.lk = 0;
                    if (this.kv != null) {
                        this.lk = this.lm();
                    }
                    if (this.kv != null) {
                        let f = this.kv;
                        f.event = delegateCombine(f.event, runOn(this, this.l0));
                        this.ib(false);
                        for (let g of fromEnum(this.db())) {
                            g.ru(false);
                            if (g.dc != null) {
                                g.qn();
                            }
                        }
                        if (this.bi != null && this.bi.fu) {
                            this.bi.q8();
                        }
                    }
                    else {
                        this.hj();
                        for (let h of fromEnum(this.db())) {
                            h.o7(true, h.cw);
                            if (h.dc != null) {
                                h.qn();
                            }
                        }
                    }
                    break;
                case "ItemsCount":
                    this.h6(new AxisRangeChangedEventArgs(0, 0, 0, typeGetValue((c)) - 1, typeGetValue((d)) - 1));
                    this.ib(false);
                    break;
                case CategoryAxisBase.$$p[5]:
                    this.cq = true;
                    this.mb();
                    this.ib(false);
                    this.ly();
                    break;
                case "CategoryMode":
                    this.cq = true;
                    this.ib(false);
                    this.l8();
                    this.ly();
                    break;
                case CategoryAxisBase.$$p[4]:
                case CategoryAxisBase.$$p[3]:
                case CategoryAxisBase.$$p[2]:
                case CategoryAxisBase.$$p[1]:
                    this.k4 = this.lc;
                    this.cq = true;
                    for (let i of fromEnum(this.db())) {
                        i.g1 = true;
                        let j = typeCast(IHasCategoryModePreference_$type, i);
                        if (j != null && j.preferredCategoryMode(this) == 2) {
                            i.ru(false);
                        }
                    }
                    this.ib(false);
                    if (this.bi != null) {
                        this.bi.oq();
                    }
                    break;
                case Axis.$$p[4]:
                case Axis.$$p[3]:
                    this.cq = true;
                    this.ib(true);
                    break;
            }
        }
        ly() {
            for (let a of fromEnum(this.db())) {
                a.ru(false);
            }
        }
        l0(a, b) {
            this.l7(b);
        }
        l7(a) {
            switch (a.action) {
                case 3:
                case 0:
                case 1:
                case 2:
                case 4:
                    if (this.kv != null) {
                        this.lk = this.lm();
                    }
                    this.ib(false);
                    break;
            }
            if (this.kv != null) {
                this.lk = this.lm();
            }
        }
        mb() {
            let a = false, b = false;
            for (let c of fromEnum(this.df)) {
                let d = typeCast(IHasCategoryModePreference_$type, c);
                if (d == null) {
                    continue;
                }
                let e = d.preferredCategoryMode(this);
                a = a || e == 1;
                b = b || e == 2;
            }
            let f = b ? 2 : a ? 1 : 0;
            if (f == 0 && this.kz) {
                f = 1;
                if (this.ll == 0) {
                    this.ll = 1;
                }
            }
            this.categoryMode = f;
        }
        ct(a) {
            let b = super.ct(a);
            if (b) {
                this.ma(true);
                let c = typeCast(IHasCategoryModePreference_$type, a);
                if (c != null && c.preferredCategoryMode(this) == 2) {
                    for (let d of fromEnum(this.db())) {
                        let e = typeCast(IHasCategoryModePreference_$type, d);
                        if (e != null && e != c && e.preferredCategoryMode(this) == 2) {
                            d.ru(false);
                        }
                    }
                }
                this.ib(false);
                this.c1();
            }
            return b;
        }
        b0(a) {
            let b = super.b0(a);
            if (b) {
                this.ma(true);
                let c = typeCast(IHasCategoryModePreference_$type, a);
                if (c != null && c.preferredCategoryMode(this) != 0) {
                    for (let d of fromEnum(this.db())) {
                        let e = typeCast(IHasCategoryModePreference_$type, d);
                        if (e != null) {
                            d.ru(false);
                        }
                    }
                }
                this.ib(false);
            }
            return b;
        }
        l8() {
            let a = null;
            for (let b of fromEnum(this.db())) {
                if (b.e0) {
                    let c = b.aw(this);
                    if (c != null && c.aj == this) {
                        a = c;
                    }
                }
            }
            if (a != null) {
                a.ia();
            }
        }
        lx() {
            this.ku = this.kv;
        }
        l9() {
            let a = this.az;
            if (a == null) {
                a = new AxisLabelSettings();
            }
            if (a.visibility == 1) {
                this.br.count = 0;
                this.bq.count = 0;
                this.bp.count = 0;
            }
            else {
                let b = 0;
                b = this.kr.bl(this.dd);
                this.br.count = b;
            }
        }
        lz(a) {
            if (this.kv != null) {
                this.kv.handleCollectionChanged(a);
            }
        }
        l4(a, b, c) {
            this.lz(new NotifyCollectionChangedEventArgs(2, 2, c, b, a));
        }
        l1() {
            this.lz(new NotifyCollectionChangedEventArgs(0, 4));
        }
        l2(a, b) {
            this.lz(new NotifyCollectionChangedEventArgs(1, 0, b, a));
        }
        l3(a, b) {
            this.lz(new NotifyCollectionChangedEventArgs(1, 1, b, a));
        }
        k9(a, b, c, d) {
            return this.la(a, b, c, d, this.categoryMode);
        }
        la(a, b, c, d, e) {
            let f = 0;
            let g = e;
            if (g == 0 && this.categoryMode != 0) {
                g = 1;
            }
            switch (g) {
                case 0:
                    f = 0;
                    break;
                case 1:
                    f = 0.5 * this.getCategorySize(a, b, c);
                    break;
                case 2:
                    f = this.getGroupCenter(d, a, b, c);
                    break;
            }
            if (this.cp != this.ch) {
                f *= -1;
            }
            return f;
        }
        getSeriesOffset(a, b, c, d, e) {
            return this.la(a, b, c, d, e);
        }
        get isVertical() {
            return this.cp;
        }
        j$d(a, b) {
            return this.eo.apply(this, arguments);
        }
        j$c(a, b) {
            return this.el.apply(this, arguments);
        }
        j$e(a, b, c, d, e) {
            this.hp.apply(this, arguments);
        }
        j$f(a, b, c, d) {
            this.hq.apply(this, arguments);
        }
        j$g(a, b, c, d) {
            this.hr.apply(this, arguments);
        }
        get j$b() {
            return this.ch;
        }
        j$a() {
            return this.ag.apply(this, arguments);
        }
    }
    CategoryAxisBase.$t = /*@__PURE__*/ markType(CategoryAxisBase, 'CategoryAxisBase', Axis.$, [ICategoryScaler_$type]);
    CategoryAxisBase.me = /*@__PURE__*/ DependencyProperty.i("ItemsSource", IEnumerable_$type, CategoryAxisBase.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(CategoryAxisBase.$, a);
        if (c.bo != null) {
            c.bo.releaseFastItemsSource(b.oldValue);
        }
        a.h5("ItemsSource", b.oldValue, b.newValue);
    }));
    CategoryAxisBase.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, CategoryAxisBase, 'h5', ['FastItemsSource:kv:mc', [IFastItemsSource_$type], 'Gap:k5:md', [1, 0.2], 'MaximumGap:lc:mf', [1, 1], 'MinimumGapSize:ld:mg', [1, 0], 'Overlap:le:mh', [1, 0], 'UseClusteringMode:kz:mi', [0, false]]);
    return CategoryAxisBase;
})();
/**
 * @hidden
 */
export let HorizontalAxisLabelPanelBase = /*@__PURE__*/ (() => {
    class HorizontalAxisLabelPanelBase extends AxisLabelPanelBase {
        constructor() {
            super(...arguments);
            this.dl = 0;
            this.di = 0;
            this.dk = 0;
            this.dj = 0;
        }
        ae() {
            return new HorizontalAxisLabelPanelBaseView(this);
        }
        ch(a) {
            super.ch(a);
            this.c9 = a;
        }
        b6() {
            this.c9.a1();
        }
        db() {
            return ((this.ag != null && this.ag.k()) || this.ad.b4) && this.bl() % 360 != 0;
        }
        dc() {
            return this.ao && !this.av;
        }
        aq() {
            return true;
        }
        a5() {
            let a = new List$1(Rect.$, 0);
            let b = new List$1(Boolean_$type, 0);
            this.aw = false;
            this.av = false;
            this.ax = false;
            let c = this.bl();
            let d = c * Math.PI / 180;
            if (this.db()) {
                this.av = true;
            }
            this.ao = false;
            this.dn(a, b, d);
            if (this.ad != null && this.ad.bi != null && (this.ad.bi.ft || this.ad.bi.fs) && a != null) {
                for (let e = 0; e < a.count; e++) {
                    let f = a._inner[e];
                    if (this.c3.isEmpty) {
                        this.c3 = f;
                    }
                    else {
                        if (this.c3.width < f.width) {
                            this.c3 = f;
                        }
                    }
                }
            }
            this.ao = this.ao || this.an(a, b);
            if (this.ao) {
                this.dq(a, b);
            }
            else {
                this.dr();
            }
            let g = this.ad.b8();
            if (!g) {
                this.dm(c);
            }
            else {
                this.af.ac();
            }
            if (this.av) {
                for (let h = 0; h < a.count; h++) {
                    let i = a._inner[h];
                    i.x = this.ba._inner[h].c;
                    a._inner[h] = i;
                }
            }
            let j = 0;
            if (this.dc()) {
                j = ((() => { let k = this.by(this.di, a, b); a = k.p1; return k.ret; })());
            }
            if (this.ao && !this.aw) {
                if (j > 0) {
                    if (this.c9.a0()) {
                        this.ax = true;
                    }
                }
            }
            if (this.ao && this.da()) {
                this.ar = true;
                let k = this.c1.width;
                let l = this.dg();
                let m = this.df();
                let n = this.ba.count > 1 ? this.ba._inner[1].c - this.ba._inner[0].c : k;
                let o = Math.abs(n * 0.8);
                let p = 0;
                let q = Math.abs(Math.atan(this.di / n) * 180 / Math.PI);
                let r = this.af.p();
                let s = this.af.q();
                for (let t = 0; t < a.count; t++) {
                    if (this.al) {
                        if (t > 0 && t < a.count - 1) {
                            let u = this.ba.count > 1 ? this.ba._inner[t].c - (a._inner[t - 1].x + a._inner[t - 1].width) : k;
                            let v = this.ba.count > 1 ? a._inner[t + 1].x - this.ba._inner[t].c : k;
                            o = Math.abs(Math.min(Math.abs(u * 2), Math.abs(v * 2)) * 0.8);
                        }
                        else {
                            if (t == 0) {
                                let w = this.ba.count > 1 ? a._inner[t + 1].x - this.ba._inner[t].c : k;
                                o = Math.abs((n * 2) * 0.8);
                            }
                            if (t == a.count - 1) {
                                let x = this.ba.count > 1 ? this.ba._inner[t].c - (a._inner[t - 1].x + a._inner[t - 1].width) : k;
                                o = Math.abs((x * 2) * 0.8);
                            }
                        }
                    }
                    let y = Math.min(a._inner[t].width, o);
                    p = this.av ? this.ba._inner[t].c : this.ba._inner[t].c - y / 2;
                    let z = AngleSimplifier.a(c);
                    let aa = (z >= q && z <= 180 - q) || (z >= 180 + q && z <= 360 - q);
                    let ab = a._inner[t];
                    if (this.av && aa) {
                        let ac = this.bv(this.bb._inner[t]);
                        o = Math.min(l / Math.abs(Math.sin(d)), ac);
                    }
                    ab.x = p;
                    ab.width = Math.min(o, ab.width);
                    a._inner[t] = ab;
                    if (!(typeCast(TextBlock.$, this.bb._inner[t]) !== null)) {
                        this.bb._inner[t].width = Math.min(o, ab.width);
                    }
                    let ad = typeCast(TextBlock.$, this.bb._inner[t]);
                    if (ad != null) {
                        let ae = this.b1(t, ad, o, r, s);
                        if (this.ax) {
                            ad.height = m;
                        }
                        else if (!Base.equalsStatic(ad.al, ae)) {
                            ad.al = ae;
                            this.bb._inner[t].width = Math.min(o, this.bk(this.bb._inner[t]));
                            this.dk = Math.min(this.dk, this.bb._inner[t].width);
                        }
                    }
                }
                if (!g) {
                    this.dm(c);
                }
            }
            if (this.dd()) {
                this.dp(a);
            }
            return a;
        }
        dn(a, b, c) {
            let d = this.bs();
            let e = this.dh();
            this.di = -1.7976931348623157E+308;
            this.dl = -1.7976931348623157E+308;
            this.dj = -1.7976931348623157E+308;
            this.dk = -1.7976931348623157E+308;
            let f = this.af.p();
            let g = this.af.q();
            let h = this.af.r();
            let i = this.af.o();
            let j = this.c1.top;
            let k = (this.c1.height - d);
            let l = false;
            for (let m = 0; m < this.bb.count; m++) {
                if (!this.ba._inner[m].a) {
                    l = true;
                }
            }
            for (let n = 0; n < this.bb.count; n++) {
                if (this.ba == null || n >= this.ba.count) {
                    break;
                }
                let o, p, q, r, s, t;
                let u = this.bb._inner[n];
                s = this.bk(u);
                t = this.bj(u);
                r = s + this.af.p() + this.af.q();
                q = t + h + i;
                let v = this.ba._inner[n].a;
                if (this.av) {
                    o = this.ba._inner[n].c;
                }
                else {
                    o = this.ba._inner[n].c - r / 2;
                }
                p = j + e;
                if (!v || !l) {
                    this.di = Math.max(q, this.di);
                    this.dl = Math.max(r, this.dl);
                    this.dj = Math.max(t, this.dj);
                    this.dk = Math.max(s, this.dk);
                }
                let w = new Rect(0, o, p, r, q);
                a.add(w);
                b.add(v);
                let x = r * Math.abs(Math.sin(c));
                this.ao = this.ao || x > k;
            }
            if (this.ad != null && this.ad.bz) {
                let y = -1;
                for (let z = 0; z < this.bb.count; z++) {
                    let aa = this.bb._inner[z];
                    y = Math.max(aa.ah, y);
                }
                if (y >= 0 && !isNaN_(y)) {
                    for (let ab = 0; ab < this.bb.count; ab++) {
                        let ac = this.bb._inner[ab];
                        ac.ah = y;
                    }
                }
            }
        }
        dm(a) {
            let b = a * (Math.PI / 180);
            let c = Math.abs(this.dk * Math.sin(b)) + Math.abs(this.dj * Math.cos(b));
            c += this.af.r() + this.af.o();
            let d = this.bs();
            this.bh = (c) + (d) + this.ad.d0;
        }
        dp(a) {
            this.c9.a2(a);
        }
        dq(a, b) {
        }
        dr() {
        }
        get_au() {
            return true;
        }
        cm(a, b) {
            let c = a.l;
            let d = a.m;
            let e = 0;
            let f = c / 2;
            let g = new TransformGroup();
            let h = AngleSimplifier.a(this.bl());
            let i = ((() => {
                let $ret = new RotateTransform();
                $ret.j = h;
                $ret.k = e;
                $ret.l = f;
                return $ret;
            })());
            let j = 0;
            let k = 0;
            if (h != 0 && h != 360) {
                if (h > 0 && h < 180) {
                    j = -Math.sin(MathUtil.o(h)) * (c / 2);
                }
                else {
                    i.k = d;
                    k = -d;
                    j = -Math.sin(MathUtil.o(h - 180)) * (c / 2);
                }
            }
            let l = ((() => {
                let $ret = new TranslateTransform();
                $ret.k = j;
                $ret.j = k;
                return $ret;
            })());
            g.j.add(i);
            g.j.add(l);
            a.j = g;
        }
        dd() {
            return !this.aw && !this.av;
        }
        da() {
            if (this.ad != null && this.ad.bi != null && this.ad.bi.fu) {
                return false;
            }
            return true;
        }
        by(a, b, c) {
            let d = 0;
            let e = new List$1(Rect.$, 0);
            let f = this.dh() + this.c1.top;
            let g = this.dg();
            let h = f + g;
            if (a * 3 <= this.bd) {
                d = 3;
            }
            else if (a * 2 <= this.bd) {
                d = 2;
            }
            else {
                return {
                    ret: d,
                    p1: b
                };
            }
            let i = 0;
            for (let j = 0; j < b.count; j++) {
                let k = RectUtil.p(b._inner[j]);
                if (!c._inner[j]) {
                    if (i % d == 0) {
                        k.y = f;
                    }
                    else if (i % d == d - 1) {
                        k.y = h - k.height;
                    }
                    else {
                        k.y = (f + (g / 2)) - k.height / 2;
                    }
                    i++;
                }
                e.add(k);
            }
            this.ao = this.an(e, c);
            if (!this.ao) {
                this.aw = true;
                b = e;
            }
            return {
                ret: d,
                p1: b
            };
        }
        c0() {
            let a = this.aj(this.ad.bf);
            let b = this.bs();
            let c = this.ah;
            let d = 0;
            if (a == 3) {
                d += this.c1.top;
                if (c == 1 || c == 5) {
                    d += this.ad.d0;
                }
            }
            else {
                d = this.c1.bottom - b;
                if (c == 4 || c == 0) {
                    d -= this.ad.d0;
                }
            }
            let e = this.bu();
            let f = 0;
            let g = this.ad.bf == null ? 1 : this.ad.bf.horizontalAlignment;
            if (g == 0) {
                f = this.c1.left;
            }
            else if (g == 2) {
                f = this.c1.right - e;
            }
            else {
                f = (this.c1.left + (this.c1.width / 2)) - (e / 2);
            }
            return new Rect(0, f, d, e, b);
        }
        dh() {
            let a = 0;
            let b = this.aj(this.ad.bf);
            if (b == 3) {
                a += this.bs();
            }
            let c = this.ah;
            if (c == 1 || c == 5) {
                a += this.ad.d0;
            }
            return a;
        }
        de() {
            let a = 0;
            let b = this.aj(this.ad.bf);
            if (b == 4) {
                a += this.bs();
            }
            let c = this.ah;
            if (c == 0 || c == 4) {
                a += this.ad.d0;
            }
            return a;
        }
        dg() {
            let a = (this.bd - this.dh()) - this.de();
            if (a < 0) {
                a = 0;
            }
            return a;
        }
        df() {
            let a = ((this.dg() - this.af.r()) - this.af.o());
            if (a < 0) {
                a = 0;
            }
            return a;
        }
        b9() {
            let a = this.af.au();
            this.ad.hk(a);
            if (this.ag != null && this.ag.visibility != 0) {
                return;
            }
            let b = this.ad.d0;
            if (b == 0) {
                return;
            }
            let c = this.a2();
            if (c == null) {
                return;
            }
            let d = this.c1.top;
            let e;
            let f = this.ah;
            if (f == 0 || f == 4) {
                d = this.c1.bottom;
                e = d - this.ad.d0;
            }
            else {
                e = d + this.ad.d0;
            }
            let g = this.af.b();
            for (let h of fromEnum(c)) {
                this.cs(a, h, d, e, this.c4, g);
            }
            if (!this.ab.contains(this.af.aw)) {
                this.ab.add(this.af.aw);
            }
        }
        a6(a) {
            if (this.ad.cu || this.ad.cw) {
                let b = this.af.p();
                let c = this.af.r();
                let d = this.af.q();
                let e = this.af.o();
                let f = Math.max(b, Math.max(c, Math.max(d, e)));
                let g = new Thickness(0, f);
                if (this.av) {
                    g = new Thickness(0, Math.sqrt((f * f) / 2));
                }
                let h = this.a4(a);
                let i = new List$1(Thickness.$, 0);
                if (h.count < 1) {
                    return a;
                }
                h.aa((j, k) => {
                    let l = this.cy(j, a._inner[j], g);
                    let m = this.cy(k, a._inner[k], g);
                    let n = l.left;
                    let o = m.left;
                    if (n < o) {
                        return -1;
                    }
                    if (n > o) {
                        return 1;
                    }
                    return 0;
                });
                for (let j = 0; j < h.count; j++) {
                    let k = h._inner[j];
                    let l = a._inner[k];
                    let m = this.cy(k, a._inner[k], g);
                    let n = this.ad.bi.wz.left;
                    if (this.ad.cw) {
                        if (l.left < (this.ad.bi.wz.left - n)) {
                            l = new Rect(0, l.left + ((this.ad.bi.wz.left - n) - l.left), l.top, l.width, l.height);
                            a._inner[k] = l;
                        }
                    }
                }
                let o = this.as(a, h, g);
                if (o && (this.ad.cu)) {
                    for (let p = 0; p < h.count - 1; p++) {
                        let q = h._inner[p];
                        let r = h._inner[p + 1];
                        let s = a._inner[q];
                        let t = a._inner[r];
                        let u = this.cy(q, a._inner[q], g);
                        let v = this.cy(r, a._inner[r], g);
                        if (u.intersectsWith(v) || u.left > v.right) {
                            let w = new Rect(0, u.right + 1 + (t.left - v.left), t.top, t.width, t.height);
                            a._inner[r] = w;
                        }
                    }
                }
                for (let x = h.count - 1; x >= 0; x--) {
                    let y = h._inner[x];
                    let z = a._inner[y];
                    let aa = this.cy(y, a._inner[y], g);
                    let ab = this.ad.bi.c9.a5;
                    if (this.ad.cw) {
                        if (aa.right > this.ad.bi.wz.right + ab) {
                            z = new Rect(0, z.left - (aa.right - (this.ad.bi.wz.right + ab)), z.top, z.width, z.height);
                            a._inner[y] = z;
                        }
                    }
                }
                if (this.ad.cu) {
                    for (let ac = h.count - 1; ac >= 1; ac--) {
                        let ad = h._inner[ac];
                        let ae = h._inner[ac - 1];
                        let af = a._inner[ad];
                        let ag = a._inner[ae];
                        let ah = this.cy(ad, a._inner[ad], g);
                        let ai = this.cy(ae, a._inner[ae], g);
                        if (ah.intersectsWith(ai) || ah.left < ai.right) {
                            let aj = new Rect(0, ah.left - (ai.width + 1) + (ag.left - ai.left), ag.top, ag.width, ag.height);
                            a._inner[ae] = aj;
                        }
                    }
                }
                return a;
            }
            else {
                return a;
            }
        }
    }
    HorizontalAxisLabelPanelBase.$t = /*@__PURE__*/ markType(HorizontalAxisLabelPanelBase, 'HorizontalAxisLabelPanelBase', AxisLabelPanelBase.$);
    return HorizontalAxisLabelPanelBase;
})();
/**
 * @hidden
 */
export let HorizontalAxisLabelPanel = /*@__PURE__*/ (() => {
    class HorizontalAxisLabelPanel extends HorizontalAxisLabelPanelBase {
        ai() {
            return 1;
        }
        ay(a) {
            return a == 5 || a == 4 || a == 1 || a == 0;
        }
    }
    HorizontalAxisLabelPanel.$t = /*@__PURE__*/ markType(HorizontalAxisLabelPanel, 'HorizontalAxisLabelPanel', HorizontalAxisLabelPanelBase.$);
    return HorizontalAxisLabelPanel;
})();
/**
 * @hidden
 */
export let NumericAxisBase = /*@__PURE__*/ (() => {
    class NumericAxisBase extends Axis {
        a4() {
            return new NumericAxisBaseView(this);
        }
        ag() {
            return [this.l4, this.l3];
        }
        hv(a) {
            super.hv(a);
            this.k1 = a;
        }
        d2(a, b) {
            let c = a < this.l4 ? this.l4 : a;
            c = a > this.l3 ? this.l3 : c;
            return c;
        }
        get_cj() {
            return true;
        }
        constructor() {
            super();
            this.kw = 0;
            this.lw = 0;
            this.ma = 0;
            this.lz = 0;
            this.lv = 0;
            this.l9 = 0;
            this.ly = 0;
            this.lu = 0;
            this.mh = -1;
            this.mg = 0;
            this.mi = -1;
            this.le = false;
            this.lx = 0;
            this.lc = false;
            this.ld = false;
            this.mn = 0;
            this.k4 = null;
            this.lq = false;
            this.lr = false;
            this.ks = null;
            this.ku = null;
            this.l1 = -1;
            this.l0 = -1;
            this.kx = 0;
            this.ln = false;
            this.k8 = null;
            this.lb = false;
            this.mn = 10;
        }
        get ky() {
            return EnumUtil.getEnumValue(AxisRangeBufferMode_$type, this.c(NumericAxisBase.nw));
        }
        set ky(a) {
            this.h(NumericAxisBase.nw, enumGetBox(AxisRangeBufferMode_$type, a));
        }
        get kz() {
            return this.kw;
        }
        set kz(a) {
            this.kw = a;
        }
        get l4() {
            return this.lw;
        }
        set l4(a) {
            if (this.l4 != a) {
                let b = this.lw;
                this.lw = a;
                this.ma = Math.log(this.l4);
                this.h5("ActualMinimumValue", b, this.l4);
            }
        }
        f4() {
            return this.mc;
        }
        get l7() {
            return this.lz;
        }
        set l7(a) {
            if (this.l7 != a) {
                let b = this.lz;
                this.lz = a;
                this.h5("ActualVisibleMinimumValue", b, this.l7);
            }
        }
        get l3() {
            return this.lv;
        }
        set l3(a) {
            if (this.l3 != a) {
                let b = this.lv;
                this.lv = a;
                this.l9 = Math.log(this.l3);
                this.h5("ActualMaximumValue", b, this.l3);
            }
        }
        f3() {
            return this.l3;
        }
        get l6() {
            return this.ly;
        }
        set l6(a) {
            if (this.l6 != a) {
                let b = this.ly;
                this.ly = a;
                this.h5("ActualVisibleMaximumValue", b, this.l6);
            }
        }
        get l2() {
            return this.lu;
        }
        set l2(a) {
            if (this.l2 != a) {
                let b = this.lu;
                this.lu = a;
                this.h5("ActualInterval", b, this.l2);
            }
        }
        ex() {
            return this.l2;
        }
        get mk() {
            return this.mh;
        }
        set mk(a) {
            this.mh = a;
        }
        get mj() {
            return this.mg;
        }
        set mj(a) {
            if (this.mj != a) {
                let b = this.mg;
                this.mg = a;
                this.h5("ActualMaxPrecision", b, this.mj);
            }
        }
        get ml() {
            return this.mi;
        }
        set ml(a) {
            this.mi = a;
        }
        get li() {
            return this.le;
        }
        set li(a) {
            this.le = a;
        }
        get l5() {
            return this.lx;
        }
        set l5(a) {
            if (this.l5 != a) {
                let b = this.lx;
                this.lx = a;
                this.h5("ActualMinorInterval", b, this.l5);
            }
        }
        get lg() {
            return this.lc;
        }
        set lg(a) {
            if (this.lg != a) {
                let b = this.lc;
                if (b != a) {
                    this.lc = a;
                    this.h5("ActualIsLogarithmic", b, this.lg);
                }
            }
        }
        get lh() {
            return this.ld;
        }
        set lh(a) {
            this.ld = a;
        }
        get lp() {
            return this.lg && this.l4 > 0 && this.mn > 1;
        }
        ic(a) {
            super.ic(a);
            if (this.lp && this.bi != null) {
                let b = this.kc();
                let c = this.kb();
                let d = this.k5(this.kh, this.bi.wh, b, c);
                if (d == null) {
                    return;
                }
                for (let e = 0; e < d.k.count; e++) {
                    let f = this.mm;
                    let g = d.k._inner[e];
                    let h = Math.min(g.d, g.c);
                    let i = Math.max(g.d, g.c);
                    let j = Math.floor(logBase(h, f));
                    let k = Math.ceil(logBase(i, f));
                    if (k - j < 2) {
                        if (typeCast(LogarithmicTickmarkValues.$, this.k8) !== null) {
                            this.k8 = new LinearTickmarkValues();
                        }
                    }
                    else {
                        this.k8 = this.la != null ? this.la : ((() => {
                            let $ret = new LogarithmicTickmarkValues();
                            $ret.x = f;
                            return $ret;
                        })());
                    }
                }
            }
        }
        it(a, b) {
            super.it(a, b);
            if (this.mo != -1) {
                this.mj = this.mp();
            }
            else {
                if (this.mj != -1) {
                    this.mj = -1;
                }
            }
        }
        h4(a) {
            super.h4(a);
            this.mc = a;
        }
        h3(a) {
            super.h4(a);
            this.mb = a;
        }
        hz(a, b, c, d) {
            super.hz(a, b, c, d);
            switch (b) {
                case "SeriesViewer":
                    this.mj = this.mp();
                    break;
                case NumericAxisBase.$$p[12]:
                    this.li = this.ls;
                    this.mj = this.mp();
                    break;
                case NumericAxisBase.$$p[7]:
                    this.ml = this.mo;
                    this.mj = this.mp();
                    break;
                case "ActualMaxPrecision":
                    this.mk = this.mj;
                    this.c1();
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[0]:
                case NumericAxisBase.$$p[1]:
                    if (this.mq != null) {
                        this.ks = new BindingFormatter();
                        this.ks.j = this.mq;
                        this.ks.d = this.kr;
                    }
                    else {
                        this.ks = null;
                    }
                    break;
                case "AutoRangeBufferMode":
                    this.kz = this.ky;
                    this.hl();
                    this.c1();
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[9]:
                    this.c1();
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[8]:
                    this.c1();
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[2]:
                    this.lh = this.lj;
                    this.c1();
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[5]:
                    this.lq = true;
                    this.lg = this.lo;
                    break;
                case Axis.$$p[4]:
                case Axis.$$p[3]:
                case NumericAxisBase.$$p[4]:
                case NumericAxisBase.$$p[10]:
                    this.cq = true;
                    this.ib(false);
                    break;
                case NumericAxisBase.$$p[6]:
                    this.lq = true;
                    this.mn = this.mm;
                    if (this.lg) {
                        this.c1();
                        this.ni();
                        this.ib(false);
                    }
                    break;
                case NumericAxisBase.$$p[11]:
                    let e = new AxisRangeChangedEventArgs(0, this.l4, this.l4, this.l3, this.l3);
                    this.h6(e);
                    this.cq = true;
                    this.ib(false);
                    break;
                case Axis.$$p[13]:
                    this.k4 = this.k2();
                    this.cq = true;
                    this.ib(false);
                    break;
                case "TickmarkValues":
                    this.nk();
                    break;
                case "ActualIsLogarithmic":
                    this.c1();
                    this.ni();
                    this.cq = true;
                    this.nk();
                    this.ib(false);
                    break;
                case "ActualTickmarkValues":
                    this.cq = true;
                    this.ib(false);
                    break;
                case "AbbreviateLargeNumbers":
                    this.ib(false);
                    break;
            }
        }
        ni() {
            for (let a of fromEnum(this.db())) {
                a.ru(false);
            }
        }
        kv() {
            let a = new AxisRange(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY);
            let b = false;
            if (this.bi != null) {
                for (let c of fromEnum(this.db())) {
                    let d = c.ay(this);
                    if (d != null) {
                        b = true;
                        a = new AxisRange(Math.min(a.c, d.c), Math.max(a.b, d.b));
                    }
                }
            }
            if (b) {
                if (this.l1 >= 0) {
                    a = new AxisRange(a.c - this.l1, a.b);
                }
                if (this.l0 >= 0) {
                    a = new AxisRange(a.c, a.b + this.l0);
                }
                this.ku = a;
                return a;
            }
            this.ku = null;
            return null;
        }
        lt(a) {
            if (a == 1 || a == 2 || a == 3) {
                let b = this.ku;
                if (b == null) {
                    b = this.kv();
                }
                if (b == null) {
                    return false;
                }
                if (this.bi == null || this.bi.wz.isEmpty || this.bi.wz.height == 0 || this.bi.wz.width == 0) {
                    return false;
                }
                let c = -1;
                let d = -1;
                for (let e of fromEnum(this.dc())) {
                    let f = e.ax(b, this, new Rect(0, 0, 0, 1, 1));
                    if (f.c != b.c) {
                        if (a == 1 || a == 2) {
                            c = Math.max(c, b.c - f.c);
                        }
                    }
                    if (f.b != b.b) {
                        if (a == 1 || a == 3) {
                            d = Math.max(d, f.b - b.b);
                        }
                    }
                }
                if (c >= 0 || d >= 0) {
                    this.l1 = c;
                    this.l0 = d;
                    return true;
                }
                return false;
            }
            return false;
        }
        k0() {
            if (this.kz == 0) {
                if (this.bi != null) {
                    if (this.cp) {
                        if (this.bi.b2 == 2) {
                            return 1;
                        }
                        if (this.ci) {
                            if (this.bi.b2 == 4) {
                                return 3;
                            }
                            if (this.bi.b2 == 3) {
                                return 2;
                            }
                        }
                        else {
                            if (this.bi.b2 == 4) {
                                return 2;
                            }
                            if (this.bi.b2 == 3) {
                                return 3;
                            }
                        }
                    }
                    else {
                        if (this.bi.b0 == 2) {
                            return 1;
                        }
                        if (this.ci) {
                            if (this.bi.b0 == 4) {
                                return 3;
                            }
                            if (this.bi.b0 == 3) {
                                return 2;
                            }
                        }
                        else {
                            if (this.bi.b0 == 4) {
                                return 2;
                            }
                            if (this.bi.b0 == 3) {
                                return 3;
                            }
                        }
                    }
                }
                return 4;
            }
            else {
                return this.kz;
            }
        }
        ng(a, b, c, d, e, f, g) {
            let h = AutoRangeCalculator.a(a, b, c, d, e, f, g);
            f = h.p5;
            g = h.p6;
            return {
                p5: f,
                p6: g
            };
        }
        c3() {
            if (this.cq && this.c4) {
                this.bc = this.bb();
            }
            let a = this.lg && !isNaN_(this.mm) && !isInfinity(this.mm) && this.mm > 1;
            let b;
            let c;
            let d = this.k0();
            if (d != this.kx) {
                this.kx = d;
                this.hl();
            }
            let e = false;
            if (!this.kh.isEmpty && d != 4) {
                if (this.l1 == -1 && this.l0 == -1) {
                    e = true;
                }
            }
            let f = this.ng(this, this.mc, this.mb, a, this.mm, b, c);
            b = f.p5;
            c = f.p6;
            if (b != this.l4 || c != this.l3 || this.lq) {
                if (d != 4 && (this.l1 >= 0 || this.l0 >= 0)) {
                    this.hl();
                    let g = this.ng(this, this.mc, this.mb, a, this.mm, b, c);
                    b = g.p5;
                    c = g.p6;
                }
            }
            if (b != this.l4 || c != this.l3 || this.lq || e) {
                this.lq = false;
                let h = new AxisRangeChangedEventArgs(0, this.l4, b, this.l3, c);
                this.l4 = b;
                this.l3 = c;
                if (!this.kh.isEmpty && d != 4) {
                    if (this.lt(d)) {
                        let i = this.ng(this, this.mc, this.mb, a, this.mm, b, c);
                        b = i.p5;
                        c = i.p6;
                        h = new AxisRangeChangedEventArgs(0, h.oldMinimumValue, b, h.oldMaximumValue, c);
                        this.l4 = b;
                        this.l3 = c;
                    }
                }
                this.h6(h);
                this.nj(h);
                this.ib(true);
                return true;
            }
            return false;
        }
        hl() {
            this.l1 = -1;
            this.l0 = -1;
        }
        nj(a) {
        }
        ct(a) {
            let b = super.ct(a);
            if (b) {
                this.c1();
            }
            return b;
        }
        b0(a) {
            let b = super.b0(a);
            if (b) {
                this.c1();
            }
            return b;
        }
        k3(a) {
            return new NumericAxisRenderer(a);
        }
        k2() {
            let a = ((() => {
                let $ret = new AxisLabelManager();
                $ret.a = this;
                $ret.f = this.de;
                $ret.e = this.dd;
                $ret.b = this.aw;
                return $ret;
            })());
            if (this.az != null) {
                this.az.registerAxis(this);
            }
            let b = this.k3(a);
            b.u = () => {
                let c = this.a5.a4();
                let d = this.a5.a7();
                let e = this.a5.a5();
                let f = this.a5.a6();
                this.ip();
                this.hk(c);
                this.hk(d);
                this.hk(e);
                this.hk(f);
            };
            b.o = (c, d) => !d.isEmpty && !c.isEmpty;
            b.d = (c, d, e, f) => this.k5(c, d, e, f);
            b.g = (c, d) => {
                this.ln = d;
                let e = this.f1(c);
                this.ln = false;
                return e;
            };
            return b;
        }
        k6() {
            return new NumericAxisRenderingParameters();
        }
        nh() {
        }
        k7() {
            return null;
        }
        mp() {
            if (!this.li && (this.ka.isEmpty || this.ka.width < 1 || this.ka.height < 1)) {
                return -1;
            }
            return this.ml;
        }
        k5(a, b, c, d) {
            let e = this.k6();
            let f = this.a5.a4();
            let g = this.a5.a7();
            let h = this.a5.a5();
            let i = this.a5.a6();
            let j = this.a5.e();
            let k = this.a5.f();
            let l = this.a5.g();
            e.u = f;
            e.x = g;
            e.v = h;
            e.w = i;
            e.a = j;
            e.c = k;
            e.d = l;
            e.l = this.l3;
            e.m = this.l4;
            e.h = this.ll;
            e.f = this.k9;
            e.aa = a;
            e.z = c;
            e.y = d;
            e.ab = b;
            e.o = this.e0();
            e.s = this.mk;
            e.g = this.lk();
            e.p = this.l8;
            e.q = this.md;
            e.t = this.f2;
            if (this.f2 == null && (this.au != null || this.ai != null || this.k1.m())) {
                e.t = "Format";
            }
            e.j = this.cy;
            e.ac = this.lf;
            return e;
        }
        mf(a) {
            let b = this.kc();
            let c = new ScalerParams(0, this.bi.wh, this.kh, this.ch, b);
            return this.eo(a, c);
        }
        lk() {
            return !isNaN_(this.l8);
        }
        get lm() {
            return !isNaN_(this.mc);
        }
        get ll() {
            return !isNaN_(this.mb);
        }
        nk() {
            if (this.la != null) {
                this.k9 = this.la;
            }
            else if (this.lg) {
                this.k9 = new LogarithmicTickmarkValues();
                this.k1.bl();
            }
            else {
                this.k9 = new LinearTickmarkValues();
            }
        }
        get la() {
            return typeCast(TickmarkValues.$, this.c(NumericAxisBase.nz));
        }
        set la(a) {
            this.h(NumericAxisBase.nz, a);
        }
        get k9() {
            if (this.k8 == null) {
                this.nk();
            }
            return this.k8;
        }
        set k9(a) {
            let b = this.k8;
            let c = b != a;
            if (c) {
                this.k8 = a;
                this.h5("ActualTickmarkValues", b, a);
            }
        }
        get lf() {
            return this.lb;
        }
        set lf(a) {
            let b = this.lf;
            if (a != b) {
                this.lb = a;
                this.h5("AbbreviateLargeNumbers", b, this.lf);
            }
        }
    }
    NumericAxisBase.$t = /*@__PURE__*/ markType(NumericAxisBase, 'NumericAxisBase', Axis.$);
    NumericAxisBase.nw = /*@__PURE__*/ DependencyProperty.i("AutoRangeBufferMode", AxisRangeBufferMode_$type, NumericAxisBase.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(AxisRangeBufferMode_$type, 0), (a, b) => a.h5("AutoRangeBufferMode", b.oldValue, b.newValue)));
    NumericAxisBase.nz = /*@__PURE__*/ DependencyProperty.i("TickmarkValues", TickmarkValues.$, NumericAxisBase.$, /*@__PURE__*/ new PropertyMetadata(1, (a, b) => a.h5("TickmarkValues", b.oldValue, b.newValue)));
    NumericAxisBase.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, NumericAxisBase, 'h5', ['AbbreviatedLabelFormat:mq:nl', [2, null], 'AbbreviatedLabelFormatSpecifiers:kr:nm', [Array_$type, null], 'FavorLabellingScaleEnd:lj:nn', [0, false], 'FormatAbbreviatedLabel:kt:no', [Delegate_$type], 'Interval:l8:np', [1, NaN], 'IsLogarithmic:lo:nq', [0, false], 'LogarithmBase:mm:nr', [1, 10], 'MaxPrecision:mo:nt', [1, -1], 'MaximumValue:mb:ns', [1, NaN], 'MinimumValue:mc:nu', [1, NaN], 'MinorInterval:md:nv', [1, NaN], 'ReferenceValue:me:nx', [1, 0], 'ShouldApplyMaxPrecisionWhenZoomed:ls:ny', [0, false]]);
    return NumericAxisBase;
})();
/**
 * @hidden
 */
export let NumericScaler = /*@__PURE__*/ (() => {
    class NumericScaler extends DependencyObject {
        constructor() {
            super(...arguments);
            this.o = 0;
            this.n = 0;
            this.m = 0;
        }
        y(a) {
            this.l = a;
        }
        x(a) {
            this.k = a;
        }
        w(a, b, c) {
            switch (a) {
                case NumericScaler.$$p[1]:
                    this.o = this.l;
                    this.z();
                    break;
                case NumericScaler.$$p[0]:
                    this.n = this.k;
                    this.z();
                    break;
            }
        }
        z() {
            if (isNaN_(this.l) || isNaN_(this.k) || isInfinity(this.l) || isInfinity(this.k) || this.l < (-7.9228162514264338E+28) || this.k > (7.9228162514264338E+28)) {
                this.m = this.k - this.l;
            }
            else {
                this.m = this.k - this.l;
            }
        }
        j(a, b, c, d) {
            let e = new List$1(Number_$type, 2, a.count);
            for (let f = b; f < c; f++) {
                e.add(this.q(a.item(f), d));
            }
            return e;
        }
        v(a, b, c, d) {
            for (let e = b; e < c; e++) {
                a.item(e, this.p(a.item(e), d));
            }
        }
        u(a, b, c, d, e) {
            for (let f = 0; f < b.count; f++) {
                let g = b.item(f);
                for (let h = c; h < d; h++) {
                    a.item(h)[g] = this.p(a.item(h)[g], e);
                }
            }
        }
    }
    NumericScaler.$t = /*@__PURE__*/ markType(NumericScaler, 'NumericScaler', DependencyObject.$);
    NumericScaler.ac = /*@__PURE__*/ new Rect(0, 0, 0, 1, 1);
    NumericScaler.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, NumericScaler, 'w', ['ActualMaximumValue:k:aa', [1, NaN], 'ActualMinimumValue:l:ab', [1, NaN]]);
    return NumericScaler;
})();
/**
 * @hidden
 */
export let AxisRendererBase = /*@__PURE__*/ (() => {
    class AxisRendererBase extends Base {
        constructor(a) {
            super();
            this.u = null;
            this.o = null;
            this.v = null;
            this.m = null;
            this.l = null;
            this.k = null;
            this.q = null;
            this.n = null;
            this.j = null;
            this.e = null;
            this.p = null;
            this.h = null;
            this.t = null;
            this.b = null;
            this.g = null;
            this.d = null;
            this.r = null;
            this.a = null;
            this.f = null;
            this.i = null;
            this.u = () => {
            };
            this.o = (b, c) => false;
            this.v = () => {
            };
            this.m = (b, c) => c;
            this.l = (b, c, d, e) => {
            };
            this.k = (b, c, d) => {
            };
            this.q = (b, c) => false;
            this.n = (b, c) => this.q(b, c);
            this.j = (b) => {
            };
            this.e = (b) => {
            };
            this.p = (b, c, d) => false;
            this.h = (b, c) => new LabelPosition(c);
            this.t = (b, c) => c;
            this.g = (b, c) => null;
            this.r = (b, c, d, e) => c;
            this.a = (b, c, d, e) => c;
            this.b = a;
            this.d = (b, c, d, e) => null;
        }
        c(a, b, c, d, e) {
            this.x(c, b);
            if (this.o(b, c)) {
                this.v();
                let f = this.d(b, c, d, e);
                this.x(c, b);
                if (f == null) {
                    this.aa();
                    return null;
                }
                if (f.k.count > 1 && !f.g) {
                    this.ab(f);
                }
                for (let g of fromEnum(f.k)) {
                    f.e = g;
                    if (isNaN_(g.c) || isInfinity(g.c) || isNaN_(g.d) || isInfinity(g.d)) {
                        continue;
                    }
                    if (g.d == g.c) {
                        continue;
                    }
                    this.e(f);
                    this.b.o(f.r);
                    let h = 0;
                    let i = 0;
                    let j = false;
                    let k = (l) => l;
                    if (this.f != null) {
                        k = this.i;
                    }
                    if (typeCast(CategoryAxisRenderingParameters.$, f) !== null) {
                        h = f.ac;
                        i = f.ag;
                        j = f.ad;
                    }
                    f.f = this.s(f);
                    f.f.s(((() => {
                        let $ret = new TickmarkValuesInitializationParameters();
                        $ret.n = f.e.d;
                        $ret.m = f.e.c;
                        $ret.g = f.m;
                        $ret.f = f.l;
                        $ret.k = f.e.b;
                        $ret.d = f.g;
                        $ret.l = f.p;
                        $ret.j = f.q;
                        $ret.h = f.o;
                        $ret.i = f.e.a;
                        $ret.q = f.e.e;
                        $ret.a = h;
                        $ret.r = i;
                        $ret.t = f.ab;
                        $ret.s = f.aa;
                        $ret.e = j;
                        $ret.c = k;
                        $ret.p = f.s;
                        return $ret;
                    })()));
                    this.y(f);
                }
                this.z();
                return f;
            }
            return null;
        }
        aa() {
            this.b.q();
        }
        ab(a) {
            let b = -1.7976931348623157E+308;
            let c = -2147483648;
            let d = 0;
            let e = 0;
            let f = false;
            let g = (h) => h;
            if (this.f != null) {
                g = this.i;
            }
            if (typeCast(CategoryAxisRenderingParameters.$, a) !== null) {
                d = a.ac;
                e = a.ag;
                f = a.ad;
            }
            for (let h of fromEnum(a.k)) {
                a.e = h;
                a.f.s(((() => {
                    let $ret = new TickmarkValuesInitializationParameters();
                    $ret.n = h.d;
                    $ret.m = h.c;
                    $ret.g = a.m;
                    $ret.f = a.l;
                    $ret.k = h.b;
                    $ret.d = a.g;
                    $ret.l = a.p;
                    $ret.i = h.a;
                    $ret.q = h.e;
                    $ret.h = a.o;
                    $ret.j = a.q;
                    $ret.a = d;
                    $ret.r = e;
                    $ret.t = a.ab;
                    $ret.s = a.aa;
                    $ret.e = f;
                    $ret.c = g;
                    $ret.p = a.s;
                    return $ret;
                })()));
                h.a = a.f.m;
                h.e = a.f.r;
                if (!isNaN_(a.f.m)) {
                    b = Math.max(b, a.f.m);
                    c = Math.max(c, a.f.r);
                }
            }
            for (let i of fromEnum(a.k)) {
                if (i.a == b) {
                    i.a = -1;
                    i.e = -1;
                }
                else {
                    i.a = b;
                    i.e = c;
                }
            }
        }
        x(a, b) {
            this.u();
            this.b.n(a, b);
            this.b.t();
        }
        z() {
            this.b.t();
            let a = false;
            if (this.b.d) {
                this.b.s(0);
            }
            else {
                let b = 0;
                for (let c of fromEnum(this.b.e)) {
                    let d = typeCast(FrameworkElement.$, c);
                    if (d == null) {
                        d = this.b.u(b);
                        let e = d.al;
                        let f = c.toString();
                        let g = 0;
                        let h = 0;
                        if (e != null) {
                            g = e.length;
                        }
                        if (f != null) {
                            h = f.length;
                        }
                        if (g != h) {
                            a = true;
                        }
                        d.al = f;
                        b++;
                    }
                    else {
                    }
                }
                if (a) {
                    this.b.p();
                }
                this.b.g();
                this.b.s(b);
            }
        }
        s(a) {
            return a.f;
        }
        y(a) {
            let b = a.f.j();
            let c = a.f.k();
            this.b.r(this.m(a, a.f.m));
            this.j(a);
            for (let d = 0; d < b.length; d++) {
                let e = a.f.p + d;
                let f = b[d];
                let g = f;
                let h = 0;
                if (d < b.length - 1) {
                    h = b[d + 1];
                }
                else {
                    h = Number.POSITIVE_INFINITY;
                }
                g = this.r(a, g, e, a.f.m);
                h = this.r(a, h, e, a.f.m);
                let i = this.m(a, g);
                let j = this.m(a, h);
                if (this.q(a, i)) {
                    if (e % 2 == 0 && this.n(a, j) && !isInfinity(j)) {
                        this.l(a, a.x, i, j);
                    }
                    a.b = a.c;
                    this.k(a, a.v, i);
                    a.b = null;
                }
                i = this.a(a, i, e, a.f.m);
                if (!isNaN_(i) && !isInfinity(i) && this.p(a, i, d == b.length - 1)) {
                    let k = this.w(a, g, e, a.f.m);
                    if (k != null) {
                        this.b.i(k, this.h(a, i));
                    }
                }
            }
            if (a.j) {
                for (let l = 0; l < c.length; l++) {
                    let m = c[l];
                    let n = this.m(a, m);
                    a.b = a.d;
                    this.k(a, a.w, n);
                    a.b = null;
                }
            }
        }
        w(a, b, c, d) {
            return null;
        }
    }
    AxisRendererBase.$t = /*@__PURE__*/ markType(AxisRendererBase, 'AxisRendererBase');
    return AxisRendererBase;
})();
/**
 * @hidden
 */
export let NumericAxisRenderer = /*@__PURE__*/ (() => {
    class NumericAxisRenderer extends AxisRendererBase {
        constructor(a) {
            super(a);
            this.ac = null;
            this.ad = false;
        }
        w(a, b, c, d) {
            let e;
            if (a.t != null) {
                if (a.i() && a.ac) {
                    return this.ae(b, this.g);
                }
                e = this.g(b, false);
            }
            else {
                b = Math.round(b * 1000000) / 1000000;
                if (a.i() && a.ac) {
                    return this.ae(b, null);
                }
                e = MathUtil.s(b);
            }
            return e;
        }
        ae(a, b) {
            if (this.ad) {
                return a.toString();
            }
            if (this.ac == null) {
                this.ac = NumberAbbreviatorFactory.a(this.b.a.bu);
                if (this.ac == null) {
                    this.ad = true;
                    return a.toString();
                }
            }
            return this.ac.abbreviate(a, b);
        }
    }
    NumericAxisRenderer.$t = /*@__PURE__*/ markType(NumericAxisRenderer, 'NumericAxisRenderer', AxisRendererBase.$);
    return NumericAxisRenderer;
})();
/**
 * @hidden
 */
export let VerticalAxisLabelPanel = /*@__PURE__*/ (() => {
    class VerticalAxisLabelPanel extends AxisLabelPanelBase {
        constructor() {
            super(...arguments);
            this.di = 0;
            this.df = 0;
            this.dh = 0;
            this.dg = 0;
        }
        ae() {
            return new VerticalAxisLabelPanelView(this);
        }
        ch(a) {
            super.ch(a);
            this.c9 = a;
        }
        b6() {
            this.c9.a0();
        }
        bq() {
            return this.ad.bf != null ? this.ad.bf.angle : -90;
        }
        db() {
            let a = 0;
            let b = this.aj(this.ad.bf);
            if (b == 1) {
                a += this.bu();
            }
            let c = this.ah;
            if (c == 3 || c == 7) {
                a += this.ad.d0;
            }
            return a;
        }
        dd() {
            let a = 0;
            let b = this.aj(this.ad.bf);
            if (b == 2) {
                a += this.bu();
            }
            let c = this.ah;
            if (c == 2 || c == 6) {
                a += this.ad.d0;
            }
            return a;
        }
        de() {
            let a = (this.bd - this.db()) - this.dd();
            if (a < 0) {
                a = 0;
            }
            return a;
        }
        dc() {
            let a = ((this.de() - this.af.p()) - this.af.q());
            if (a < 0) {
                a = 0;
            }
            return a;
        }
        a5() {
            let a = new List$1(Rect.$, 0);
            this.aw = false;
            this.av = false;
            if (this.ag != null && this.ag.k() && this.bl() % 360 != 0) {
                this.av = true;
            }
            this.di = -1.7976931348623157E+308;
            this.df = -1.7976931348623157E+308;
            this.dh = -1.7976931348623157E+308;
            this.dg = -1.7976931348623157E+308;
            let b = this.af.p();
            let c = this.af.r();
            let d = this.af.q();
            let e = this.af.o();
            let f = this.db();
            let g = false;
            if (!isNaN_(this.be)) {
                this.di = Math.max(this.be, this.di);
                this.dh = Math.max(this.bf, this.dh);
            }
            for (let h = 0; h < this.bb.count; h++) {
                let i = this.bb._inner[h];
                let j = this.ba._inner[h].a;
                let k = this.bj(i);
                let l = this.bk(i);
                let m = k + c + e;
                let n = l + b + d;
                let o = this.c1.left + f;
                let p = this.ba._inner[h].c - m / 2;
                if (j) {
                    let q = this.be;
                    if ((isNaN_(this.be) || n > this.be || this.ba._inner[h].b) && !g) {
                        if (this.ba._inner[h].b) {
                            g = true;
                        }
                        this.ba._inner[h].b = false;
                        this.be = n;
                        this.bf = l;
                    }
                    this.di = Math.max(this.be, this.di);
                    this.df = Math.max(m, this.df);
                    this.dh = Math.max(this.bf, this.dh);
                    this.dg = Math.max(k, this.dg);
                }
                else {
                    this.di = Math.max(n, this.di);
                    this.df = Math.max(m, this.df);
                    this.dh = Math.max(l, this.dh);
                    this.dg = Math.max(k, this.dg);
                }
                let r = new Rect(0, o, p, n, m);
                a.add(r);
            }
            let s = 0;
            if (this.av) {
                s = this.bl() % 360;
                if (s < 0) {
                    s += 360;
                }
            }
            let t = this.ad.b8();
            if (!t) {
                this.dj(s, b, d);
            }
            else {
                this.af.ac();
            }
            if (this.av) {
                for (let u = 0; u < a.count; u++) {
                    let v = a._inner[u];
                    v.y = this.ba._inner[u].c - this.df / 2;
                    a._inner[u] = v;
                }
            }
            let w = false;
            if (!this.av && this.di <= this.bd) {
                w = true;
            }
            if (!w) {
                let x = this.c1.height;
                let y = this.de();
                let z = y;
                let aa = this.ba.count > 1 ? Math.abs(this.ba._inner[1].c - this.ba._inner[0].c) : x;
                let ab = Math.abs(Math.asin(aa / this.di) * (180 / Math.PI));
                let ac = (s >= ab && s <= 180 - ab) || (s - 180 >= ab && s - 180 <= 180 - ab);
                for (let ad = 0; ad < a.count; ad++) {
                    if (this.av) {
                        let ae = s * (Math.PI / 180);
                        let af = this.bv(this.bb._inner[ad]);
                        z = Math.min(y / Math.abs(Math.cos(ae)), af);
                        if (ac) {
                            let ag;
                            if (s > 0 && s < 90) {
                                ag = (Math.PI / 180) * (90 - s);
                            }
                            else if (s > 270 && s < 360) {
                                ag = (Math.PI / 180) * (s - 270);
                            }
                            else {
                                ag = 0;
                            }
                            z = aa / Math.cos(ag);
                        }
                    }
                    let ah = a._inner[ad];
                    ah.width = Math.min(ah.width, z);
                    a._inner[ad] = ah;
                    if (!(typeCast(TextBlock.$, this.bb._inner[ad]) !== null)) {
                        this.bb._inner[ad].width = z;
                    }
                    let ai = typeCast(TextBlock.$, this.bb._inner[ad]);
                    if (ai != null) {
                        let aj = this.b1(ad, ai, z, b, d);
                        if (!Base.equalsStatic(ai.al, aj)) {
                            ai.al = aj;
                            this.bb._inner[ad].width = z;
                        }
                    }
                }
                if (!t) {
                    this.dj(s, b, d);
                }
            }
            if (this.da()) {
                this.dk(a);
            }
            return a;
        }
        dj(a, b, c) {
            let d = a * (Math.PI / 180);
            let e = Math.abs(this.dh * Math.cos(d)) + Math.abs(this.dg * Math.sin(d));
            let f = this.bu();
            let g = (e + b + c) + (f) + this.ad.d0;
            this.bh = Math.max(this.ad.eu, g);
        }
        dk(a) {
            this.c9.a1(a, this.di);
        }
        cm(a, b) {
            let c = 0;
            let d = this.dg / 2;
            let e = new TransformGroup();
            let f = AngleSimplifier.a(this.bl());
            let g = ((() => {
                let $ret = new RotateTransform();
                $ret.j = f;
                $ret.k = c;
                $ret.l = d;
                return $ret;
            })());
            let h = 0;
            let i = 0;
            if (f != 0 && f != 360) {
                f -= 90;
                if (f > 0 && f < 180) {
                    g.k = this.dh;
                    h = -this.dh + this.dg / 2;
                    h = h + Math.sin(MathUtil.o(f - 180)) * (this.dg / 2);
                }
                else {
                    if (f >= 180) {
                        h = h - Math.cos(MathUtil.o(f)) * (this.dg / 2);
                    }
                    else {
                        h = h + Math.cos(MathUtil.o(f)) * (this.dg / 2);
                    }
                }
            }
            let j = ((() => {
                let $ret = new TranslateTransform();
                $ret.j = h;
                $ret.k = i;
                return $ret;
            })());
            e.j.add(g);
            e.j.add(j);
            a.j = e;
        }
        da() {
            return !this.aw && !this.av;
        }
        c0() {
            let a = this.aj(this.ad.bf);
            let b = this.bu();
            let c = this.ah;
            let d = 0;
            if (a == 1) {
                d += this.c1.left;
                if (c == 3 || c == 7) {
                    d += this.ad.d0;
                }
            }
            else {
                d = this.c1.right - b;
                if (c == 6 || c == 2) {
                    d -= this.ad.d0;
                }
            }
            let e = this.bs();
            let f = 0;
            let g = this.ad.bf == null ? 1 : this.ad.bf.verticalAlignment;
            if (g == 0) {
                f = this.c1.top;
            }
            else if (g == 2) {
                f = this.c1.bottom - e;
            }
            else {
                f = (this.c1.top + (this.c1.height / 2)) - (e / 2);
            }
            return new Rect(0, d, f, b, e);
        }
        aj(a) {
            if (a == null) {
                return this.ad.bi.aq(this.ad);
            }
            if (a.position == 0) {
                if (this.ad != null && this.ad.bi != null) {
                    return this.ad.bi.aq(this.ad);
                }
                return 1;
            }
            return a.position;
        }
        ai() {
            return 2;
        }
        ay(a) {
            return a == 2 || a == 3 || a == 6 || a == 7;
        }
        b9() {
            let a = this.af.au();
            this.ad.hk(a);
            if (this.ag != null && this.ag.visibility != 0) {
                return;
            }
            let b = this.ad.d0;
            if (b == 0) {
                return;
            }
            let c = this.a2();
            if (c == null) {
                return;
            }
            let d = this.c1.left;
            let e;
            let f = this.ah;
            if (f == 2 || f == 6) {
                d = this.c1.right;
                e = d - b;
            }
            else {
                e = d + b;
            }
            let g = this.af.b();
            for (let h of fromEnum(c)) {
                this.cc(a, h, d, e, this.c4, g);
            }
            if (!this.ab.contains(this.af.aw)) {
                this.ab.add(this.af.aw);
            }
        }
    }
    VerticalAxisLabelPanel.$t = /*@__PURE__*/ markType(VerticalAxisLabelPanel, 'VerticalAxisLabelPanel', AxisLabelPanelBase.$);
    return VerticalAxisLabelPanel;
})();
/**
 * @hidden
 */
export let ViewportUtils = /*@__PURE__*/ (() => {
    class ViewportUtils extends Base {
        static e(a, b, c, d) {
            if (!d.isEmpty) {
                let e = NumericScaler.ac;
                let f = d.left + d.width * (a - e.left) / e.width;
                f = (f - c.left) / c.width;
                return c.left + c.width * (f - b.left) / b.width;
            }
            return c.left + c.width * (a - b.left) / b.width;
        }
        static b(a, b, c, d) {
            if (!d.isEmpty) {
                let e = NumericScaler.ac;
                let f = b.left + b.width * (a - c.left) / c.width;
                f = (f * c.width) + c.left;
                f = ((f - d.left) * e.width / d.width) + e.left;
                return f;
            }
            return ((a - c.left) * b.width / c.width) + b.left;
        }
        static i(a, b, c, d) {
            if (!d.isEmpty) {
                let e = NumericScaler.ac;
                let f = d.top + d.height * (a - e.top) / e.height;
                f = (f - c.top) / c.height;
                return c.top + c.height * (f - b.top) / b.height;
            }
            return c.top + c.height * (a - b.top) / b.height;
        }
        static g(a, b, c, d) {
            if (!d.isEmpty) {
                let e = NumericScaler.ac;
                let f = b.top + b.height * (a - c.top) / c.height;
                f = (f * c.height) + c.top;
                f = ((f - d.top) * e.height / d.height) + e.top;
                return f;
            }
            return ((a - c.top) * b.height / c.height) + b.top;
        }
        static d(a, b, c, d) {
            let e = d;
            if (e.isEmpty) {
                e = c;
            }
            return e.width * a / b.width;
        }
        static a(a, b, c, d) {
            let e = d;
            if (e.isEmpty) {
                e = c;
            }
            return b.width * a / e.width;
        }
        static h(a, b, c, d) {
            let e = d;
            if (e.isEmpty) {
                e = c;
            }
            return e.height * a / b.height;
        }
        static f(a, b, c) {
            return c.width * a / b.width;
        }
        static c(a, b, c) {
            return b.width * a / c.width;
        }
        static j(a, b, c) {
            return c.height * a / b.height;
        }
    }
    ViewportUtils.$t = /*@__PURE__*/ markType(ViewportUtils, 'ViewportUtils');
    return ViewportUtils;
})();
/**
 * @hidden
 */
export let IHasCategoryAxis_$type = /*@__PURE__*/ new Type(null, 'IHasCategoryAxis');
/**
 * @hidden
 */
export let IHasCategoryModePreference_$type = /*@__PURE__*/ new Type(null, 'IHasCategoryModePreference', null, [IHasCategoryAxis_$type]);
/**
 * @hidden
 */
export let AutomaticSeriesManager = /*@__PURE__*/ (() => {
    class AutomaticSeriesManager extends Base {
        e(a) {
            return this.g.contains(a);
        }
        constructor(a) {
            super();
            this.g = new HashSet$1(AutomaticSeriesPurpose_$type, 0);
            this.c = null;
            this.f = false;
            this.a = null;
            this.a = new AutomaticSeriesRequestCollection();
            let b = this.a;
            b.collectionChanged = delegateCombine(b.collectionChanged, runOn(this, this.i));
            let c = a.series;
            this.c = c;
            c.collectionChanged = delegateCombine(c.collectionChanged, runOn(this, this.m));
            c.collectionResetting = delegateCombine(c.collectionResetting, runOn(this, this.n));
        }
        i(a, b) {
            this.j();
        }
        n(a, b) {
            this.j();
        }
        m(a, b) {
            this.j();
        }
        j() {
            if (this.f) {
                return;
            }
            this.f = true;
            try {
                this.k();
            }
            finally {
                this.f = false;
            }
        }
        k() {
            this.g.clear();
            let a = new Dictionary$2(Series.$, Number_$type, 0);
            let b = new Dictionary$2(Series.$, AutomaticSeriesRequest.$, 0);
            for (let c = 0; c < this.c.count; c++) {
                a.addItem(this.c._inner[c], c);
            }
            for (let d = 0; d < this.a.count; d++) {
                this.g.add_1(this.a._inner[d].a);
                b.addItem(this.a._inner[d].d, this.a._inner[d]);
            }
            let e = new List$1(Series.$, 0);
            let f = new List$1(AutomaticSeriesRequest.$, 0);
            let g = new List$1(AutomaticSeriesRequest.$, 0);
            for (let h = 0; h < this.a.count; h++) {
                if (!a.containsKey(this.a._inner[h].d)) {
                    f.add(this.a._inner[h]);
                }
            }
            for (let i = 0; i < this.c.count; i++) {
                if (this.c._inner[i].ey && !b.containsKey(this.c._inner[i])) {
                    e.add(this.c._inner[i]);
                }
                if (b.containsKey(this.c._inner[i]) && this.d(b.item(this.c._inner[i]), a, b)) {
                    e.add(this.c._inner[i]);
                    g.add(b.item(this.c._inner[i]));
                    f.add(b.item(this.c._inner[i]));
                }
            }
            for (let j = e.count - 1; j >= 0; j--) {
                let k = e._inner[j];
                let l = a.item(k);
                this.c.removeAt(l);
            }
            a.clear();
            for (let m = 0; m < this.c.count; m++) {
                a.addItem(this.c._inner[m], m);
            }
            for (let n = 0; n < f.count; n++) {
                f._inner[n].d.ey = true;
                let o = this.h(f._inner[n], a);
                this.c.insert(o, f._inner[n].d);
                a.item(f._inner[n].d, o);
                for (let p = o; p < this.c.count; p++) {
                    let q = this.c._inner[p];
                    if (a.containsKey(q)) {
                        a.item(q, p);
                    }
                }
            }
        }
        l(a) {
            for (let b = this.a.count - 1; b >= 0; b--) {
                if (this.a._inner[b].a == a) {
                    this.a.removeAt(b);
                }
            }
        }
        h(a, b) {
            if (a.f) {
                return 0;
            }
            if (a.e) {
                return this.c.count;
            }
            if (a.c != null) {
                if (!b.containsKey(a.c)) {
                    return this.c.count;
                }
                let c = b.item(a.c);
                return c;
            }
            if (a.b != null) {
                if (!b.containsKey(a.b)) {
                    return this.c.count;
                }
                let d = b.item(a.b);
                return d + 1;
            }
            return this.c.count;
        }
        d(a, b, c) {
            let d = b.item(a.d);
            if (a.f) {
                for (let e = d; e >= 0; e--) {
                    if (!c.containsKey(this.c._inner[e])) {
                        return true;
                    }
                }
            }
            if (a.e) {
                for (let f = d; f < this.c.count; f++) {
                    if (!c.containsKey(this.c._inner[f])) {
                        return true;
                    }
                }
            }
            if (a.c != null) {
                if (!b.containsKey(a.c)) {
                    return false;
                }
                let g = b.item(a.c);
                if (d != g - 1) {
                    return true;
                }
            }
            if (a.b != null) {
                if (!b.containsKey(a.b)) {
                    return false;
                }
                let h = b.item(a.b);
                if (d != h + 1) {
                    return true;
                }
            }
            return false;
        }
        get b() {
            return this.a;
        }
    }
    AutomaticSeriesManager.$t = /*@__PURE__*/ markType(AutomaticSeriesManager, 'AutomaticSeriesManager');
    return AutomaticSeriesManager;
})();
/**
 * @hidden
 */
export let AutomaticSeriesRequest = /*@__PURE__*/ (() => {
    class AutomaticSeriesRequest extends Base {
        constructor() {
            super(...arguments);
            this.a = 0;
            this.d = null;
            this.b = null;
            this.c = null;
            this.e = false;
            this.f = false;
        }
    }
    AutomaticSeriesRequest.$t = /*@__PURE__*/ markType(AutomaticSeriesRequest, 'AutomaticSeriesRequest');
    return AutomaticSeriesRequest;
})();
/**
 * @hidden
 */
export let AutomaticSeriesRequestCollection = /*@__PURE__*/ (() => {
    class AutomaticSeriesRequestCollection extends ObservableCollection$1 {
        constructor() {
            super(AutomaticSeriesRequest.$, 0);
        }
    }
    AutomaticSeriesRequestCollection.$t = /*@__PURE__*/ markType(AutomaticSeriesRequestCollection, 'AutomaticSeriesRequestCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(AutomaticSeriesRequest.$));
    return AutomaticSeriesRequestCollection;
})();
/**
 * @hidden
 */
export let ChartSelection = /*@__PURE__*/ (() => {
    class ChartSelection extends Base {
        constructor() {
            super(...arguments);
            this._item = null;
            this._series = null;
            this.b = null;
        }
        get item() {
            return this._item;
        }
        set item(a) {
            this._item = a;
        }
        get series() {
            return this._series;
        }
        set series(a) {
            this._series = a;
        }
        get c() {
            if (this.b == null && this.series != null) {
                this.b = this.series.cg();
            }
            return this.b;
        }
        set c(a) {
            this.b = a;
        }
        equals(a) {
            let b = typeCast(ChartSelection.$, a);
            if (b == null) {
                return false;
            }
            return b.series == this.series && b.item == this.item;
        }
        getHashCode() {
            let a = 31;
            if (this.item != null) {
                a ^= Base.getHashCodeStatic(this.item);
            }
            if (this.series != null) {
                a ^= Base.getHashCodeStatic(this.series);
            }
            return a;
        }
        g(a) {
            if (this.b != null && this.series == null) {
                let b = SeriesMatcherHelper.a(a, this.b);
                if (b != null && b.length > 0) {
                    this.series = b[0];
                }
            }
        }
    }
    ChartSelection.$t = /*@__PURE__*/ markType(ChartSelection, 'ChartSelection');
    return ChartSelection;
})();
/**
 * @hidden
 */
export let ChartSelectedItemCollection = /*@__PURE__*/ (() => {
    class ChartSelectedItemCollection extends ObservableCollection$1 {
        constructor() {
            super(ChartSelection.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    ChartSelectedItemCollection.$t = /*@__PURE__*/ markType(ChartSelectedItemCollection, 'ChartSelectedItemCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(ChartSelection.$));
    return ChartSelectedItemCollection;
})();
/**
 * @hidden
 */
export let SeriesMatcherHelper = /*@__PURE__*/ (() => {
    class SeriesMatcherHelper extends Base {
        static a(a, b) {
            let c = new List$1(Series.$, 0);
            a.n3((d) => {
                if (SeriesMatcherHelper.b(b, d)) {
                    c.add(d);
                }
            });
            return c.toArray();
        }
        static b(a, b) {
            if (a.b >= 0) {
                if (b.index == a.b) {
                    return true;
                }
            }
            if (a.e != null) {
                if (Base.equalsStatic(a.e, b.name)) {
                    return true;
                }
            }
            if (a.f != null) {
                if (Base.equalsStatic(a.f, b.title)) {
                    return true;
                }
            }
            if (a.d != null && a.c != null) {
                let c = a.d;
                if (!stringEndsWith(c, "MemberPath")) {
                    c += "MemberPath";
                }
                let d = b.mf(c);
                if (Base.equalsStatic(a.c, d)) {
                    return true;
                }
            }
            return false;
        }
    }
    SeriesMatcherHelper.$t = /*@__PURE__*/ markType(SeriesMatcherHelper, 'SeriesMatcherHelper');
    return SeriesMatcherHelper;
})();
/**
 * @hidden
 */
export let SeriesLayer = /*@__PURE__*/ (() => {
    class SeriesLayer extends DependencyObject {
        get source() {
            return this._source;
        }
        set source(a) {
            this._source = a;
        }
        get target() {
            return this._target;
        }
        set target(a) {
            this._target = a;
        }
        constructor() {
            super();
            this._source = null;
            this._target = null;
            this.z = null;
            this.n = null;
            this.u = new Dictionary$2(String_$type, Delegate_$type, 0);
            this.y = new Dictionary$2(String_$type, Stack$1.$.specialize(Boolean_$type), 0);
            this.p = false;
            this.aa = new HashSet$1(SeriesLayerPropertyOverlay.$, 0);
            this.ab = new HashSet$1(SeriesLayerPropertyOverlay.$, 0);
            this.v = new Dictionary$2(String_$type, List$1.$.specialize(SeriesLayerPropertyOverlay.$), 0);
            this.w = new Dictionary$2(String_$type, SeriesLayerPropertyOverlay.$, 0);
            this.x = new Dictionary$2(String_$type, SeriesLayerPropertyOverlay.$, 0);
            this.propertyChanged = null;
            this.q = false;
            this.l = new SeriesLayerPropertyOverlayCollection();
            this.o = false;
            this.z = new HashSet$1(String_$type, 0);
            this.z.add_1("FastItemsSource");
            let a = this.l;
            a.collectionResetting = delegateCombine(a.collectionResetting, runOn(this, this.al));
            let b = this.l;
            b.collectionChanged = delegateCombine(b.collectionChanged, runOn(this, this.ak));
        }
        ak(a, b) {
            if (b.oldItems != null) {
                for (let c = 0; c < b.oldItems.count; c++) {
                    let d = b.oldItems.item(c);
                    if (d == null) {
                        continue;
                    }
                    let e = d;
                    e.propertyUpdated = delegateRemove(e.propertyUpdated, runOn(this, this.av));
                    if (this.p && (this.aa.contains(e) || this.ab.contains(e))) {
                        this.aq(e);
                    }
                }
            }
            if (b.newItems != null) {
                for (let f = 0; f < b.newItems.count; f++) {
                    let g = b.newItems.item(f);
                    if (g == null) {
                        continue;
                    }
                    let h = g;
                    if (h.ad != null) {
                        if (h.r) {
                            this.x.item(h.aa, h);
                        }
                        else {
                            this.w.item(h.aa, h);
                        }
                    }
                    if (h.y != null) {
                        let i = h.y;
                        if (!h.q) {
                            i = Series.ny(i);
                        }
                        if (!this.v.containsKey(i)) {
                            this.v.addItem(i, new List$1(SeriesLayerPropertyOverlay.$, 0));
                        }
                        this.v.item(i).add(h);
                    }
                    h.propertyUpdated = delegateCombine(h.propertyUpdated, runOn(this, this.av));
                }
            }
            if (this.target != null && this.target.fw) {
                this.a3();
            }
            else {
                this.a5();
            }
        }
        au() {
            if (this.target != null) {
                this.target.ra();
            }
        }
        at() {
            if (this.target != null) {
                this.target.q8();
            }
        }
        get t() {
            return this.target != null && this.target.g5;
        }
        a3() {
            if (this.p) {
                for (let a of fromEnum(this.l)) {
                    if (!this.aa.contains(a) && !this.ab.contains(a)) {
                        this.a2(a, this.source, this.target);
                    }
                }
            }
        }
        a4() {
            if (this.p) {
                for (let a of fromEnum(this.l)) {
                    if (!this.aa.contains(a) && !this.ab.contains(a)) {
                        this.a2(a, this.source, null);
                    }
                }
            }
        }
        a5() {
            if (this.p) {
                for (let a of fromEnum(this.l)) {
                    if (!this.aa.contains(a) && !this.ab.contains(a)) {
                        this.a2(a, null, this.target);
                    }
                }
            }
        }
        a2(a, b, c) {
            if (a.p) {
                if (a.r && b != null) {
                    if (!this.aa.contains(a)) {
                        this.aa.add_1(a);
                        this.an(a, b);
                    }
                }
                else if (!a.r && c != null) {
                    if (!this.ab.contains(a)) {
                        this.ab.add_1(a);
                        this.an(a, c);
                    }
                }
            }
            else {
                if (a.r) {
                    this.aa.add_1(a);
                }
                else {
                    this.ab.add_1(a);
                }
            }
        }
        ah(a) {
            if (a == null) {
                return null;
            }
            if (this.source == null) {
                return null;
            }
            if (this.x.containsKey(a.name) && this.aa.contains(this.x.item(a.name))) {
                return this.x.item(a.name).w;
            }
            return this.source.c(a);
        }
        an(a, b) {
            if (b == null) {
                return;
            }
            let c = a.aa;
            let d = b.tr(c);
            if (d == null) {
                return;
            }
            let e = b.c(d);
            if (!a.r) {
                e = this.ah(d);
            }
            let f = this.ag(e, a, b);
            let g = this.af(a, e, f, b);
            this.ao(b, d, g);
        }
        ag(a, b, c) {
            let d = a;
            if (b.y != null) {
                let e = b.y;
                if (!b.q) {
                    e = Series.ny(b.y);
                }
                let f = c.tr(e);
                if (f != null) {
                    d = c.c(f);
                    if (!b.r) {
                        d = this.ah(f);
                    }
                }
            }
            return d;
        }
        ao(a, b, c) {
            if (a.f5(b.name) || a.f5("Actual" + b.name)) {
                this.ar(b.name, () => {
                    this.az(a, b);
                    a.h(b, c);
                    this.a0(a, b);
                });
            }
            else {
                this.az(a, b);
                a.h(b, c);
                this.a0(a, b);
            }
        }
        ar(a, b) {
            if (this.n == null) {
                this.n = this.source.cw.k();
            }
            if (!this.o) {
                this.o = true;
                this.n.enqueueAction(runOn(this, this.as));
            }
            this.u.item(a, b);
        }
        as() {
            this.o = false;
            let a = new List$1(Delegate_$type, 0);
            for (let b of fromEnum(this.u.values)) {
                a.add(b);
            }
            this.u.clear();
            for (let c = 0; c < a.count; c++) {
                let d = a._inner[c];
                d();
            }
        }
        az(a, b) {
            let c = b.name;
            let d = null;
            if (!this.y.containsKey(c)) {
                this.y.addItem(c, new Stack$1(Boolean_$type));
            }
            this.y.item(c).h(true);
        }
        a0(a, b) {
            let c = b.name;
            if (this.y.containsKey(c)) {
                this.y.item(c).e();
                if (this.y.item(c).f == 0) {
                    this.y.removeItem(c);
                }
            }
        }
        r(a, b) {
            if (this.y.containsKey(b.name) && this.y.item(b.name).d()) {
                return true;
            }
            return false;
        }
        af(a, b, c, d) {
            return a.t(b, c, d);
        }
        al(a, b) {
            for (let c = 0; c < this.l.count; c++) {
                let d = this.l._inner[c];
                if (d == null) {
                    continue;
                }
                d.propertyUpdated = delegateRemove(d.propertyUpdated, runOn(this, this.av));
                if (this.p && (this.aa.contains(d) || this.ab.contains(d))) {
                    this.aq(d);
                }
            }
        }
        av(a, b) {
            let c = a;
            if (b.propertyName == SeriesLayerPropertyOverlay.$$p[0]) {
                if (b.oldValue != null) {
                    let d = b.oldValue;
                    if (!c.q) {
                        d = Series.ny(d);
                    }
                    if (this.v.containsKey(d)) {
                        let e = this.v.item(d);
                        e.remove(c);
                        if (e.count == 0) {
                            this.v.removeItem(d);
                        }
                    }
                }
                if (b.newValue != null) {
                    let f = b.newValue;
                    if (!c.q) {
                        f = Series.ny(f);
                    }
                    if (!this.v.containsKey(f)) {
                        this.v.addItem(f, new List$1(SeriesLayerPropertyOverlay.$, 0));
                    }
                    this.v.item(f).add(c);
                }
            }
            if (this.aa.contains(c) || this.ab.contains(c)) {
                this.a2(c, this.source, this.target);
            }
        }
        ax(a, b, c) {
            this.aw(a, b, c);
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
        }
        am(a, b) {
            this.source = a;
            this.target = b;
            this.p = true;
            this.a5();
            let c = this.target;
            c.renderValid = delegateCombine(c.renderValid, runOn(this, this.a1));
            a.propertyUpdated = delegateCombine(a.propertyUpdated, runOn(this, this.ay));
        }
        ay(a, b) {
            if (this.p) {
                if (!this.source.gn(b.propertyName)) {
                    let c = this.source.tr(b.propertyName);
                    if (c != null) {
                        this.ai(this.source, this.target, c, b.newValue);
                    }
                }
            }
        }
        a1(a, b) {
            if (this.source == null || this.source.f3()) {
                return;
            }
            this.a4();
            if (this.target != null) {
                let c = this.target;
                c.renderValid = delegateRemove(c.renderValid, runOn(this, this.a1));
            }
        }
        ap(a) {
            let b = this.source;
            b.propertyUpdated = delegateRemove(b.propertyUpdated, runOn(this, this.ay));
            this.p = false;
            let c = new List$1(SeriesLayerPropertyOverlay.$, 1, this.ab);
            c.o(this.aa);
            for (let d of fromEnum(c)) {
                this.aq(d);
            }
        }
        aq(a) {
            if (a.y != null) {
                if (this.v.containsKey(a.y)) {
                    let b = this.v.item(a.y);
                    b.remove(a);
                    if (b.count == 0) {
                        this.v.removeItem(a.y);
                    }
                }
            }
            if (a.r) {
                if (this.x.containsKey(a.aa)) {
                    this.x.removeItem(a.aa);
                }
            }
            else {
                if (this.w.containsKey(a.aa)) {
                    this.w.removeItem(a.aa);
                }
            }
            if (this.aa.contains(a) || this.ab.contains(a)) {
                if (this.aa.contains(a)) {
                    this.aa.remove(a);
                }
                if (this.ab.contains(a)) {
                    this.ab.remove(a);
                }
                if (a.r) {
                    if (this.source == null) {
                        return;
                    }
                    let c = this.source.tr(a.aa);
                    if (c == null) {
                        return;
                    }
                    this.ao(this.source, c, a.w);
                }
            }
        }
        aw(a, b, c) {
            this.q = true;
        }
        ai(a, b, c, d) {
            let e = d;
            if (this.r(a, c)) {
                return this.ah(c);
            }
            let f = false;
            if (this.s(a, b, c)) {
                f = true;
            }
            if (this.v.containsKey(c.name)) {
                if (this.p) {
                    let g = this.v.item(c.name);
                    for (let h of fromEnum(g)) {
                        if (h.y != null) {
                            let i = h.ad;
                            if (!h.q) {
                                i = Series.ny(i);
                            }
                            let j = a.tr(i);
                            let k = a.c(j);
                            k = this.ad(a, b, j, k);
                            if (h.r) {
                                if (!a.gn(c.name)) {
                                    let l = this.ae(a, b, j, k);
                                    this.az(a, c);
                                    this.ao(a, j, l);
                                    this.a0(a, c);
                                }
                            }
                            else {
                                b.h(j, k);
                            }
                        }
                    }
                }
            }
            if (!f) {
                d = this.ad(a, b, c, d);
                b.h(c, d);
            }
            return e;
        }
        s(a, b, c) {
            if (this.z.contains(c.name)) {
                return true;
            }
            if (c.name != null && stringStartsWith(c.name, "Actual")) {
                return true;
            }
            return false;
        }
        ad(a, b, c, d) {
            if (this.w.containsKey(c.name)) {
                let e = false;
                if (this.source == null) {
                    this.source = a;
                    e = true;
                }
                let f = this.w.item(c.name);
                let g = this.ag(d, f, a);
                d = this.w.item(c.name).t(d, g, a);
                if (e) {
                    this.source = null;
                }
            }
            return d;
        }
        ae(a, b, c, d) {
            if (this.p && this.x.containsKey(c.name)) {
                let e = false;
                if (this.source == null) {
                    this.source = a;
                    e = true;
                }
                if (this.r(a, c)) {
                    d = this.ah(c);
                }
                let f = this.x.item(c.name);
                let g = this.ag(d, f, a);
                d = this.x.item(c.name).t(d, g, a);
                if (e) {
                    this.source = null;
                }
            }
            return d;
        }
        get m() {
            return this.l;
        }
    }
    SeriesLayer.$t = /*@__PURE__*/ markType(SeriesLayer, 'SeriesLayer', DependencyObject.$, [INotifyPropertyChanged_$type]);
    SeriesLayer.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, SeriesLayer, 'ax', ['ZIndex:ac:a6', [1, 0]]);
    return SeriesLayer;
})();
/**
 * @hidden
 */
export let SeriesLayerCollection = /*@__PURE__*/ (() => {
    class SeriesLayerCollection extends ObservableCollection$1 {
        constructor() {
            super(SeriesLayer.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    SeriesLayerCollection.$t = /*@__PURE__*/ markType(SeriesLayerCollection, 'SeriesLayerCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(SeriesLayer.$));
    return SeriesLayerCollection;
})();
/**
 * @hidden
 */
export let SeriesLayerManager = /*@__PURE__*/ (() => {
    class SeriesLayerManager extends Base {
        constructor() {
            super(...arguments);
            this.a = null;
        }
        b(a, b) {
            if (b.propertyName == "ZIndex") {
                this.n(this.a);
            }
        }
        i(a, b) {
            if (b.oldItems != null) {
                for (let c = 0; c < b.oldItems.count; c++) {
                    let d = b.oldItems.item(c);
                    if (d == null) {
                        continue;
                    }
                    let e = d;
                    e.propertyChanged = delegateRemove(e.propertyChanged, runOn(this, this.b));
                }
            }
            if (b.newItems != null) {
                for (let f = 0; f < b.newItems.count; f++) {
                    let g = b.newItems.item(f);
                    if (g == null) {
                        continue;
                    }
                    let h = g;
                    h.propertyChanged = delegateCombine(h.propertyChanged, runOn(this, this.b));
                }
            }
            this.n(a);
        }
        n(a) {
            let b = new SeriesLayerCollection();
            for (let c of fromEnum(a.cb)) {
                b.add(c);
            }
            for (let d of fromEnum(a.cc)) {
                b.add(d);
            }
            let e = (f, g) => {
                if (f.ac < g.ac) {
                    return -1;
                }
                else if (f.ac > g.ac) {
                    return 1;
                }
                else {
                    return 0;
                }
            };
            ArrayExtension.quickSort(b, (f, g) => e(f, g));
            this.m(b, a.actualLayers);
        }
        m(a, b) {
            let c = new List$1(Number_$type, 0);
            let d = 0;
            for (let e = 0; e < b.count; e++) {
                if (b._inner[e] == null) {
                    c.add(e);
                    continue;
                }
                if (d > a.count - 1) {
                    c.add(e);
                    continue;
                }
                if (Base.equalsStatic(b._inner[e], a._inner[d])) {
                    d++;
                    continue;
                }
                b.insert(e, a._inner[d]);
                d++;
            }
            for (let f = c.count - 1; f >= 0; f--) {
                b.removeAt(f);
            }
            for (; d < a.count; d++) {
                b.add(a._inner[d]);
            }
        }
        h(a, b, c) {
            this.i(a, c);
        }
        j(a, b, c) {
            for (let d of fromEnum(b)) {
                d.propertyChanged = delegateRemove(d.propertyChanged, runOn(this, this.b));
            }
        }
        e(a, b, c) {
            this.i(a, c);
        }
        f(a, b, c) {
            for (let d of fromEnum(b)) {
                d.propertyChanged = delegateRemove(d.propertyChanged, runOn(this, this.b));
            }
        }
        c(a, b, c) {
            switch (c.action) {
                case 0:
                    if (c.newItems != null) {
                        for (let d = 0; d < c.newItems.count; d++) {
                            let e = c.newItems.item(d);
                            this.k(d + c.newStartingIndex, e);
                        }
                    }
                    break;
                case 1:
                    if (c.oldItems != null) {
                        for (let f = 0; f < c.oldItems.count; f++) {
                            let g = c.oldItems.item(f);
                            this.l(g, c.oldStartingIndex);
                        }
                    }
                    break;
                case 2:
                    if (c.oldItems != null) {
                        for (let h = 0; h < c.oldItems.count; h++) {
                            let i = c.oldItems.item(h);
                            this.l(i, c.oldStartingIndex);
                        }
                    }
                    if (c.newItems != null) {
                        for (let j = 0; j < c.newItems.count; j++) {
                            let k = c.newItems.item(j);
                            this.k(j + c.newStartingIndex, k);
                        }
                    }
                    break;
                case 4:
                    this.g();
                    let l = 0;
                    for (let m of fromEnum(b)) {
                        let n = m;
                        this.k(l, n);
                        l++;
                    }
                    break;
            }
        }
        g() {
            for (let a of fromEnum(this.a.actualLayers)) {
                this.a.pj(a);
            }
        }
        l(a, b) {
            this.a.pj(a);
        }
        k(a, b) {
            this.a.bn(a, b);
        }
        d(a, b, c) {
            this.g();
        }
    }
    SeriesLayerManager.$t = /*@__PURE__*/ markType(SeriesLayerManager, 'SeriesLayerManager');
    return SeriesLayerManager;
})();
/**
 * @hidden
 */
export let SeriesLayerPropertyOverlay = /*@__PURE__*/ (() => {
    class SeriesLayerPropertyOverlay extends DependencyObject {
        constructor() {
            super(...arguments);
            this.o = false;
            this.k = null;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.q = false;
            this.n = false;
            this.m = false;
            this.w = null;
            this.s = null;
            this.valueResolving = null;
        }
        ah(a, b, c) {
            this.ag(a, b, c);
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
        ag(a, b, c) {
            this.n = true;
            switch (a) {
                case SeriesLayerPropertyOverlay.$$p[4]:
                    this.m = true;
                    break;
                default: break;
            }
        }
        t(a, b, c) {
            this.w = a;
            let d = this.x;
            if (a == null && this.y != null) {
                a = b;
                if (this.x == null) {
                    d = b;
                }
            }
            if (d == this.s && this.s != null) {
                return d;
            }
            if (this.valueResolving != null) {
                let e = a;
                let f = ((() => {
                    let $ret = new SeriesLayerPropertyOverlayValueResolvingEventArgs();
                    $ret.value = e;
                    return $ret;
                })());
                if (!this.q) {
                    this.ai(f, c);
                    d = f.value;
                }
                {
                    this.valueResolving(this, f);
                }
                if (f.b) {
                    if (!this.q) {
                        this.aj(f, c);
                    }
                    d = f.value;
                }
            }
            else {
                if (!this.q) {
                    d = this.v(d, c);
                }
            }
            this.s = d;
            return d;
        }
        aj(a, b) {
            let c = b.tr(this.aa);
            if (c == null) {
                return;
            }
            let d = PlatformAPIHelper.n(c.propertyType, a.value);
            a.value = d;
            a.b = false;
        }
        v(a, b) {
            let c = b.tr(this.aa);
            if (c == null) {
                return a;
            }
            let d = PlatformAPIHelper.n(c.propertyType, a);
            a = d;
            return a;
        }
        ai(a, b) {
            let c = b.tr(this.aa);
            if (c == null) {
                return;
            }
            let d = PlatformAPIHelper.f(c.propertyType, a.value);
            a.value = d;
            a.b = false;
        }
        u(a, b) {
            let c = b.tr(this.aa);
            if (c == null) {
                return a;
            }
            let d = PlatformAPIHelper.f(c.propertyType, a);
            a = d;
            return a;
        }
        get aa() {
            if (!this.q) {
                return Series.ny(this.ad);
            }
            return this.ad;
        }
    }
    SeriesLayerPropertyOverlay.$t = /*@__PURE__*/ markType(SeriesLayerPropertyOverlay, 'SeriesLayerPropertyOverlay', DependencyObject.$, [INotifyPropertyChanged_$type]);
    SeriesLayerPropertyOverlay.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, SeriesLayerPropertyOverlay, 'ah', ['CurrentValuePropertyName:y:ak', [2, null], 'IsAlwaysApplied:p:al', [0, false], 'IsSourceOverlay:r:am', [0, false], 'PropertyName:ad:an', [2, null], 'Value:x:ao', [4]]);
    return SeriesLayerPropertyOverlay;
})();
/**
 * @hidden
 */
export let SeriesLayerPropertyOverlayCollection = /*@__PURE__*/ (() => {
    class SeriesLayerPropertyOverlayCollection extends ObservableCollection$1 {
        constructor() {
            super(SeriesLayerPropertyOverlay.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    SeriesLayerPropertyOverlayCollection.$t = /*@__PURE__*/ markType(SeriesLayerPropertyOverlayCollection, 'SeriesLayerPropertyOverlayCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(SeriesLayerPropertyOverlay.$));
    return SeriesLayerPropertyOverlayCollection;
})();
/**
 * @hidden
 */
export let IDataChartToolbarProvider_$type = /*@__PURE__*/ new Type(null, 'IDataChartToolbarProvider');
/**
 * @hidden
 */
export let ISeriesViewerScrollbarManager_$type = /*@__PURE__*/ new Type(null, 'ISeriesViewerScrollbarManager');
/**
 * @hidden
 */
export let ISeriesInteractionManager_$type = /*@__PURE__*/ new Type(null, 'ISeriesInteractionManager');
/**
 * @hidden
 */
export let ISeriesViewerInteractionManager_$type = /*@__PURE__*/ new Type(null, 'ISeriesViewerInteractionManager');
/**
 * @hidden
 */
export let IDataChartVisualDataManager_$type = /*@__PURE__*/ new Type(null, 'IDataChartVisualDataManager');
/**
 * @hidden
 */
export let IAxisVisualDataManager_$type = /*@__PURE__*/ new Type(null, 'IAxisVisualDataManager');
/**
 * @hidden
 */
export let ISeriesVisualDataManager_$type = /*@__PURE__*/ new Type(null, 'ISeriesVisualDataManager');
/**
 * @hidden
 */
export let XamDataChart = /*@__PURE__*/ (() => {
    class XamDataChart extends SeriesViewer {
        get XSRP() {
            if (this._xsr == null) {
                this._xsr = new SRProvider(this.c9.j.ae);
            }
            return this._xsr;
        }
        get xd() {
            if (this.xc == null) {
                this.xc = DVContainer.instance.createInstance(IDataChartVisualDataManager_$type, () => this.XSRP.q);
            }
            return this.xc;
        }
        static staticInit() {
            XamDataChart.yu = -1.7976931348623157E+308;
            XamDataChart.yt = 1.7976931348623157E+308;
        }
        static y6(a) {
            if (a.dc == null) {
                return -1;
            }
            if (!a.fh) {
                return -1;
            }
            let b = XamDataChartView.aw(a);
            if (b.count == 0) {
                return -1;
            }
            let c = -1;
            for (let d = 0; d < b.count; d++) {
                c = Math.max(c, b._inner[d].index);
            }
            let e = c + 1;
            if (a.isFragment) {
                e = a.j3();
                if (e == -1) {
                    return -1;
                }
                let f = a.bq();
                e = f.index + e;
            }
            if (a.bo != null) {
                e = a.j7() + a.bo.index;
                if (e == -1) {
                    return -1;
                }
            }
            return e;
        }
        constructor() {
            super();
            this._xsr = null;
            this.xc = null;
            this.yd = 1;
            this.ye = 1;
            this.xw = false;
            this.x0 = false;
            this.xz = false;
            this.yf = 0;
            this.yg = 0;
            this.yx = NaN;
            this.yy = NaN;
            this.w7 = new AxisCollection();
            this.axisRangeChanged = null;
            this.xl = null;
            this.xo = false;
            this.ya = 0;
            this.yc = 0;
            this.yb = 0;
            this.x9 = 0;
            this.yi = NaN;
            this.yk = NaN;
            this.yj = NaN;
            this.yh = NaN;
            this.ab = XamDataChart.$;
            this.xz = true;
            let a = this.axes;
            a.collectionChanged = delegateCombine(a.collectionChanged, runOn(this, this.z4));
            let b = this.axes;
            b.collectionResetting = delegateCombine(b.collectionResetting, runOn(this, this.z5));
        }
        qq(a, b, c, d) {
            super.qq(a, b, c, d);
            switch (b) {
                case XamDataChart.$$p[23]:
                    this.yp = this.y4;
                    break;
                case XamDataChart.$$p[24]:
                    this.yq = this.y5;
                    break;
                case "ActualWindowScaleHorizontal":
                case "ActualWindowScaleVertical":
                    if (!this.gc) {
                        this.r4(this.hu(), this.hv());
                    }
                    break;
                case XamDataChart.$$p[8]:
                    this.c9.fr(d);
                    {
                        for (let e of fromEnum(this.axes)) {
                            e.ia();
                        }
                    }
                    break;
                case XamDataChart.$$p[9]:
                    this.xv = this.xu;
                    break;
                case XamDataChart.$$p[22]:
                    this.xy = this.x7;
                    break;
                case XamDataChart.$$p[11]:
                case XamDataChart.$$p[13]:
                    this.r0();
                    break;
                case XamDataChart.$$p[0]:
                case XamDataChart.$$p[17]:
                    if (c != d) {
                        for (let f of fromEnum(this.axes)) {
                            f.cq = true;
                            f.ia();
                        }
                    }
                    break;
                case XamDataChart.$$p[7]:
                case XamDataChart.$$p[5]:
                case XamDataChart.$$p[6]:
                    for (let g of fromEnum(this.axes)) {
                        g.im();
                    }
                    break;
                case XamDataChart.$$p[4]:
                    this.z8();
                    break;
            }
        }
        q8() {
            super.q8();
            if (this.w6 == 1 || this.w6 == 2) {
                this.aac();
            }
        }
        o4() {
            super.o4();
            if (this.xp && this.w6 != 0) {
                if (!this.x6) {
                    this.aac();
                }
            }
        }
        ot(a, b) {
            super.ot(a, b);
            if (this.xp && this.w6 == 2) {
                if (!a.isEmpty && !b.isEmpty) {
                    if (Math.abs(a.width - b.width) > 1E-10) {
                        if (!this.x6) {
                            this.aac();
                        }
                    }
                }
            }
        }
        oz() {
            super.oz();
            if (this.w9 == 1) {
                this.z8();
            }
        }
        aad() {
            this.z8();
        }
        z8() {
            let a = this.aa8();
            this.xo = false;
            if (!isNaN_(this.y0)) {
                this.ym = this.y0;
            }
            else {
                this.ym = a.left;
            }
            if (!isNaN_(this.y2)) {
                this.yo = this.y2;
            }
            else {
                this.yo = a.top;
            }
            if (!isNaN_(this.y1)) {
                this.yn = this.y1;
            }
            else {
                this.yn = a.right;
            }
            if (!isNaN_(this.yz)) {
                this.yl = this.yz;
            }
            else {
                this.yl = a.bottom;
            }
            this.wl = this.wj(this.wz);
            if (this.xo) {
                this.xo = false;
                for (let b of fromEnum(this.axes)) {
                    b.cq = true;
                    b.ia();
                }
                for (let c of fromEnum(this.series)) {
                    c.ru(false);
                }
            }
        }
        aa8() {
            this.aaf();
            switch (this.w9) {
                case 1:
                    let a = this.aa9();
                    return a;
                default: return new Thickness(1, 0, 0, 0, 0);
            }
        }
        aaf() {
            this.b0 = this.xf();
            this.b2 = this.xi();
        }
        xi() {
            let a = 1;
            for (let b of fromEnum(this.series)) {
                let c = b.cm();
                a = this.xh(a, c);
            }
            return a;
        }
        xh(a, b) {
            switch (a) {
                case 2: return 2;
                case 4:
                    if (b == 2 || b == 3) {
                        return 2;
                    }
                    return a;
                case 3:
                    if (b == 2 || b == 4) {
                        return 2;
                    }
                    return a;
                case 1: return b;
            }
            return a;
        }
        xf() {
            let a = 1;
            for (let b of fromEnum(this.series)) {
                let c = b.cl();
                a = this.xe(a, c);
            }
            return a;
        }
        xe(a, b) {
            switch (a) {
                case 2: return 2;
                case 4:
                    if (b == 2 || b == 3) {
                        return 2;
                    }
                    return a;
                case 3:
                    if (b == 2 || b == 4) {
                        return 2;
                    }
                    return a;
                case 1: return b;
            }
            return a;
        }
        aa9() {
            let a = new Thickness(1, 0, 0, 0, 0);
            for (let b = 0; b < this.series.count; b++) {
                let c = this.series._inner[b];
                let d = c.wz();
                a = new Thickness(1, Math.max(d.left, a.left), Math.max(d.top, a.top), Math.max(d.right, a.right), Math.max(d.bottom, a.bottom));
            }
            return a;
        }
        aba(a, b) {
            let c = new Thickness(1, 0, 0, 0, 0);
            for (let d = 0; d < this.series.count; d++) {
                let e = this.series._inner[d];
                let f = e.w1(a, b);
                c = new Thickness(1, Math.max(f.left, c.left), Math.max(f.top, c.top), Math.max(f.right, c.right), Math.max(f.bottom, c.bottom));
            }
            return c;
        }
        get_ex() {
            return this.w9 == 1;
        }
        hu() {
            return this.yp;
        }
        hv() {
            return this.yq;
        }
        rt() {
            super.rt();
            this.yp = this.wh.width;
            this.yq = this.wh.height;
        }
        get yp() {
            return this.yd;
        }
        set yp(a) {
            let b = this.yd;
            this.yd = a;
            this.qv("ActualWindowScaleHorizontal", b, this.yd);
        }
        get yq() {
            return this.ye;
        }
        set yq(a) {
            let b = this.ye;
            this.ye = a;
            this.qv("ActualWindowScaleVertical", b, this.ye);
        }
        fl() {
            return this.xv;
        }
        fm() {
            return this.xy;
        }
        get xp() {
            return this.x1 || this.x4;
        }
        get_fu() {
            return this.xq;
        }
        get xq() {
            return this.x5 || (this.ft && this.w6 != 0);
        }
        get_ft() {
            return this.x4;
        }
        get_fs() {
            return this.x1;
        }
        aac() {
            this.xw = false;
            this.x0 = true;
            this.xz = true;
            for (let a = 0; a < this.axes.count; a++) {
                this.axes._inner[a].cq = true;
                this.axes._inner[a].ia();
            }
        }
        aab() {
            this.xw = false;
            this.xz = true;
            for (let a = 0; a < this.axes.count; a++) {
                this.axes._inner[a].cq = true;
                this.axes._inner[a].ia();
            }
        }
        aaa(a, b, c, d) {
            if (a.ad == null) {
                return;
            }
            if (a.ad.cq || a.ad.kh.isEmpty) {
                return;
            }
            let e = false;
            for (let f = 0; f < this.axes.count; f++) {
                let g = this.axes._inner[f].aw.bh;
                this.axes._inner[f].aw.ca();
                if (this.axes._inner[f].aw.bh != g) {
                    e = true;
                }
            }
            if (e) {
                return;
            }
            if (isNaN_(this.yx)) {
                this.yx = this.c9.a4;
                this.yy = this.c9.a5;
            }
            let h = false;
            let i = false;
            let j = 0;
            if (a.au) {
                let k = this.xz;
                if (this.x4 && this.xz) {
                    j = this.y3(a, b, c, d);
                    this.xz = false;
                    if (a.bl() != j) {
                        if (j == 0 && a.ad.b4) {
                            if (k) {
                                this.x0 = true;
                                a.ad.id();
                                h = true;
                                i = true;
                            }
                        }
                        else {
                            if ((j > a.bl()) || k) {
                                this.x0 = true;
                                a.ad.ij(j);
                                h = true;
                                i = true;
                            }
                        }
                    }
                }
            }
            this.ei = h;
            if (a.bl() != 0 || j != 0 || h) {
                let l = a.bl();
                let m = c.left + c.width / 2;
                let n = d.left + d.width / 2;
                if (a.av) {
                    m = c.left;
                    n = d.left;
                }
                if (l == 0) {
                    m = m - a.c3.width / 2;
                    n = n - a.c3.width / 2;
                }
                let o = a.cz(new Rect(0, m, c.top, a.c3.width, a.c3.height), l);
                let p = a.cz(new Rect(0, n, d.top, a.c3.width, a.c3.height), l);
                c = o;
                d = p;
            }
            let q = false;
            if (this.x0) {
                this.x0 = false;
                q = true;
            }
            this.xw = true;
            let r = 0;
            let s = 0;
            let t = 0;
            let u = c.left + t;
            let v = d.right + t;
            let w = 0;
            w = this.wz.right + this.c9.a5;
            if (u < 0) {
                r = -u;
                r += this.yr;
            }
            if (v > w) {
                s = v - w;
                s += this.yr;
            }
            if (q) {
                if (u > 0) {
                    r = -u;
                    r += this.yr;
                }
                if (v < w) {
                    s = -(w - v);
                    s += this.yr;
                }
            }
            let x = false;
            let y = false;
            if (r != 0 || s != 0) {
                x = true;
                this.yf = this.yf + r;
                this.yg = this.yg + s;
                if (this.yf > this.ys) {
                    this.yf = this.ys;
                    y = true;
                }
                if (this.yg > this.ys) {
                    this.yg = this.ys;
                    y = true;
                }
                if (this.yf < 0) {
                    this.yf = 0;
                    y = true;
                }
                if (this.yg < 0) {
                    this.yg = 0;
                    y = true;
                }
            }
            else {
                if (this.ei) {
                    this.z7();
                }
                return;
            }
            this.gb = true;
            this.h4 = this.yx + this.yf;
            this.h9 = this.yy + this.yg;
            this.gb = false;
            this.fq = x;
            if (y) {
                if (q && (this.fq || this.ei)) {
                    this.z7();
                }
                return;
            }
            if (this.fq || this.ei) {
                this.z7();
            }
        }
        y3(a, b, c, d) {
            let e = this.yv(-1, a, b, c, d);
            let f = a.bl();
            if (e < f) {
                let g = c.left + c.width / 2;
                let h = d.left + d.width / 2;
                if (a.av) {
                    g = c.left;
                    h = d.left;
                }
                let i = a.cz(new Rect(0, g, c.top, a.c3.width, a.c3.height), e);
                let j = a.cz(new Rect(0, h, d.top, a.c3.width, a.c3.height), e);
                if (e == 0) {
                    i = new Rect(0, g - a.c3.width / 2, c.top, a.c3.width, a.c3.height);
                    j = new Rect(0, h - a.c3.width / 2, d.top, a.c3.width, a.c3.height);
                }
                let k = a.cz(new Rect(0, g, c.top, a.c3.width, a.c3.height), f);
                let l = a.cz(new Rect(0, h, d.top, a.c3.width, a.c3.height), f);
                let m = j.right - l.right;
                let n = 0;
                let o = 0;
                o = this.wz.right + this.c9.a5;
                let p = i.left + n;
                let q = j.right + n;
                let r = 0;
                let s = 0;
                if (p < 0) {
                    r = -p;
                    r += this.yr;
                }
                if (q > o) {
                    s = q - o;
                    s += this.yr;
                }
                let t = false;
                if (this.x0 || this.xz) {
                    t = true;
                }
                if (t) {
                    if (p > 0) {
                        r = -p;
                        r += this.yr;
                    }
                    if (q < o) {
                        s = -(o - q);
                        s += this.yr;
                    }
                }
                let u = false;
                let v = false;
                let w = 0;
                let x = 0;
                if (r != 0 || s != 0) {
                    v = true;
                    w = this.yf + r;
                    x = this.yg + s;
                    if (w > this.ys) {
                        w = this.ys;
                        u = true;
                    }
                    if (x > this.ys) {
                        x = this.ys;
                        u = true;
                    }
                    if (w < 0) {
                        w = 0;
                        u = true;
                    }
                    if (x < 0) {
                        x = 0;
                        u = true;
                    }
                }
                let y = this.c9.a4;
                let z = this.c9.a5;
                let aa = new Thickness(1, this.yx + w, 0, this.yy + x, 0);
                let ab = (aa.left - y) + (aa.right - z);
                let ac = a.ad.kb().width;
                let ad = ac - ab;
                let ae = ad / ac;
                let af = a.bn() * ae;
                let ag = this.yv(af, a, b, c, d);
                if (ag == e) {
                    return e;
                }
                else {
                    return f;
                }
            }
            return e;
        }
        yv(a, b, c, d, e) {
            let f = b.c3;
            let g = b.bn();
            if (a < 0) {
            }
            if (a > 0) {
                g = a;
            }
            if (f.width < g) {
                return 0;
            }
            let h = 45;
            let i = new Rect(0, 0, f.top, f.width, f.height);
            let j = new Rect(0, g, f.top, f.width, f.height);
            let k = b.ac(i, h);
            let l = b.ac(j, h);
            let m = true;
            for (let n = 0; n < k.length; n++) {
                if (PolygonUtil.a(l, k[n])) {
                    m = false;
                    break;
                }
            }
            if (!m) {
                h = 90;
            }
            return h;
        }
        z7() {
            for (let a = 0; a < this.axes.count; a++) {
                this.axes._inner[a].cq = true;
                this.axes._inner[a].ib(false);
            }
            this.n0(true, false, false);
            this.xw = false;
            for (let b = 0; b < this.axes.count; b++) {
                this.axes._inner[b].cq = true;
                this.axes._inner[b].ib(false);
            }
            this.n0(true, false, false);
        }
        get axes() {
            return this.w7;
        }
        z4(a, b) {
            if (b.oldItems != null) {
                for (let c of fromEn(b.oldItems)) {
                    if (c != null) {
                        c.bo = null;
                        c.bi = null;
                        this.rc(c);
                        this.c9.dw(c);
                        c.rangeChanged = delegateRemove(c.rangeChanged, runOn(this, this.z6));
                        this.c9.dx(c);
                        if (c.df != null) {
                            for (let d of fromEnum(c.db())) {
                                d.ru(false);
                            }
                        }
                    }
                }
                if (this.axes.count == 0) {
                    this.rh();
                }
            }
            if (b.newItems != null) {
                for (let e of fromEn(b.newItems)) {
                    if (e != null) {
                        this.rw(e);
                        e.bo = this.actualSyncLink;
                        e.bi = this;
                        e.a5.a2();
                        this.c9.bo(e);
                        e.rangeChanged = delegateCombine(e.rangeChanged, runOn(this, this.z6));
                        this.c9.bl(e);
                    }
                }
            }
            this.oq();
            if (!this.x6 && this.fu) {
                this.q8();
            }
        }
        z5(a, b) {
            let c = new List$1(Series.$, 0);
            for (let d of fromEnum(this.axes)) {
                if (d.df != null) {
                    for (let e of fromEnum(d.db())) {
                        if (!c.contains(e)) {
                            c.add(e);
                        }
                    }
                }
                d.bo = null;
                d.bi = null;
                this.rc(d);
                this.c9.dw(d);
                d.rangeChanged = delegateRemove(d.rangeChanged, runOn(this, this.z6));
                this.c9.dx(d);
                this.rh();
            }
            for (let f of fromEnum(this.series)) {
                if (!c.contains(f)) {
                    c.add(f);
                }
            }
            for (let g of fromEnum(c)) {
                g.ru(false);
            }
        }
        z6(a, b) {
            let c = typeCast(Axis.$, a);
            if (c == null) {
                return;
            }
            this.oq();
            if (this.axisRangeChanged != null) {
                this.axisRangeChanged(this, new ChartAxisRangeChangedEventArgs(this, c, b.oldMinimumValue, b.minimumValue, b.oldMaximumValue, b.maximumValue));
            }
            if (c.aj != null) {
                c.aj.h7();
            }
            c.h7();
            let d = this.ej;
            if (typeCast(CategoryAxisBase.$, c) !== null) {
                d = true;
            }
            for (let e of fromEnum(c.db())) {
                e.g1 = true;
                this.oq();
                e.ru(d);
            }
            if (c.bi != null) {
                for (let f of fromEnum(c.bi.series)) {
                    XamDataChart.z9(c, d, f);
                }
            }
            for (let g of fromEnum(this.axes)) {
                if (g != c && g.aj != null && g.aj == c) {
                    g.h7();
                }
            }
        }
        static z9(a, b, c) {
        }
        r2(a, b) {
            super.r2(a, b);
            if (this.axes == null) {
                return;
            }
            for (let c of fromEnum(this.axes)) {
                c.bo = this.actualSyncLink;
                c.bi = this;
            }
        }
        getFontInfo() {
            this.xl = this.xk.fo;
            return this.xl;
        }
        aae() {
            this.c9.ee();
            for (let a of fromEnum(this.axes)) {
                a.ib(false);
            }
            for (let b of fromEnum(this.series)) {
                b.cw.bx();
                b.ru(false);
            }
        }
        getFontBrush() {
            return this.xk.fw;
        }
        nt() {
            super.nt();
            let a = new List$1(Axis.$, 0);
            for (let b = 0; b < this.axes.count; b++) {
                a.add(this.axes._inner[b]);
            }
            for (let c = 0; c < a.count; c++) {
                this.axes.remove(a._inner[c]);
                if (typeCast(CategoryAxisBase.$, a._inner[c]) !== null) {
                    let d = a._inner[c];
                    this.re(d.name, true);
                    d.itemsSource = null;
                }
                a._inner[c].h0(null, null);
            }
        }
        vl() {
            return this.xk.fs;
        }
        f3() {
            return true;
        }
        rx() {
            super.rx();
            if (!this.fo) {
                return;
            }
            for (let a of fromEnum(this.axes)) {
                this.rw(a);
            }
        }
        eu() {
            if (this.xx) {
                return true;
            }
            return this.xt();
        }
        xt() {
            for (let a = 0; a < this.series.count; a++) {
                if (this.series._inner[a].fu || this.series._inner[a].fq) {
                    return true;
                }
            }
            for (let b = 0; b < this.axes.count; b++) {
                if (this.axes._inner[b].b9 || this.axes._inner[b].cm) {
                    return true;
                }
            }
            return false;
        }
        c8() {
            return new XamDataChartView(this);
        }
        qe(a) {
            super.qe(a);
            this.xk = a;
        }
        q9() {
            for (let a = 0; a < this.w7.count; a++) {
                this.w7._inner[a].cq = true;
                this.w7._inner[a].ib(false);
            }
            super.q9();
        }
        get ym() {
            return this.ya;
        }
        set ym(a) {
            let b = this.ya;
            this.ya = a;
            if (this.ya != b) {
                this.xo = true;
                this.qv(XamDataChart.y9, b, this.ya);
            }
        }
        get yo() {
            return this.yc;
        }
        set yo(a) {
            let b = this.yc;
            this.yc = a;
            if (this.yc != b) {
                this.xo = true;
                this.qv(XamDataChart.zb, b, this.yc);
            }
        }
        get yn() {
            return this.yb;
        }
        set yn(a) {
            let b = this.yb;
            this.yb = a;
            if (this.yb != b) {
                this.xo = true;
                this.qv(XamDataChart.za, b, this.yb);
            }
        }
        get yl() {
            return this.x9;
        }
        set yl(a) {
            let b = this.x9;
            this.x9 = a;
            if (this.x9 != b) {
                this.xo = true;
                this.qv(XamDataChart.y8, b, this.x9);
            }
        }
        get y0() {
            return this.yi;
        }
        set y0(a) {
            this.yi = a;
            this.z8();
        }
        get y2() {
            return this.yk;
        }
        set y2(a) {
            this.yk = a;
            this.z8();
        }
        get y1() {
            return this.yj;
        }
        set y1(a) {
            this.yj = a;
            this.z8();
        }
        get yz() {
            return this.yh;
        }
        set yz(a) {
            this.yh = a;
            this.z8();
        }
        wj(a) {
            let b = super.wj(a);
            if (a.isEmpty) {
                return Rect.empty;
            }
            if (this.ym == 0 && this.yo == 0 && this.yn == 0 && this.yl == 0) {
                return b;
            }
            if (this.ym + this.yn >= a.width || this.yo + this.yl >= a.height) {
                return b;
            }
            let c = new Rect(0, a.left + this.ym, a.top + this.yo, a.width - this.ym - this.yn, a.height - this.yo - this.yl);
            if (this.eu()) {
                let d;
                if (c.width > c.height) {
                    let e = intDivide(truncate((c.width - c.height)), 2);
                    d = new Rect(0, c.left + e, c.top, c.height, c.height);
                }
                else {
                    let f = intDivide(truncate((c.height - c.width)), 2);
                    d = new Rect(0, c.left, c.top + f, c.width, c.width);
                }
                return d;
            }
            return c;
        }
        wq() {
            let a = this.wz;
            let b = this.w0;
            let c = this.wl;
            if (c.isEmpty || a.isEmpty) {
                return a;
            }
            if (c.containsRect(a)) {
                return a;
            }
            if (a.containsRect(c)) {
                return c;
            }
            return a;
        }
        y7() {
            return this.xd.exportVisualData(this);
        }
        zm() {
            let cvd_ = this.y7();
            cvd_.scaleByViewport();
            return (cvd_.serialize());
        }
        qn() {
            super.qn();
            for (let a = 0; a < this.axes.count; a++) {
                let b = this.axes._inner[a];
                let c = 50;
                if (!isNaN_(b.aw.bh)) {
                    c = b.aw.bh;
                }
                b.d4 = c;
            }
        }
        rb() {
            super.rb();
            for (let a = 0; a < this.axes.count; a++) {
                let b = this.axes._inner[a];
                b.d4 = NaN;
                b.cq = true;
                b.ib(false);
            }
        }
        x8(a) {
            let b = new List$1(Axis.$, 0);
            for (let c of fromEnum(this.series)) {
                let d = c.aw(a);
                if (d != null) {
                    b.add(d);
                }
            }
            return b;
        }
    }
    XamDataChart.$t = /*@__PURE__*/ markType(XamDataChart, 'XamDataChart', SeriesViewer.$);
    XamDataChart.yu = 0;
    XamDataChart.yt = 0;
    XamDataChart.y9 = "ActualPlotAreaMarginLeft";
    XamDataChart.zb = "ActualPlotAreaMarginTop";
    XamDataChart.za = "ActualPlotAreaMarginRight";
    XamDataChart.y8 = "ActualPlotAreaMarginBottom";
    XamDataChart.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, XamDataChart, 'qv', ['AlignsGridLinesToPixels:xr:aag', [0, true], 'AutoExpandMarginExtraPadding:yr:aah', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'AutoExpandMarginMaximumValue:ys:aai', [1, 60], 'AutoMarginAndAngleUpdateMode:w6:aaj', [AutoMarginsAndAngleUpdateMode_$type, /*@__PURE__*/ enumGetBox(AutoMarginsAndAngleUpdateMode_$type, 0)], 'ComputedPlotAreaMarginMode:w9:aak', [ComputedPlotAreaMarginMode_$type, /*@__PURE__*/ enumGetBox(ComputedPlotAreaMarginMode_$type, 0)], 'DefaultAxisMajorStroke:aa5:aal', [Brush.$, null], 'DefaultAxisMinorStroke:aa6:aam', [Brush.$, null], 'DefaultAxisStroke:aa7:aan', [Brush.$, null], 'GridMode:xb:aao', [GridMode_$type, /*@__PURE__*/ enumGetBox(GridMode_$type, 2)], 'HorizontalZoomable:xu:aap', [0, false], 'InitialCloseGridlinesThreshold:yw:aaq', [1, NaN], 'IsHorizontalZoomEnabled:xv:aar', [0, false], 'IsSquare:xx:aas', [0, false], 'IsVerticalZoomEnabled:xy:aat', [0, false], 'SeriesPlotAreaMarginHorizontalMode:xg:aau', [SeriesPlotAreaMarginHorizontalMode_$type, /*@__PURE__*/ enumGetBox(SeriesPlotAreaMarginHorizontalMode_$type, 0)], 'SeriesPlotAreaMarginVerticalMode:xj:aav', [SeriesPlotAreaMarginVerticalMode_$type, /*@__PURE__*/ enumGetBox(SeriesPlotAreaMarginVerticalMode_$type, 0)], 'ShouldAutoExpandMarginForInitialLabels:x1:aaw', [0, false], 'ShouldClipGridlines:x2:aax', [0, true], 'ShouldClipInitialCloseGridlines:x3:aay', [0, true], 'ShouldConsiderAutoRotationForInitialLabels:x4:aaz', [0, false], 'ShouldSuppressAxisLabelTruncation:x5:aa0', [0, false], 'SuppressAutoMarginAndAngleRecalculation:x6:aa1', [0, false], 'VerticalZoomable:x7:aa2', [0, false], 'WindowScaleHorizontal:y4:aa3', [1, NaN], 'WindowScaleVertical:y5:aa4', [1, NaN]]);
    return XamDataChart;
})();
/**
 * @hidden
 */
export let LabelPanelArranger = /*@__PURE__*/ (() => {
    class LabelPanelArranger extends Base {
        static e(a, b) {
            for (let c of fromEnum(a)) {
                let d = c.ad;
                let e = d.aj;
                e = LabelPanelArranger.a(c, d, e);
                let f = LabelPanelArranger.b(c);
                let g = 0;
                let h = 0;
                let i = 0;
                if (d.b8()) {
                    c.af.ac();
                    i = c.bh;
                }
                else {
                    i = c.bi(b);
                }
                g = i;
                h = i;
                if (c.ad.az != null && c.ad.az.visibility != 0) {
                    h = 0;
                    g = 0;
                }
                if (c.aq()) {
                    switch (f) {
                        case 0:
                            b.y = Math.max(0, b.top + h);
                            b.height = Math.max(0, b.height - h);
                            d.az.c = 0;
                            break;
                        case 4:
                            if (e != null && (c.bg - b.top < h && typeCast(HorizontalAxisLabelPanel.$, c) !== null)) {
                                d.az.c = 5;
                            }
                            else {
                                d.az.c = 4;
                            }
                            break;
                        case 5:
                            if (e != null && (b.bottom - c.bg < h && typeCast(HorizontalAxisLabelPanel.$, c) !== null)) {
                                if (d.az != null) {
                                    d.az.c = 4;
                                }
                            }
                            else {
                                if (d.az != null) {
                                    d.az.c = 5;
                                }
                            }
                            break;
                        case 1:
                        default:
                            if (d.az != null) {
                                d.az.c = 1;
                            }
                            b.height = Math.max(0, b.height - h);
                            break;
                    }
                }
                if (typeCast(VerticalAxisLabelPanel.$, c) !== null) {
                    switch (f) {
                        case 3:
                            b.width = Math.max(0, b.width - g);
                            d.az.c = 3;
                            break;
                        case 6:
                            if (e != null && c.bg - b.left < g) {
                                d.az.c = 7;
                            }
                            else {
                                d.az.c = 6;
                            }
                            break;
                        case 7:
                            if (e != null && b.right - c.bg < g) {
                                d.az.c = 6;
                            }
                            else {
                                d.az.c = 7;
                            }
                            break;
                        case 2:
                        default:
                            if (d.az != null) {
                                d.az.c = 2;
                            }
                            b.x = Math.max(0, b.left + g);
                            b.width = Math.max(0, b.width - g);
                            break;
                    }
                }
                if (c.ad.b9) {
                    if (d.az != null) {
                        d.az.c = f;
                    }
                }
            }
            return b;
        }
        static a(a, b, c) {
            return b.ak();
        }
        static b(a) {
            if (a == null) {
                return 1;
            }
            else {
                let b = a.ad;
                if (b != null && b.az != null) {
                    let c = b.az.c;
                    if (!a.ay(c)) {
                        return a.ai();
                    }
                    return c;
                }
                else {
                    return a.ai();
                }
            }
        }
        static c(a, b, c, d) {
            let e = a.ad;
            let f = e.aj;
            f = LabelPanelArranger.a(a, e, f);
            let g = LabelPanelArranger.b(a);
            let h;
            let i = a.bi(c);
            let j = Math.max(0, i);
            let k = Math.max(0, i);
            if (a.ad != null && a.ad.az != null && a.ad.az.visibility == 1) {
                return;
            }
            switch (g) {
                case 3:
                    b.g = b.g - k;
                    b.d = b.d - k;
                    h = new Rect(0, b.g, c.top, k, c.height);
                    d(a, h);
                    break;
                case 2:
                    h = new Rect(0, b.f, c.top, k, c.height);
                    d(a, h);
                    b.f = b.f + k;
                    b.c = b.c + k;
                    break;
                case 7:
                    if (f != null) {
                        h = new Rect(0, b.f + a.bg, c.top, k, c.height);
                    }
                    else {
                        b.d = b.d - k;
                        h = new Rect(0, b.d, c.top, k, c.height);
                    }
                    d(a, h);
                    break;
                case 6:
                    if (f != null) {
                        h = new Rect(0, b.f + a.bg - k, c.top, k, c.height);
                    }
                    else {
                        h = new Rect(0, b.c, c.top, k, c.height);
                        b.c = b.c + k;
                    }
                    d(a, h);
                    break;
                case 1:
                    b.a = b.a - j;
                    b.b = b.b - j;
                    h = new Rect(0, c.left, b.a, c.width, j);
                    d(a, h);
                    break;
                case 0:
                    h = new Rect(0, c.left, b.h, c.width, j);
                    d(a, h);
                    b.h = b.h + j;
                    b.e = b.e + j;
                    break;
                case 5:
                    if (f != null) {
                        h = new Rect(0, c.left, b.h + a.bg, c.width, j);
                    }
                    else {
                        b.b = b.b - j;
                        h = new Rect(0, c.left, b.b, c.width, j);
                    }
                    d(a, h);
                    break;
                case 4:
                    if (f != null) {
                        h = new Rect(0, c.left, b.h + a.bg - j, c.width, j);
                    }
                    else {
                        h = new Rect(0, c.left, b.e, c.width, j);
                        b.e = b.e + j;
                    }
                    d(a, h);
                    break;
            }
            if (a.ad.b9) {
                h = new Rect(0, c.left, c.top, c.width, c.height);
                d(a, h);
            }
        }
        static d(a, b, c, d) {
            let e = new List$1(AxisLabelPanelBase.$, 0);
            let f = new List$1(AxisLabelPanelBase.$, 0);
            for (let g of fromEnum(a)) {
                let h = LabelPanelArranger.b(g);
                switch (h) {
                    case 1:
                    case 2:
                    case 0:
                    case 3:
                        f.add(g);
                        break;
                    case 5:
                    case 6:
                    case 4:
                    case 7:
                        e.add(g);
                        break;
                }
            }
            for (let i of fromEnum(f)) {
                LabelPanelArranger.c(i, b, c, d);
            }
            for (let j of fromEnum(e)) {
                LabelPanelArranger.c(j, b, c, d);
            }
        }
    }
    LabelPanelArranger.$t = /*@__PURE__*/ markType(LabelPanelArranger, 'LabelPanelArranger');
    return LabelPanelArranger;
})();
/**
 * @hidden
 */
export let ChartContentManager = /*@__PURE__*/ (() => {
    class ChartContentManager extends DependencyObject {
        get u() {
            return this.t;
        }
        set u(a) {
            this.t = a;
        }
        constructor(a) {
            super();
            this.l = null;
            this.r = new Dictionary$2(ChartContentType_$type, Dictionary$2.$.specialize(DependencyObject.$, ContentInfo.$), 0);
            this.t = new List$1(Series.$, 0);
            this.m = false;
            this.v = null;
            this.q = false;
            this.o = false;
            this.n = false;
            this.p = false;
            this.p = true;
            this.o = true;
            this.n = true;
            this.r.addItem(0, new Dictionary$2(DependencyObject.$, ContentInfo.$, 0));
            this.r.addItem(1, new Dictionary$2(DependencyObject.$, ContentInfo.$, 0));
            this.r.addItem(2, new Dictionary$2(DependencyObject.$, ContentInfo.$, 0));
            this.l = a;
        }
        k(a, b, c) {
            let d = this.j(a, b);
            d.a = c;
            return d;
        }
        ad(a, b) {
            let c = this.r.item(a);
            if (c.containsKey(b)) {
                c.removeItem(b);
            }
            let d = typeCast(Series.$, b);
            if (d != null && this.u.contains(d)) {
                this.u.remove(d);
            }
        }
        aa(a) {
            let b = this.v;
            this.v = a;
            if (this.m && b == null && this.v != null) {
                this.v.setTimeout(runOn(this, this.w), 0);
            }
        }
        z() {
            if (!this.m) {
                this.m = true;
                if (this.v != null) {
                    this.v.setTimeout(runOn(this, this.w), 0);
                }
                else {
                }
            }
        }
        ac(a, b, c, d) {
            let e = c;
            if (!e.c) {
                e.b = d;
            }
            else {
                if (!d) {
                    e.b = false;
                }
            }
            if (!e.c) {
                e.c = true;
                this.z();
            }
        }
        j(a, b) {
            let c = this.r.item(a);
            let d = null;
            if (!((() => { let e = c.tryGetValue(b, d); d = e.p1; return e.ret; })())) {
                d = new ContentInfo();
                d.h = b;
                c.addItem(b, d);
                let e = typeCast(Series.$, b);
                if (e != null && !this.u.contains(e)) {
                    if (e.isFragment) {
                        let f = e.bq();
                        let g = this.u.indexOf(f) + 1;
                        g += e.j8();
                        if (this.u.count <= g || f.kd() == 0 || g == -1) {
                            this.u.add(e);
                        }
                        else {
                            this.u.insert(g, e);
                        }
                    }
                    else {
                        this.u.add(e);
                    }
                }
            }
            return d;
        }
        y() {
            this.w();
        }
        w() {
            if (this.l == null || this.r == null) {
                return;
            }
            if (!this.m) {
                return;
            }
            this.m = false;
            if (this.l != null) {
                this.l.ni();
            }
            for (let a of fromEnum(this.s())) {
                a.f();
            }
            if (!this.m) {
                this.l.qw();
            }
        }
        *_s() {
            let a = null;
            a = this.r.item(1);
            for (let b of fromEnum(a.values)) {
                yield b;
            }
            a = this.r.item(0);
            let c = new List$1(ContentInfo.$, 0);
            for (let d of fromEnum(this.u)) {
                if (!d.eu) {
                    c.add(a.item(d));
                }
            }
            for (let e of fromEnum(this.u)) {
                if (e.eu) {
                    c.add(a.item(e));
                }
            }
            for (let f of fromEnum(c)) {
                yield f;
            }
            a = this.r.item(2);
            for (let g of fromEnum(a.values)) {
                yield g;
            }
        }
        s() {
            return toEnum(() => this._s());
        }
        x(a) {
            for (let b of fromEnum(this.r.item(1).values)) {
                b.h.hw(a);
            }
            for (let c of fromEnum(this.r.item(1).values)) {
                c.f();
            }
            for (let d of fromEnum(this.r.item(1).values)) {
                d.h.il();
            }
        }
        ae(a, b, c, d) {
            c.i = d;
        }
        ab(a, b) {
            if (!b.e) {
                b.e = true;
                this.z();
            }
        }
    }
    ChartContentManager.$t = /*@__PURE__*/ markType(ChartContentManager, 'ChartContentManager', DependencyObject.$);
    return ChartContentManager;
})();
/**
 * @hidden
 */
export let ContentInfo = /*@__PURE__*/ (() => {
    class ContentInfo extends Base {
        constructor() {
            super(...arguments);
            this.h = null;
            this.a = null;
            this.b = false;
            this.c = false;
            this.i = null;
            this.e = false;
        }
        get d() {
            if (this.i.isEmpty) {
                return false;
            }
            if (this.i.width == 0 && this.i.height == 0) {
                return false;
            }
            return true;
        }
        g() {
            if (this.e && typeCast(Axis.$, this.h) !== null) {
                this.e = false;
                let a = this.c;
                this.c = true;
                let b = this.h.c2(true);
                if (!b) {
                    this.c = a;
                }
            }
        }
        f() {
            this.g();
            if (typeCast(Axis.$, this.h) !== null) {
                let a = typeCast(Axis.$, this.h);
                if (a.aj != null) {
                    let b = a.aj;
                    if (b.a6 != null && b.a6.e) {
                        b.a6.g();
                    }
                }
            }
            if (this.c) {
                this.c = false;
                this.a(this.b);
                this.b = false;
            }
        }
    }
    ContentInfo.$t = /*@__PURE__*/ markType(ContentInfo, 'ContentInfo');
    return ContentInfo;
})();
/**
 * @hidden
 */
export let Series = /*@__PURE__*/ (() => {
    class Series extends Control {
        gd() {
            if (this.dc != null && this.dc.f1()) {
                return true;
            }
            return false;
        }
        get_dataLegendKey() {
            if (!stringIsNullOrEmpty(this.name)) {
                return this.name;
            }
            return "Index___" + this.index.toString();
        }
        get dataLegendKey() {
            return this.get_dataLegendKey();
        }
        get group() {
            if (this.bo != null && !stringIsNullOrEmpty(this.ml)) {
                return this.ml;
            }
            if (!stringIsNullOrEmpty(this.l5)) {
                return this.l5;
            }
            return this.me();
        }
        get parentKey() {
            return this.bo != null ? this.bo.dataLegendKey : this.dataLegendKey;
        }
        get parentTitle() {
            if (this.bo != null) {
                return this.bo.title.toString();
            }
            if (this.title != null) {
                return this.title.toString();
            }
            return "SeriesNoTitle";
        }
        get j0() {
            return this.jz;
        }
        set j0(a) {
            this.jz = a;
            this.dd.u(this.jz);
        }
        provideRenderer(a) {
            this.j0 = a;
        }
        ng() {
            return this.ba.a$u(this);
        }
        constructor() {
            super();
            this.cw = null;
            this.kh = 0;
            this.wn = null;
            this.ey = false;
            this.jz = null;
            this.cd = null;
            this.dr = null;
            this.bb = null;
            this.a9 = null;
            this.dd = null;
            this.sz = null;
            this.hi = new Dictionary$2(String_$type, String_$type, 0);
            this.hh = new Dictionary$2(String_$type, FastReflectionHelper.$, 0);
            this.kj = null;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.d9 = false;
            this.transitionOutCompleted = null;
            this.renderRequested = null;
            this.bu = 1;
            this.ce = new SeriesLayerPropertyOverlayCollection();
            this.b5 = null;
            this.dw = false;
            this.renderValid = null;
            this.g2 = false;
            this.g5 = false;
            this.gl = false;
            this.cv = null;
            this.a1 = null;
            this.dz = true;
            this.hw = new Stack$1(String_$type);
            this.gs = false;
            this.gt = false;
            this.d0 = false;
            this.d1 = false;
            this.as = null;
            this.at = null;
            this.d8 = false;
            this.c3 = null;
            this.db = null;
            this.hz = null;
            this.bi = null;
            this.dq = null;
            this.jw = null;
            this.sw = null;
            this.a4 = null;
            this.c2 = 0;
            this.c1 = 0;
            this.ec = false;
            this.dy = false;
            this.h3 = DeviceUtils.g(1);
            this.h7 = NaN;
            this.h4 = NaN;
            this.h5 = NaN;
            this.h6 = NaN;
            this.vl = null;
            this.vn = null;
            this.vo = BrushUtil.j(255, 255, 0, 0);
            this.vm = BrushUtil.j(255, 255, 0, 0);
            this.im = DeviceUtils.g(2);
            this.bx = 1;
            this.co = 1;
            this.cn = 1;
            this.h1 = 0.2;
            this.h2 = 0.2;
            this.d3 = false;
            this.dx = false;
            this.eh = false;
            this.hv = null;
            this.dv = false;
            this.cx = 1;
            this.ch = 1;
            this.km = null;
            this.eb = false;
            this.br = new SeriesComponentsForView();
            this.d2 = false;
            this.k3 = null;
            this.jy = null;
            this._coercionMethods = null;
            this.du = false;
            this.b1 = 0;
            this.b0 = 0;
            this.dt = null;
            this.wb = { $type: Point_$type, x: NaN, y: NaN };
            this.h8 = NaN;
            this.h9 = NaN;
            this.hm = new Dictionary$2(SeriesLayer.$, Series.$, 0);
            this.hs = new List$1(Series.$, 0);
            this.b6 = null;
            this.b9 = new SeriesLayerCollection();
            this.b8 = new SeriesLayerCollection();
            this.b7 = new SeriesLayerCollection();
            this.hp = new HashSet$1(String_$type, 0);
            this.bo = null;
            this.bl = null;
            this.hn = new Dictionary$2(String_$type, Number_$type, 0);
            this.hj = new Dictionary$2(String_$type, Stack$1.$.specialize(Boolean_$type), 0);
            this.a8 = null;
            DVContainer.instance.registerIfLoaded("AnnotationFactoryManager");
            DVContainer.instance.registerIfLoaded("InteractivityFactoryManager");
            DVContainer.instance.registerIfLoaded("VisualDataFactoryManager");
            this.kh = Series.j1++;
            this.g1 = true;
            this.wn = Rect.empty;
            this.cw = this.ct();
            this.cw.b9 = Rect.empty;
            this.q3(this.cw);
            this.cw.q = true;
            this.cw.a4();
            this.cw.q = false;
            this.ab = Series.$;
            this.cd = new SeriesLayerManager();
            this.cd.a = this;
            this.dq = (a, b) => {
                if (this.dc == null || !this.dc.e1) {
                    this.sv(b.oldRect, b.newRect);
                }
            };
            this.bi = (a, b) => this.rc(a, b.propertyName, b.oldValue, b.newValue);
            this.jw = (a, b) => {
                if (this.dc != null) {
                    this.g1 = true;
                    this.dc.or();
                }
                this.pd(b.action, b.position, b.count, b.propertyName);
            };
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (a, b) => this.rc(a, b.propertyName, b.oldValue, b.newValue));
            let a = this.b9;
            a.collectionResetting = delegateCombine(a.collectionResetting, runOn(this, this.ow));
            let b = this.b9;
            b.collectionChanged = delegateCombine(b.collectionChanged, runOn(this, this.ov));
            let c = this.b8;
            c.collectionResetting = delegateCombine(c.collectionResetting, runOn(this, this.os));
            let d = this.b8;
            d.collectionChanged = delegateCombine(d.collectionChanged, runOn(this, this.or));
            let e = this.b7;
            e.collectionResetting = delegateCombine(e.collectionResetting, runOn(this, this.oq));
            let f = this.b7;
            f.collectionChanged = delegateCombine(f.collectionChanged, runOn(this, this.op));
            let g = this.ce;
            g.collectionResetting = delegateCombine(g.collectionResetting, runOn(this, this.ou));
            let h = this.ce;
            h.collectionChanged = delegateCombine(h.collectionChanged, runOn(this, this.ot));
            this.sz = new Canvas();
            this.dd = new DoubleAnimator(0, 1, this.ke);
            let i = this.dd;
            i.propertyChanged = delegateCombine(i.propertyChanged, runOn(this, this.ox));
            this.g(Series.u8, ((() => {
                let $ret = new Binding(1, "Visibility");
                $ret.d = this;
                return $ret;
            })()));
            this.b2 = this.b3();
            this.cy = this.cz();
        }
        j7() {
            return this.bo.actualLayers.indexOf(this.b6);
        }
        ov(a, b) {
            this.cd.h(this, this.b9, b);
        }
        ow(a, b) {
            this.cd.j(this, this.b9, b);
        }
        or(a, b) {
            this.cd.e(this, this.b9, b);
        }
        os(a, b) {
            this.cd.f(this, this.b9, b);
        }
        op(a, b) {
            this.cd.c(this, this.b9, b);
            if (this.dc != null) {
                this.dc.ok();
            }
        }
        oq(a, b) {
            this.cd.d(this, this.b9, b);
            if (this.dc != null) {
                this.dc.ok();
            }
        }
        ot(a, b) {
            switch (b.action) {
                case 0:
                    if (b.newItems != null) {
                        for (let c = 0; c < b.newItems.count; c++) {
                            let d = b.newItems.item(c);
                            d.o = true;
                            this.qx(c + b.newStartingIndex, d);
                        }
                    }
                    break;
                case 1:
                    if (b.oldItems != null) {
                        for (let e = 0; e < b.oldItems.count; e++) {
                            let f = b.oldItems.item(e);
                            this.qy(f, b.oldStartingIndex);
                        }
                    }
                    break;
                case 2:
                    if (b.oldItems != null) {
                        for (let g = 0; g < b.oldItems.count; g++) {
                            let h = b.oldItems.item(g);
                            this.qy(h, b.oldStartingIndex);
                        }
                    }
                    if (b.newItems != null) {
                        for (let i = 0; i < b.newItems.count; i++) {
                            let j = b.newItems.item(i);
                            this.qx(i + b.newStartingIndex, j);
                        }
                    }
                    break;
                case 4:
                    this.qs();
                    let k = 0;
                    for (let l of fromEnum(this.ce)) {
                        let m = l;
                        this.qx(k, m);
                        k++;
                    }
                    break;
            }
        }
        qs() {
            let a = this.b5;
            if (a != null) {
                let b = new List$1(SeriesLayerPropertyOverlay.$, 0);
                let c = new List$1(SeriesLayerPropertyOverlay.$, 0);
                for (let d of fromEnum(a.m)) {
                    if (d.o) {
                        b.add(d);
                    }
                }
                for (let e of fromEnum(b)) {
                    a.m.remove(e);
                    if (e.k != null) {
                        c.add(e.k);
                    }
                }
                for (let f of fromEnum(c)) {
                    a.m.add(f);
                }
            }
        }
        qy(a, b) {
            let c = this.b5;
            if (c != null) {
                let d = c.m.indexOf(a);
                if (d >= 0) {
                    let e = c.m._inner[d];
                    c.m.removeAt(d);
                    if (e.k != null) {
                        c.m.insert(d, a);
                    }
                }
            }
        }
        qx(a, b) {
            let c = this.b5;
            if (c != null) {
                let d = new Dictionary$2(String_$type, SeriesLayerPropertyOverlay.$, 0);
                for (let e of fromEnum(c.m)) {
                    d.addItem(e.ad, b);
                }
                if (d.containsKey(b.ad)) {
                    b.k = d.item(b.ad);
                    c.m.remove(d.item(b.ad));
                }
                c.m.add(b);
            }
        }
        ou(a, b) {
            this.qs();
        }
        sp(a) {
        }
        so(a) {
        }
        sq(a) {
        }
        ox(a, b) {
            this.jr = this.dd.o;
        }
        get ds() {
            if (this.dr == null) {
                this.dr = new SRProvider(this.j0);
            }
            if (this.dr.l == null) {
                if (this.j0 != null) {
                    this.dr.l = this.j0;
                }
                else if (this.dc != null && this.dc.c9 != null && this.dc.c9.j != null && this.dc.c9.j.ae != null) {
                    this.dr.l = this.dc.c9.j.ae;
                }
            }
            return this.dr;
        }
        get bc() {
            if (this.bb == null) {
                this.bb = DVContainer.instance.createInstance(ISeriesVisualDataManager_$type, () => this.ds.q);
            }
            return this.bb;
        }
        get ho() {
            return this.ba.a$j;
        }
        get ba() {
            if (this.a9 == null) {
                this.a9 = DVContainer.instance.createInstance(ISeriesInteractionManager_$type, () => this.ds.n);
                if (this.toolTip != null) {
                    this.a9.a$as(this, this.toolTip);
                }
            }
            return this.a9;
        }
        get fj() {
            return DVContainer.instance.checkLoaded("InteractivityFactoryManager");
        }
        q3(a) {
        }
        q0() {
            this.oy(this.a5, this.a5);
            if (this.dp == null && this.c4 != null && this.itemsSource != null) {
                this.dp = this.c4.getFastItemsSource(this.itemsSource);
            }
            this.cw.a7();
        }
        q1() {
            this.o6();
            if (this.dp != null && this.c4 != null && this.itemsSource != null) {
                this.dp = this.c4.releaseFastItemsSource(this.itemsSource);
            }
            this.cw.a8();
        }
        cu() {
            return this.ct();
        }
        ct() {
            return new SeriesView(this);
        }
        hc() {
            return false;
        }
        kr(a, b) {
            return null;
        }
        mf(a) {
            return null;
        }
        onLegendItemOver(a) {
        }
        onLegendItemPointerUp(a) {
        }
        onLegendItemPointerDown(a) {
        }
        onLegendItemEnter(a) {
            if (this.ff && this.fj && this.dc != null && (this.dc.bd == 0 || this.dc.bd == 2) && this.by != 1) {
                this.ba.a$ab(this, a, { $type: Point_$type, x: NaN, y: NaN }, false, true, false, a == null, this == this.dc.bq, false);
            }
        }
        onLegendItemLeave(a) {
            if (this.ff && this.fj && this.dc != null && (this.dc.bd == 0 || this.dc.bd == 2) && this.by != 1) {
                this.ba.a$ab(this, a, { $type: Point_$type, x: NaN, y: NaN }, false, true, true, a == null, this == this.dc.bq, a != null);
            }
        }
        nf(a) {
            if (!this.hi.containsKey(a)) {
                let b = a.substr(0, 1).toUpperCase() + a.substr(1);
                this.hi.addItem(a, b);
            }
            return this.hi.item(a);
        }
        ks(a, b, c) {
            let d = null;
            if (!this.hh.containsKey(b)) {
                d = new FastReflectionHelper(false, c);
                this.hh.addItem(b, d);
            }
            else {
                d = this.hh.item(b);
            }
            d.propertyName = c;
            let e = d.getPropertyValue(a);
            if (this.expectFunctions) {
                let func_ = e;
                let item_ = a;
                if ((typeof func_ === 'function')) {
                    e = func_.apply(item_);
                }
            }
            return e;
        }
        is(a) {
            return this.j4(a);
        }
        j6(a) {
            return -1;
        }
        get_ft() {
            return false;
        }
        get ft() {
            return this.get_ft();
        }
        a0() {
            return null;
        }
        j4(a) {
            return -1;
        }
        wz() {
            let a = 1;
            let b = 1;
            if (this.dc != null) {
                a = this.dc.b0;
                b = this.dc.b2;
            }
            return this.w0(a, b);
        }
        w1(a, b) {
            return this.w0(a, b);
        }
        w0(a, b) {
            return new Thickness(1, 0, 0, 0, 0);
        }
        cl() {
            return 1;
        }
        cm() {
            return 1;
        }
        ko(a) {
            return null;
        }
        p6(a, b, c) {
        }
        ak(a, b) {
            return null;
        }
        kx(a, b) {
            return a.ko(b);
        }
        dj(a, b, c, d) {
            return a.dh(b, c, d);
        }
        dk(a, b, c, d) {
            return a.di(b, c, d);
        }
        j3() {
            return -1;
        }
        j8() {
            return -1;
        }
        kd() {
            return -1;
        }
        get container() {
            return this.dc;
        }
        get hasSubItems() {
            return this.ej();
        }
        ej() {
            if (this.d3 && this.hv != null) {
                return true;
            }
            return false;
        }
        forSubItems(a) {
            this.p4(a);
        }
        p4(a) {
            if (this.d3 && this.hv != null) {
                for (let b of fromEnum(this.hv)) {
                    a(b);
                }
            }
        }
        p5(a) {
        }
        get ei() {
            return this.b7.count > 0;
        }
        p3(a) {
            for (let b = 0; b < this.hs.count; b++) {
                let c = this.hs._inner[b];
                if (!a(c)) {
                    break;
                }
            }
        }
        ne() {
            return null;
        }
        v1() {
            return this.vk;
        }
        v2() {
            return this.v0;
        }
        resolveLegendIndex() {
            return this.index;
        }
        bq() {
            return null;
        }
        get_eu() {
            return false;
        }
        get eu() {
            return this.get_eu();
        }
        get_er() {
            return false;
        }
        get er() {
            return this.get_er();
        }
        get_eq() {
            return false;
        }
        get eq() {
            return this.get_eq();
        }
        get_et() {
            return false;
        }
        get et() {
            return this.get_et();
        }
        get_es() {
            return false;
        }
        get es() {
            return this.get_es();
        }
        get_ev() {
            return false;
        }
        get ev() {
            return this.get_ev();
        }
        get_isVertical() {
            return false;
        }
        get isVertical() {
            return this.get_isVertical();
        }
        get_isFragment() {
            return false;
        }
        get isFragment() {
            return this.get_isFragment();
        }
        get_ex() {
            return false;
        }
        get ex() {
            return this.get_ex();
        }
        get_ew() {
            return false;
        }
        get ew() {
            return this.get_ew();
        }
        get_em() {
            return false;
        }
        get em() {
            return this.get_em();
        }
        get_f6() {
            return false;
        }
        get f6() {
            return this.get_f6();
        }
        get_fl() {
            return false;
        }
        get fl() {
            return this.get_fl();
        }
        get_fk() {
            return false;
        }
        get fk() {
            return this.get_fk();
        }
        get_f1() {
            return false;
        }
        get f1() {
            return this.get_f1();
        }
        get_e1() {
            return false;
        }
        get e1() {
            return this.get_e1();
        }
        get_ez() {
            return false;
        }
        get ez() {
            return this.get_ez();
        }
        get_f7() {
            return false;
        }
        get f7() {
            return this.get_f7();
        }
        get_fs() {
            return false;
        }
        get fs() {
            return this.get_fs();
        }
        get_fr() {
            return false;
        }
        get fr() {
            return this.get_fr();
        }
        get_fp() {
            return false;
        }
        get fp() {
            return this.get_fp();
        }
        get_fo() {
            return false;
        }
        get fo() {
            return this.get_fo();
        }
        get_f4() {
            return false;
        }
        get f4() {
            return this.get_f4();
        }
        get_f2() {
            return false;
        }
        get f2() {
            return this.get_f2();
        }
        get_fz() {
            return false;
        }
        get fz() {
            return this.get_fz();
        }
        get_fq() {
            return false;
        }
        get fq() {
            return this.get_fq();
        }
        get_fx() {
            return false;
        }
        get fx() {
            return this.get_fx();
        }
        get_fu() {
            return false;
        }
        get fu() {
            return this.get_fu();
        }
        get_isStacked() {
            return false;
        }
        get isStacked() {
            return this.get_isStacked();
        }
        get_e8() {
            return false;
        }
        get e8() {
            return this.get_e8();
        }
        get_fv() {
            return false;
        }
        get fv() {
            return this.get_fv();
        }
        get_e0() {
            return false;
        }
        get e0() {
            return this.get_e0();
        }
        get_fd() {
            return false;
        }
        get fd() {
            return this.get_fd();
        }
        get_fy() {
            return false;
        }
        get fy() {
            return this.get_fy();
        }
        get_isValueOverlay() {
            return false;
        }
        get isValueOverlay() {
            return this.get_isValueOverlay();
        }
        get_fg() {
            return this.bo != null;
        }
        get fg() {
            return this.get_fg();
        }
        get_isSummarizationSupported() {
            return !this.isValueOverlay;
        }
        get isSummarizationSupported() {
            return this.get_isSummarizationSupported();
        }
        get isLayer() {
            return this.bo != null;
        }
        bp() {
            return null;
        }
        get_ek() {
            return false;
        }
        get ek() {
            return this.get_ek();
        }
        get_fb() {
            return false;
        }
        get fb() {
            return this.get_fb();
        }
        get_fa() {
            return false;
        }
        get fa() {
            return this.get_fa();
        }
        get_e9() {
            return false;
        }
        get e9() {
            return this.get_e9();
        }
        get_fc() {
            return false;
        }
        get fc() {
            return this.get_fc();
        }
        get_e3() {
            return false;
        }
        get e3() {
            return this.get_e3();
        }
        get_e4() {
            return false;
        }
        get e4() {
            return this.get_e4();
        }
        iq(a, b, c, d, e) {
            return Number.POSITIVE_INFINITY;
        }
        ir(a, b, c, d, e, f, g) {
            return this.ba.a$m(this, a, b, c, d, e, f, g);
        }
        get_he() {
            return false;
        }
        get he() {
            return this.get_he();
        }
        i8(a, b, c, d, e, f, g, h) {
            return this.ba.a$p(this, a, b, c, d, e, f, g, h);
        }
        iw(a, b, c, d, e, f, g, h) {
            return this.ba.a$o(this, a, b, c, d, e, f, g, h);
        }
        kc(a, b, c, d, e) {
            return this.ba.a$r(this, a, b, c, d, e);
        }
        iv(a) {
            return (a ? 10 : 3);
        }
        aj(a) {
            return null;
        }
        al(a) {
            return null;
        }
        gw(a, b) {
            return this.ba.a$f(this, a, b);
        }
        an(a, b, c, d, e, f) {
            return this.ba.a$b(this, a, b, c, d, e, f);
        }
        am(a, b, c, d, e, f) {
            return this.ba.a$a(this, a, b, c, d, e, f);
        }
        gy(a, b, c) {
            return this.ba.a$g(this, a, b, c);
        }
        gz(a, b) {
            return this.ba.a$h(this, a, b);
        }
        ka(a, b, c, d, e) {
            return this.ba.a$q(this, a, b, c, d, e);
        }
        iu(a, b) {
            return this.ba.a$n(this, a, b);
        }
        kb(a, b) {
            return -1;
        }
        j9(a, b) {
            return -1;
        }
        i6(a, b, c) {
            return NaN;
        }
        wh(a, b, c) {
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        ws(a) {
            return Rect.empty;
        }
        ao(a) {
            let b = this.ws(a);
            if (!b.isEmpty) {
                let c = new Array(1);
                c[0] = b;
                return c;
            }
            return null;
        }
        wt(a) {
            return this.ws(this.wm(a));
        }
        ap(a) {
            return this.ao(this.wm(a));
        }
        ar(a, b) {
            return null;
        }
        wu(a) {
            return Rect.empty;
        }
        wv(a) {
            return this.wu(this.wm(a));
        }
        g0(a, b) {
            return this.ba.a$i(this, a, b);
        }
        wj(a, b, c, d, e, f, g, h, i) {
            return this.ba.a$au(this, a, b, c, d, e, f, g, h, i);
        }
        i2(a, b, c) {
            return this.i6(a, b, c);
        }
        wd(a, b, c) {
            return this.wh(a, b, c);
        }
        i4(a, b, c) {
            return this.i6(a, b, c);
        }
        wf(a, b, c) {
            return this.wh(a, b, c);
        }
        wi(a, b, c) {
            let d = this.wm(a);
            return this.wh(d, b, c);
        }
        i7(a, b, c) {
            let d = this.wm(a);
            return this.i6(d, b, c);
        }
        we(a, b, c) {
            let d = this.wm(a);
            return this.wd(d, b, c);
        }
        i3(a, b, c) {
            let d = this.wm(a);
            return this.i2(d, b, c);
        }
        wg(a, b, c) {
            let d = this.wm(a);
            return this.wf(d, b, c);
        }
        i5(a, b, c) {
            let d = this.wm(a);
            return this.i4(d, b, c);
        }
        j5(a) {
            let b = this.wm(a);
            return this.j4(b);
        }
        ix() {
            return 0;
        }
        static po(a, b, c) {
            if (b != null && b.c9.j.ae != null) {
                b.c9.j.ae.getExternal(a, b.c9.j.ae.rootWrapper, b.c9.j.ae.getExternal(b, null, null));
            }
            let d = a;
        }
        it(a) {
            let b = this.wm(a);
            return this.is(b);
        }
        kp(a) {
            let b = this.wm(a);
            return this.ko(b);
        }
        o1(a, b) {
            a.kj = b;
        }
        k1(a) {
            return a.kj;
        }
        au(a) {
            if (a && this.as != null) {
                return this.as;
            }
            if (this.at != null) {
                return this.at;
            }
            return this.kj;
        }
        ed(a, b, c, d, e) {
            return false;
        }
        je(a) {
            let b = this.mg();
            if (b == null) {
                return NaN;
            }
            if (a.content == null) {
                return NaN;
            }
            if (a.content.item == null) {
                return NaN;
            }
            return FastItemColumn.i(this.kr(a.content.item, b));
        }
        jd(a) {
            let b = this.mg();
            if (b == null) {
                return NaN;
            }
            if (a == null) {
                return NaN;
            }
            return FastItemColumn.i(this.kr(a, b));
        }
        mg() {
            return null;
        }
        i9(a, b) {
            return NaN;
        }
        aq(a) {
            return [NaN, NaN];
        }
        wk(a) {
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        wl(a) {
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        raisePropertyChanged(a, b, c) {
            this.sd(a);
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            c = this.k4(a, b, c);
            if (this.propertyUpdated != null) {
                if (a == Series.$$p[20] && b != null && c != null) {
                    this.d9 = true;
                }
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
                if (a == Series.$$p[20] && b != null && c != null) {
                    this.d9 = false;
                }
            }
            this.sf(a);
        }
        k4(a, b, c) {
            this.hp.add_1(a);
            if (this.ee) {
                c = this.kz(a, b, c);
            }
            return c;
        }
        kz(a, b, c) {
            if (this.gn(a)) {
                return c;
            }
            for (let d = 0; d < this.hs.count; d++) {
                let e = this.hs._inner[d];
                let f = e.b6;
                let g = this.tr(a);
                if (g == null) {
                    continue;
                }
                c = f.ai(this, e, g, c);
            }
            return c;
        }
        tr(a) {
            if (Series.hg.containsKey(a) && Series.hg.item(a).containsKey(getInstanceType(this))) {
                return Series.hg.item(a).item(getInstanceType(this));
            }
            let b = DependencyProperty.h(a, getInstanceType(this));
            if (b == null) {
                return null;
            }
            if (!Series.hg.containsKey(a)) {
                Series.hg.addItem(a, new Dictionary$2(Type.$, DependencyProperty.$, 0));
            }
            Series.hg.item(a).addItem(getInstanceType(this), b);
            return b;
        }
        get_hasMarkers() {
            return false;
        }
        get hasMarkers() {
            return this.get_hasMarkers();
        }
        get_en() {
            return false;
        }
        get en() {
            return this.get_en();
        }
        p9() {
        }
        qa() {
            this.p9();
        }
        vs(a) {
            if (this.dc == null) {
                return this.ve;
            }
            let b = this.dc.vn(this.index + a);
            b = this.vy(b);
            return b;
        }
        vy(a) {
            if (this.actualLayers != null && this.actualLayers.count > 0) {
                let b = true;
                for (let c = 0; c < this.actualLayers.count; c++) {
                    let d = this.actualLayers._inner[c];
                    if (!d.target.fw) {
                        b = false;
                    }
                }
                if (!b) {
                    return a;
                }
                a = BrushUtil.s(a, this.ib);
                return a;
            }
            return a;
        }
        vv(a) {
            if (this.dc == null) {
                return this.ve;
            }
            let b = this.dc.vt(this.index + a);
            b = this.vy(b);
            return b;
        }
        vt(a) {
            if (this.dc == null) {
                return this.ve;
            }
            let b = this.dc.vr(this.index + a);
            b = this.vy(b);
            return b;
        }
        vu(a) {
            if (this.dc == null) {
                return this.vi;
            }
            let b = this.dc.vs(this.index + a);
            b = this.vy(b);
            return b;
        }
        vq() {
            return null;
        }
        vr() {
            return null;
        }
        s3() {
            return null;
        }
        ip() {
            return NaN;
        }
        wm(a) {
            let b = this.cw.b9;
            let c = this.cw.ca;
            let d = this.cw.getEffectiveViewport();
            let e = { $type: Point_$type, x: ViewportUtils.b(a.x, c, b, d), y: ViewportUtils.g(a.y, c, b, d) };
            return e;
        }
        ww(a) {
            let b = this.wm({ $type: Point_$type, x: a.left, y: a.bottom });
            let c = this.wm({ $type: Point_$type, x: a.right, y: a.top });
            return new Rect(2, b, c);
        }
        wc(a) {
            let b = this.dc != null ? this.dc.wk : this.cw.b9;
            let c = this.cw.ca;
            let d = this.cw.getEffectiveViewport();
            let e = ViewportUtils.e(a.x, c, b, d);
            let f = ViewportUtils.i(a.y, c, b, d);
            return { $type: Point_$type, x: e, y: f };
        }
        ky(a, b) {
            let c = this.cw.c(a);
            let d = c != null ? c.item : null;
            if (d == null) {
                let e = this.wm(b);
                d = this.ko(e);
            }
            return d;
        }
        ge(a) {
            return false;
        }
        ay(a) {
            return new AxisRange(NaN, NaN);
        }
        az(a) {
            return new AxisRange(NaN, NaN);
        }
        wy() {
            return new Size(1, 0, 0);
        }
        ax(a, b, c) {
            this.p0();
            if (!this.isVertical) {
                if (this.ih == 0 && this.ik == 0) {
                    return a;
                }
                let d = new ScalerParams(0, c, this.dc.wz, b.ch, this.getEffectiveViewport());
                d.b = this.iz();
                let e = b.el(a.c, d);
                let f = b.el(a.b, d);
                if (b.ch) {
                    f += this.ih;
                    e -= this.ik;
                }
                else {
                    f -= this.ik;
                    e += this.ih;
                }
                let g = b.eo(e, d);
                let h = b.eo(f, d);
                return new AxisRange(g, h);
            }
            else {
                if (this.ii == 0 && this.ij == 0) {
                    return a;
                }
                let i = new ScalerParams(0, c, this.dc.wz, b.ch, this.getEffectiveViewport());
                i.b = this.iz();
                let j = b.el(a.c, i);
                let k = b.el(a.b, i);
                if (!b.ch) {
                    k += this.ij;
                    j -= this.ii;
                }
                else {
                    k -= this.ii;
                    j += this.ij;
                }
                let l = b.eo(j, i);
                let m = b.eo(k, i);
                return new AxisRange(l, m);
            }
        }
        p0() {
            if (isNaN_(this.ik)) {
                let a = this.w1(1, 1);
                this.ik = a.top;
                if (isNaN_(this.ik)) {
                    this.ik = 0;
                }
            }
            if (isNaN_(this.ih)) {
                let b = this.w1(1, 1);
                this.ih = b.bottom;
                if (isNaN_(this.ih)) {
                    this.ih = 0;
                }
            }
            if (isNaN_(this.ii)) {
                let c = this.w1(1, 1);
                this.ii = c.left;
                if (isNaN_(this.ii)) {
                    this.ii = 0;
                }
            }
            if (isNaN_(this.ij)) {
                let d = this.w1(1, 1);
                this.ij = d.right;
                if (isNaN_(this.ij)) {
                    this.ij = 0;
                }
            }
        }
        ru(a) {
            this.gs = false;
            if (this.dc != null) {
                this.dc.ar.ac(0, this, this.a1, a);
                if (this.renderRequested != null) {
                    let b = new RenderRequestedEventArgs();
                    b.animate = a;
                    this.renderRequested(this, b);
                    a = b.animate;
                }
            }
        }
        pk(a) {
            this.rv(a);
            if (this.hf(this.cw.b9, this.cw.ca, this.cw)) {
                this.pv();
            }
            this.gs = false;
        }
        get bv() {
            return this.bu;
        }
        set bv(a) {
            this.bu = a;
        }
        rv(a) {
            {
                this.rh();
            }
            if (this.g4 && !this.go()) {
                this.g3 = false;
            }
            if (this.g7 && !this.gp()) {
                this.g6 = false;
                this.q2();
            }
        }
        get cf() {
            return this.ce;
        }
        get_eo() {
            return this.gc();
        }
        get eo() {
            return this.get_eo();
        }
        gc() {
            return this.highlightedItemsSource != null;
        }
        rh() {
            let a = false;
            if (this.bo != null) {
                a = true;
            }
            let b = this.bw;
            if (b == 0) {
                if (this.dc != null) {
                    if (this.dc.bt != 0) {
                        b = this.dc.bt;
                    }
                }
            }
            if (b == 0) {
                b = 1;
            }
            if (!this.eo || a) {
                b = 1;
            }
            if (this.bv != b) {
                if (this.bv == 1 && b != 1) {
                    this.bv = b;
                    this.pm();
                }
                else {
                    this.bv = b;
                    this.pi();
                }
            }
        }
        pi() {
            if (!this.gu) {
                return;
            }
            if (this.b5 != null) {
                this.b5.au();
            }
        }
        static pp() {
            if (Series.hk == null) {
                Series.hk = new Dictionary$2(String_$type, String_$type, 0);
                Series.hl = new Dictionary$2(String_$type, String_$type, 0);
                Series.pb(Series.hk, Series.hl);
            }
        }
        static nx(a) {
            Series.pp();
            if (Series.hk.containsKey(a)) {
                return Series.hk.item(a);
            }
            return PlatformAPIHelper.q(a);
            return a;
        }
        static ny(a) {
            Series.pp();
            if (Series.hl.containsKey(a)) {
                return Series.hl.item(a);
            }
            return PlatformAPIHelper.r(a);
            return a;
        }
        static pb(a, b) {
            Series.hk.item("ItemsSource", "dataSource");
            Series.hl.item("dataSource", "ItemsSource");
            Series.hk.item("HighlightedItemsSource", "highlightedDataSource");
            Series.hl.item("highlightedDataSource", "HighlightedItemsSource");
        }
        r4(a, b) {
            let c = typeCast(Brush.$, b.value);
            if (c == null) {
                return;
            }
            b.value = BrushUtil.s(c, this.ib);
        }
        r2(a, b) {
            let c = typeCast(String_$type, b.value);
            if (c != null) {
                c += this.mj;
                b.value = c;
            }
        }
        r1(a, b) {
            if (this.highlightedItemsSource != null) {
                b.value = this.highlightedItemsSource;
                return;
            }
            b.value = this.itemsSource;
        }
        r3(a, b) {
            let c = this.ke / 1000;
            if (c != 0) {
                b.value = this.ke;
                return;
            }
            b.value = this.kf;
        }
        get_gu() {
            return true;
        }
        get gu() {
            return this.get_gu();
        }
        pm() {
            if (!this.gu) {
                return;
            }
            if (this.b5 == null || !this.cb.contains(this.b5)) {
                let a = new SeriesLayer();
                let b = this.ht();
                for (let c of fromEnum(b)) {
                    a.m.add(c);
                }
                this.b5 = a;
                this.cb.add(a);
            }
            else {
                this.b5.at();
            }
        }
        ht() {
            let a = ((() => {
                let $ret = new SeriesLayerPropertyOverlay();
                $ret.ad = "ItemsSource";
                $ret.y = "HighlightedItemsSource";
                $ret.q = true;
                return $ret;
            })());
            a.valueResolving = delegateCombine(a.valueResolving, runOn(this, this.r1));
            let b = ((() => {
                let $ret = new SeriesLayerPropertyOverlay();
                $ret.ad = "ShouldAnimateOnDataSourceSwap";
                $ret.q = true;
                $ret.x = true;
                $ret.p = true;
                return $ret;
            })());
            let c = ((() => {
                let $ret = new SeriesLayerPropertyOverlay();
                $ret.ad = "TransitionDuration";
                $ret.y = "TransitionInDuration";
                $ret.q = true;
                $ret.p = true;
                return $ret;
            })());
            c.valueResolving = delegateCombine(c.valueResolving, runOn(this, this.r3));
            let d = ((() => {
                let $ret = new SeriesLayerPropertyOverlay();
                $ret.ad = "Title";
                $ret.p = true;
                $ret.q = true;
                return $ret;
            })());
            d.valueResolving = delegateCombine(d.valueResolving, runOn(this, this.r2));
            let e = ((() => {
                let $ret = new SeriesLayerPropertyOverlay();
                $ret.ad = "LegendItemVisibility";
                $ret.q = true;
                $ret.y = "HighlightedLegendItemVisibility";
                $ret.p = true;
                return $ret;
            })());
            e.valueResolving = delegateCombine(e.valueResolving, runOn(this, this.qb));
            let f = new List$1(SeriesLayerPropertyOverlay.$, 0);
            let g = this.hu();
            {
                f.add(a);
            }
            f.add(d);
            f.add(b);
            f.add(c);
            f.add(e);
            f.o(g);
            if (this.cf.count > 0) {
                let h = new Dictionary$2(String_$type, SeriesLayerPropertyOverlay.$, 0);
                for (let i of fromEnum(f)) {
                    h.addItem(i.ad, i);
                }
                for (let j of fromEnum(this.cf)) {
                    if (h.containsKey(j.ad)) {
                        j.k = h.item(j.ad);
                        f.remove(h.item(j.ad));
                    }
                    f.add(j);
                }
            }
            return f;
        }
        qb(a, b) {
            if (this.w2 == 1) {
                b.value = enumGetBox(Visibility_$type, 1);
                return;
            }
            b.value = enumGetBox(Visibility_$type, this.legendItemVisibility);
        }
        hu() {
            return new List$1(SeriesLayerPropertyOverlay.$, 0);
        }
        get fw() {
            return this.dw;
        }
        qz() {
            if (!this.dw) {
                this.pg();
            }
            this.dw = true;
            if (this.renderValid != null) {
                this.renderValid(this, new RenderValidEventArgs());
            }
        }
        o3() {
            if (this.g2 && !this.g4) {
                this.dd.r = truncate(Math.max(this.ja(), this.jb()));
                this.o8();
            }
            if (this.g5 && !this.g7) {
                this.dd.r = truncate(Math.max(this.ja(), this.jc()));
                this.o8();
            }
        }
        qq() {
            if (!this.d4()) {
                if (this.dc != null) {
                    this.dc.p3(this);
                }
            }
        }
        q2() {
            if (this.gl) {
                if (this.bo != null) {
                    this.bo.rr(this);
                }
                else if (this.dc != null) {
                    this.dc.series.remove(this);
                }
            }
            if (this.bo != null) {
                if (this.bo.gk) {
                    if (this.bo.highlightedItemsSource != null) {
                        this.bo.highlightedItemsSource = null;
                    }
                }
            }
            if (this.transitionOutCompleted != null) {
                this.transitionOutCompleted(this, new TransitionOutCompletedEventArgs());
            }
        }
        rr(a) {
            if (a.b6 != null) {
                if (this.cc.contains(a.b6)) {
                    this.cc.remove(a.b6);
                }
                if (this.cb.contains(a.b6)) {
                    this.cb.remove(a.b6);
                }
            }
        }
        o8() {
        }
        rw(a, b) {
            if (this.cv == null) {
                this.cv = this.ct();
                this.cv.t = true;
                if (this.dc != null) {
                    this.dc.am.o(this.cv);
                    this.cv.a = this.dc.am;
                }
                this.cv.a4();
            }
            this.cv.b9 = a;
        }
        rb() {
        }
        rx() {
            if (this.cv == null) {
                this.cv = this.ct();
                this.cv.t = true;
                if (this.dc != null) {
                    this.dc.am.o(this.cv);
                    this.cv.a = this.dc.am;
                }
                this.cv.a4();
            }
        }
        rt(a, b, c, d, e) {
            this.ba.a$z(this, a, b, d, e);
        }
        bd() {
            return null;
        }
        getEffectiveViewport1(a) {
            if (this.dc == null) {
                return Rect.empty;
            }
            if (a.s) {
                return this.dc.wl;
            }
            if (a.t) {
                if (this.dc.wl.isEmpty) {
                    return this.dc.wl;
                }
                let b = this.dc.wr(a.b9, this.dc.wz, this.dc.wl);
                return b;
            }
            return this.dc.wl;
        }
        getMainContentViewport() {
            return this.wo(this.cw);
        }
        wo(a) {
            if (this.dc == null || this.dc.wk.isEmpty) {
                return a.b9;
            }
            if (a.s) {
                return a.b9;
            }
            if (a.t) {
                if (this.dc.wl.isEmpty) {
                    return a.b9;
                }
                if (this.dc.wk.equals1(this.dc.wz)) {
                    return a.b9;
                }
                let b = this.dc.wr(a.b9, this.dc.wz, this.dc.wl);
                let c = this.dc.wp(a.b9, b, this.dc.wh);
                return c;
            }
            return this.dc.wk;
        }
        wr(a) {
            if (!this.wx.equals1(a)) {
                return Rect.empty;
            }
            return this.getEffectiveViewport();
        }
        wq(a) {
            if (this.dc == null || this.dc.wl.isEmpty) {
                return Rect.empty;
            }
            let b = this.dc.wl;
            let c = a.b9;
            let d = (b.left - c.left) / c.width;
            let e = (b.top - c.top) / c.height;
            let f = (b.right - c.left) / c.width;
            let g = (b.bottom - c.top) / c.height;
            return new Rect(0, d, e, f - d, g - e);
        }
        getEffectiveViewport() {
            return this.getEffectiveViewport1(this.cw);
        }
        rn() {
            this.ro(null);
        }
        get_ef() {
            return false;
        }
        get ef() {
            return this.get_ef();
        }
        get_el() {
            return this.by == 2 || this.by == 4;
        }
        get el() {
            return this.get_el();
        }
        ro(a) {
            if (this.fj) {
                this.ba.a$ak(this, a);
            }
        }
        rp(a) {
            if (this.fj) {
                this.ba.a$al(this, a, this.dc);
            }
        }
        getViewInfo(a, b) {
            a = this.cw.b9;
            b = this.cw.ca;
            return {
                p0: a,
                p1: b
            };
        }
        hf(a, b, c) {
            if (a.width == 0 || a.height == 0) {
                return false;
            }
            if (this.isFragment) {
                return true;
            }
            return this._visibility == 0;
        }
        o7(a, b) {
            if (a) {
                this.g1 = true;
            }
        }
        d6() {
            return this.d7(this.cw);
        }
        d7(a) {
            let b = a.b9;
            let c = a.ca;
            if (!this.hf(b, c, a)) {
                this.o7(true, a);
                return true;
            }
            return false;
        }
        q4(a, b) {
            this.cw.b9 = b;
            this.su(a, b);
            if (this.dc != null) {
                this.dc.ar.ae(0, this, this.a1, b);
                if (a.isEmpty || a.width == 0 || a.height == 0) {
                    this.dc.ok();
                }
            }
        }
        sv(a, b) {
        }
        su(a, b) {
        }
        get g1() {
            return this.dz;
        }
        set g1(a) {
            this.dz = a;
        }
        p2(a) {
            a.pl(null);
        }
        qo() {
            this.gt = false;
            this.g1 = true;
            if (this.dc != null) {
                this.dc.or();
            }
        }
        ri(a) {
            this.hw.h(a);
            this.sl();
            this.hw.e();
        }
        qi() {
            this.sl();
            this.q5();
        }
        qn() {
            this.gt = false;
            this.g1 = true;
            if (this.dc != null) {
                this.dc.oq();
            }
        }
        get_fh() {
            return true;
        }
        get fh() {
            return this.get_fh();
        }
        get_isUsableInLegend() {
            return true;
        }
        get isUsableInLegend() {
            return this.get_isUsableInLegend();
        }
        qv() {
            this.cw.a0();
        }
        qp() {
            this.q5();
        }
        q5() {
            this.cw.bb();
            this.q7(false);
            this.sm();
            if (this.isStacked) {
                this.p5((a) => {
                    a.q5();
                    if (a.ei) {
                        a.p3((b) => {
                            b.q6();
                            return true;
                        });
                    }
                    return true;
                });
            }
            if (this.ei) {
                this.p3((a) => {
                    a.q6();
                    return true;
                });
            }
        }
        q6() {
            this.cw.bb();
            this.q7(true);
            if (this.isStacked) {
                this.p5((a) => {
                    a.q6();
                    if (a.ei) {
                        a.p3((b) => {
                            b.q6();
                            return true;
                        });
                    }
                    return true;
                });
            }
            if (this.ei) {
                this.p3((a) => {
                    a.q6();
                    return true;
                });
            }
        }
        gb() {
            return false;
        }
        q7(a) {
            if (this.a1 == null || this.a1.c) {
                return;
            }
            let b = this.cw.b9;
            let c = this.cw.ca;
            let d = this.hf(b, c, this.cw);
            let e = this.dc != null && this.dc.fh && this.cv != null && this.hf(this.cv.b9, this.cv.ca, this.cv);
            if (d) {
                if (a) {
                    this.gs = !this.gb();
                    this.pk(false);
                }
                else {
                    this.ru(false);
                    this.gs = !this.gb();
                }
            }
            if (e) {
                if (!this.g1) {
                    this.qn();
                    this.gt = true;
                }
            }
        }
        get g3() {
            return this.d0;
        }
        set g3(a) {
            this.d0 = a;
        }
        get g6() {
            return this.d1;
        }
        set g6(a) {
            this.d1 = a;
        }
        get g4() {
            if (this.g3 == false) {
                return false;
            }
            return this.jb() > 0;
        }
        get g7() {
            if (this.g6 == false) {
                return false;
            }
            return this.jc() > 0;
        }
        v() {
            super.v();
            this.raisePropertyChanged("Opacity", this._opacity, this._opacity);
        }
        w(a, b) {
            super.w(a, b);
            this.raisePropertyChanged("Visibility", enumGetBox(Visibility_$type, a), enumGetBox(Visibility_$type, b));
        }
        qu() {
        }
        qh() {
            if (this.dc != null) {
                this.dc.ok();
            }
        }
        py() {
            if (this.dc != null) {
                for (let a = 0; a < this.dc.selectedSeriesItems.count; a++) {
                    let b = this.dc.selectedSeriesItems._inner[a];
                    b.g(this.dc);
                }
                for (let c = 0; c < this.dc.selectedSeriesItems.count; c++) {
                    let d = this.dc.selectedSeriesItems._inner[c];
                    if (d.series != null && d.series != this) {
                        continue;
                    }
                    if (d.item == null) {
                        this.pz();
                    }
                    else {
                        this.pu(d.item);
                    }
                }
            }
        }
        pq() {
            if (this.dc != null) {
                for (let a = 0; a < this.dc.focusedSeriesItems.count; a++) {
                    let b = this.dc.focusedSeriesItems._inner[a];
                    if (b.series != null && b.series != this) {
                        continue;
                    }
                    this.pt(b.item);
                }
            }
        }
        rc(a, b, c, d) {
            switch (b) {
                case "SyncLink":
                    if (typeCast(SyncLink.$, c) !== null) {
                        let e = c;
                        e.propertyUpdated = delegateRemove(e.propertyUpdated, this.bi);
                        this.rm(typeCast(IFastItemsSourceProvider_$type, c));
                    }
                    if (typeCast(SyncLink.$, d) !== null) {
                        let f = d;
                        f.propertyUpdated = delegateCombine(f.propertyUpdated, this.bi);
                        this.rl(typeCast(IFastItemsSourceProvider_$type, d));
                    }
                    if (this.index == -1) {
                        this.index = XamDataChart.y6(this);
                    }
                    break;
                case Series.$$p[41]:
                    this.ci = this.ck();
                    this.sk();
                    this.pl(null);
                    this.q5();
                    break;
                case Series.$$p[67]:
                    this.d3 = this.ha;
                    this.pg();
                    this.q5();
                    break;
                case SeriesViewer.$$p[1]:
                case SeriesViewer.$$p[21]:
                case SeriesViewer.$$p[20]:
                case SeriesViewer.$$p[22]:
                    this.pl(null);
                    break;
                case "HighlightingMode":
                    this.by = this.bz();
                    break;
                case "SelectionMode":
                    this.cq = this.cs();
                    break;
                case "FocusMode":
                    this.cp = this.cr();
                    break;
                case "SeriesViewer":
                    if (typeCast(SeriesViewer.$, c) !== null) {
                        this.j0 = null;
                        let g = c;
                        g.windowRectChanged = delegateRemove(g.windowRectChanged, this.dq);
                        let h = c.series;
                        h.collectionChanged = delegateRemove(h.collectionChanged, this.hz);
                        let i = c;
                        i.propertyUpdated = delegateRemove(i.propertyUpdated, this.bi);
                        c.ar.ad(0, this);
                        this.ro(c);
                        this.cw.at(c);
                    }
                    if (typeCast(SeriesViewer.$, d) !== null) {
                        this.j0 = d.c9.j.ae;
                        let j = d;
                        j.windowRectChanged = delegateCombine(j.windowRectChanged, this.dq);
                        let k = d.series;
                        k.collectionChanged = delegateCombine(k.collectionChanged, this.hz);
                        let l = d;
                        l.propertyUpdated = delegateCombine(l.propertyUpdated, this.bi);
                        this.a1 = d.ar.k(0, this, runOn(this, this.pk));
                        this.cw.ao(d);
                        this.by = this.bz();
                        this.cq = this.cs();
                        this.cp = this.cr();
                        this.vj = this.vx();
                        this.vf = this.vw();
                        this.sh();
                        this.pg();
                        if (this.f1) {
                            this.ie = this.jl();
                        }
                        this.pn();
                        this.kh = this.dc.i7();
                        this.py();
                        this.pq();
                    }
                    if (this.dc == null) {
                        this.externalObject._ensureTooltipDestroyed();
                        this.dd.w();
                        if (c != null) {
                            let m = c;
                            m.p3(this);
                        }
                    }
                    if (this.index != -1) {
                        this.ri(null);
                    }
                    if (this.index == -1 || d == null) {
                        this.index = XamDataChart.y6(this);
                    }
                    this.a5 = this.a6();
                    this.oz(typeCast(SeriesViewer.$, c), typeCast(SeriesViewer.$, d));
                    break;
                case Series.$$p[56]:
                    if (this.cw != null) {
                        this.cw.ba();
                    }
                    break;
                case "HitTestMode":
                    this.b2 = this.b3();
                    break;
                case "ActualHitTestMode":
                    if (this.dc != null) {
                        this.dc.q7();
                    }
                    break;
                case Series.$$p[26]:
                    this.ru(true);
                    break;
                case Series.$$p[19]:
                case Series.$$p[25]:
                    this.qh();
                    break;
                case "LegendItemBadgeTemplate":
                case "LegendItemTemplate":
                case Series.$$p[34]:
                case Series.$$p[33]:
                    this.ri(b);
                    this.q5();
                    this.qh();
                    break;
                case Series.$$p[38]:
                    this.sj();
                    break;
                case Series.$$p[27]:
                    this.si();
                    break;
                case Series.$$p[12]:
                case Series.$$p[13]:
                    if (this.lw != null) {
                        this.as = new BindingFormatter();
                        this.as.j = this.lw;
                        this.as.d = this.ag;
                    }
                    else {
                        this.as = null;
                    }
                    break;
                case Series.$$p[14]:
                case Series.$$p[15]:
                    if (this.lw != null) {
                        this.at = new BindingFormatter();
                        this.at.j = this.lz;
                        this.at.d = this.ah;
                    }
                    else {
                        this.at = null;
                    }
                    break;
                case Series.$$p[6]:
                case Series.$$p[16]:
                case Series.$$p[42]:
                case Series.$$p[17]:
                case Series.$$p[18]:
                    this.pl(b);
                    this.q5();
                    break;
                case "Index":
                    if (typeGetValue(c) != typeGetValue(d)) {
                        this.qu();
                        this.ci = this.ck();
                        this.sk();
                        this.sj();
                        this.pl(null);
                        this.q5();
                    }
                    break;
                case "RadiusX":
                case "RadiusY":
                case "RoundedCornersLocation":
                    this.q5();
                    break;
                case Series.$$p[10]:
                    this.sh();
                    this.q5();
                    break;
                case Series.$$p[37]:
                case Series.$$p[36]:
                case Series.$$p[39]:
                    this.q5();
                    break;
                case Series.$$p[31]:
                    this.qv();
                    this.q5();
                    break;
                case Series.$$p[68]:
                case Series.$$p[47]:
                case Series.$$p[46]:
                case Series.$$p[48]:
                case Series.$$p[49]:
                    this.q5();
                    break;
                case Series.$$p[55]:
                    this.sk();
                    if (this.be == 1) {
                        this.sm();
                    }
                    break;
                case Series.$$p[3]:
                case Series.$$p[4]:
                    this.pg();
                    this.q5();
                    break;
                case Series.$$p[21]:
                    this.vf = this.vw();
                    break;
                case Series.$$p[45]:
                    this.vj = this.vx();
                    break;
                case Series.$$p[8]:
                    this.vo = this.vj;
                    this.q5();
                    break;
                case Series.$$p[2]:
                    this.vm = this.vf;
                    this.q5();
                    break;
                case Series.$$p[1]:
                case Series.$$p[7]:
                case Series.$$p[9]:
                    this.safeActualBrush = this.vz(this.ve);
                    this.vl = this.ve;
                    this.vn = this.vi;
                    this.im = this.ig;
                    this.vh = this.vi;
                    this.vg = this.ve;
                    this.q5();
                    this.cw.bx();
                    if (this.toolTip != null && this.a9 != null) {
                        this.ba.a$as(this, this.toolTip);
                    }
                    break;
                case "Visibility":
                    this.cw.by();
                    break;
                case Series.$$p[22]:
                    this.ru(true);
                    break;
                case "ItemsSource":
                    if (this.c4 != null) {
                        this.rl(this.c4);
                    }
                    break;
                case Series.$$p[20]:
                    this.pg();
                    if (c != d && d != null) {
                        if (!this.gh || !this.d9) {
                            this.g3 = true;
                        }
                        this.g6 = false;
                        this.gl = false;
                    }
                    this.qo();
                    if (typeCast(IFastItemsSource_$type, c) != null) {
                        let n = c;
                        n.event = delegateRemove(n.event, this.jw);
                    }
                    if (typeCast(IFastItemsSource_$type, d) != null) {
                        let o = d;
                        o.event = delegateCombine(o.event, this.jw);
                    }
                    this.py();
                    this.pq();
                    break;
                case "Legend":
                    if (d != null) {
                        if (a == this) {
                            d.seriesOwner = this;
                        }
                        else if (typeCast(XamDataChart.$, a) !== null) {
                            d.chartOwner = a;
                        }
                    }
                    this.a5 = this.a6();
                    break;
                case "ActualLegend":
                    if (this.a5 != null && this.a5.isItemwise) {
                        this.pg();
                        this.eh = true;
                    }
                    else {
                        this.eh = false;
                    }
                    if (c != null && c.isItemwise) {
                        c.clearLegendItemsForSeries(this);
                    }
                    this.ep = this.a5 == null ? false : this.a5.isFinancial;
                    this.oy(typeCast(IChartLegend_$type, c), typeCast(IChartLegend_$type, d));
                    this.pv();
                    break;
                case "LegendItem":
                    this.o0(typeCast(Control.$, c), typeCast(Control.$, d));
                    break;
                case Series.$$p[35]:
                    this.pg();
                    this.cw.a5();
                    this.qh();
                    break;
                case Series.$$p[57]:
                    if (this.a9 != null || this.fj) {
                        this.ba.a$as(this, this.toolTip);
                    }
                    break;
                case "CrosshairPoint":
                    if (this.dc != null) {
                        this.ss(this.dc.v8);
                    }
                    if (this.dc != null) {
                        if (!this.d8) {
                            this.dc.qz(this, this.ko(this.dc.v8));
                        }
                    }
                    break;
                case Series.$$p[43]:
                    this.ie = this.jl();
                    break;
                case "ActualResolution":
                    this.ru(false);
                    this.qn();
                    break;
                case Series.$$p[72]:
                    this.ik = this.jv;
                    if (this.dc != null) {
                        this.dc.oe();
                    }
                    break;
                case Series.$$p[69]:
                    this.ih = this.js;
                    if (this.dc != null) {
                        this.dc.oe();
                    }
                    break;
                case Series.$$p[58]:
                case Series.$$p[59]:
                    let p = this.dd.f();
                    this.dd.w();
                    if (p) {
                        this.qq();
                    }
                    this.dd.r = this.ke;
                    this.dd.b = this.de;
                    this.ru(false);
                    break;
                case "DiscreteLegendItemTemplate":
                    this.ru(false);
                    break;
                case "VisibilityProxy":
                    if (c != d) {
                        this.ru(false);
                    }
                    this.qn();
                    this.cw.by();
                    break;
                case Series.$$p[32]:
                    this.by = this.bz();
                    this.ru(false);
                    break;
                case Series.$$p[28]:
                    this.ic = isNaN_(this.jg) ? 0.2 : this.jg;
                    break;
                case Series.$$p[54]:
                    this.pn();
                    break;
                case "FinalValue":
                    this.sr();
                    break;
                case Series.$$p[73]:
                    this.cy = this.cz();
                    break;
            }
        }
        vw() {
            if (this.vp != null) {
                return this.vp;
            }
            else {
                if (this.dc != null && this.dc.vk != null) {
                    return this.dc.vk;
                }
                else {
                    return BrushUtil.j(255, 255, 0, 0);
                }
            }
        }
        vx() {
            if (this.v4 != null) {
                return this.v4;
            }
            else {
                if (this.dc != null && this.dc.v1 != null) {
                    return this.dc.v1;
                }
                else {
                    return BrushUtil.j(255, 255, 0, 0);
                }
            }
        }
        vz(a) {
            if (this.gm) {
                return this.cw.b2(a);
            }
            return a;
        }
        sk() {
            let a = this.ci;
            let b = this.jq;
            if (isNaN_(b)) {
                b = DeviceUtils.g(2);
            }
            if (a == 2) {
                b = 1;
            }
            if (this.ig != b) {
                this.ig = b;
            }
            this.im = this.ig;
        }
        ss(a) {
            if (this.dc != null && this.dc.fa && this.by != 1 && this.dc.e7) {
                if (isNaN_(a.x) || isNaN_(a.y)) {
                    this.ba.a$ab(this, null, a, false, false, false, false, this.dc.bq == this, true);
                }
                else {
                    this.ba.a$ab(this, this.ko(a), a, false, false, false, false, this.dc.bq == this, false);
                }
            }
        }
        pu(a) {
            if (this.dp == null) {
                return;
            }
            let b = this.dp.indexOf(a);
            if (b < 0) {
                return;
            }
            if (this.fj) {
                this.ba.a$x(this, a, b);
            }
        }
        pz() {
            if (this.dp == null) {
                return;
            }
            if (this.fj) {
                this.ba.a$v(this);
            }
        }
        px() {
            if (this.dp == null) {
                return;
            }
            if (this.fj) {
                this.ba.a$ao(this);
            }
        }
        pt(a) {
            if (this.dp == null) {
                return;
            }
            let b = this.dp.indexOf(a);
            if (b < 0) {
                return;
            }
            if (this.fj) {
                this.ba.a$w(this, a, b);
            }
        }
        ps(a) {
            if (this.dp == null) {
                return;
            }
            let b = this.dp.indexOf(a);
            if (b < 0) {
                return;
            }
            if (this.fj) {
                this.ba.a$an(this, a, b);
            }
        }
        eg(a) {
            if (this.dp != null && this.dp.indexOf(a) >= 0) {
                return true;
            }
            return false;
        }
        pr(a) {
            if (this.dp == null) {
                return;
            }
            let b = this.dp.indexOf(a);
            if (b < 0) {
                return;
            }
            if (this.fj) {
                this.ba.a$am(this, a, b);
            }
        }
        pn() {
            let vwr_ = this.dc;
            if (vwr_ != null) {
                if (vwr_.e8) {
                    let host_ = vwr_.jf;
                    if (host_ != null) {
                        Series.po(this, this.dc, false);
                        this.externalObject.owner = (this.externalObject.owner) ? this.externalObject.owner : ((host_) ? host_.externalObject : null);
                    }
                }
                else {
                    Series.po(this, this.dc, false);
                    this.externalObject.owner = (this.externalObject.owner) ? this.externalObject.owner : ((vwr_) ? vwr_.externalObject : null);
                }
            }
            if (this.dc != null && (this.externalObject.owner)) {
                let sv_ = this.dc;
                this.externalObject.owner._ensureDefaultTooltip(this.externalObject);
                ;
            }
        }
        get_ff() {
            return false;
        }
        get ff() {
            return this.get_ff();
        }
        ph(a) {
            a.d8 = true;
        }
        get c4() {
            return this.c3;
        }
        set c4(a) {
            if (this.c4 != a) {
                let b = this.c4;
                this.c3 = a;
                this.raisePropertyChanged("SyncLink", b, this.c4);
            }
        }
        get dc() {
            return this.db;
        }
        set dc(a) {
            if (this.dc != a) {
                let b = this.dc;
                this.db = a;
                this.raisePropertyChanged("SeriesViewer", b, this.db);
            }
        }
        get da() {
            return typeCast(XamDataChart.$, this.dc);
        }
        set da(a) {
            this.dc = a;
        }
        get itemsSource() {
            return this.c(Series.t4);
        }
        set itemsSource(a) {
            this.h(Series.t4, a);
        }
        pd(a, b, c, d) {
            this.pg();
            if (this.dc != null) {
                this.dc.q0();
            }
        }
        get legend() {
            return this.c(Series.ua);
        }
        set legend(a) {
            this.h(Series.ua, a);
        }
        get sy() {
            if (this.sw == null && this.a5 != null) {
                this.sw = this.sx();
            }
            return this.sw;
        }
        set sy(a) {
            if (this.sy != a) {
                let b = this.sy;
                this.sw = a;
                this.raisePropertyChanged("LegendItem", b, this.sw);
            }
        }
        k0() {
            return this.sx();
        }
        sx() {
            let a = typeCast(ContentControl.$, this.sw);
            let b = this.legendItemTemplate;
            if (b == null) {
                b = this.cw.bz(this.c2);
            }
            if (b != null) {
                if (a == null) {
                    a = new ContentControl();
                }
                a.content = ((() => {
                    let $ret = new DataContext();
                    $ret.series = this;
                    $ret.item = null;
                    return $ret;
                })());
                a.ah = b;
            }
            else {
                a = null;
            }
            return a;
        }
        get a5() {
            return this.a4;
        }
        set a5(a) {
            if (this.a5 != a) {
                let b = this.a4;
                this.a4 = a;
                this.raisePropertyChanged("ActualLegend", b, this.a4);
            }
        }
        get legendItemBadgeTemplate() {
            return this.c(Series.t7);
        }
        set legendItemBadgeTemplate(a) {
            this.h(Series.t7, a);
        }
        s2() {
            return this.legendItemBadgeTemplate;
        }
        get legendItemTemplate() {
            return this.c(Series.t8);
        }
        set legendItemTemplate(a) {
            this.h(Series.t8, a);
        }
        get s1() {
            return this.c(Series.to);
        }
        set s1(a) {
            this.h(Series.to, a);
        }
        get index() {
            return typeGetValue(this.c(Series.tz));
        }
        set index(a) {
            this.h(Series.tz, a);
        }
        st() {
            this.ri(null);
        }
        pl(a) {
            this.ri(a);
        }
        fi(a, b, c, d) {
            if (!BrushUtil.d(c, d)) {
                return true;
            }
            return false;
        }
        sl() {
            this.qn();
            if (this.index < 0) {
                return;
            }
            if (this.vk != null) {
                this.sc("ActualBrush");
                let a = this.ve;
                this.cw.bk();
                this.cw.aq();
                let b = this.ve;
                let c = this.fi("ActualBrush", this.hw.f > 0 ? this.hw.d() : null, a, b);
                this.se("ActualBrush", c);
            }
            else {
                this.ve = this.dc == null ? null : this.dc.vn(this.index);
            }
            if (this.ci == 2) {
                this.sc("ActualOutline");
                let d = this.vi;
                this.cw.bl();
                this.vi = this.ve;
                let e = this.vi;
                let f = this.fi("ActualOutline", this.hw.f > 0 ? this.hw.d() : null, d, e);
                this.se("ActualOutline", f);
            }
            else {
                if (this.v0 != null) {
                    this.sc("ActualOutline");
                    let g = this.vi;
                    this.cw.bl();
                    this.cw.ar();
                    let h = this.vi;
                    let i = this.fi("ActualOutline", this.hw.f > 0 ? this.hw.d() : null, g, h);
                    this.se("ActualOutline", i);
                }
                else {
                    this.vi = this.dc == null ? null : this.dc.vt(this.index);
                }
            }
            if ((this.fx || this.fd) && this.fs) {
                this.ve = this.vi;
            }
            else if ((this.fx || this.fd) && this.ew) {
                this.vi = this.ve;
            }
            else if ((this.fx || this.fd) && this.fk) {
                this.vi = this.ve;
            }
            else if (this.f4 && this.legendItemBadgeShape == 2) {
                this.ve = this.vi;
            }
        }
        d4() {
            return this.dd.f();
        }
        sb() {
            this.dd.v();
        }
        get ie() {
            if (!this.dy) {
                this.dy = true;
                this.h3 = this.jl();
            }
            return this.h3;
        }
        set ie(a) {
            let b = this.h3;
            this.h3 = a;
            if (b != this.h3) {
                this.raisePropertyChanged("ActualResolution", b, this.h3);
            }
        }
        jl() {
            if (!isNaN_(this.jk)) {
                return this.jk;
            }
            return DeviceUtils.g(1);
        }
        get ik() {
            return this.h7;
        }
        set ik(a) {
            this.h7 = a;
        }
        get ih() {
            return this.h4;
        }
        set ih(a) {
            this.h4 = a;
        }
        r0() {
            this.ik = NaN;
            this.ii = NaN;
            this.ij = NaN;
            this.ih = NaN;
        }
        get ii() {
            return this.h5;
        }
        set ii(a) {
            this.h5 = a;
        }
        get ij() {
            return this.h6;
        }
        set ij(a) {
            this.h6 = a;
        }
        get by() {
            return this.bx;
        }
        set by(a) {
            let b = this.bx;
            this.bx = a;
            if (b != this.bx) {
                this.raisePropertyChanged("ActualHighlightingMode", enumGetBox(SeriesHighlightingMode_$type, b), enumGetBox(SeriesHighlightingMode_$type, this.bx));
            }
        }
        get cq() {
            return this.co;
        }
        set cq(a) {
            let b = this.co;
            this.co = a;
            if (b != this.co) {
                this.raisePropertyChanged("ActualSelectionMode", enumGetBox(SeriesSelectionMode_$type, b), enumGetBox(SeriesSelectionMode_$type, this.co));
            }
        }
        get cp() {
            return this.cn;
        }
        set cp(a) {
            let b = this.cn;
            this.cn = a;
            if (b != this.cn) {
                this.raisePropertyChanged("ActualFocusMode", enumGetBox(SeriesSelectionMode_$type, b), enumGetBox(SeriesSelectionMode_$type, this.cn));
            }
        }
        get_gf() {
            return !this.ef;
        }
        get gf() {
            return this.get_gf();
        }
        pw() {
        }
        bz() {
            if (!this.ff) {
                return 1;
            }
            if (this.dc != null) {
                if (this.dc.by != 1 && this.dc.by != 0 && !this.e2) {
                    return this.dc.by;
                }
            }
            if (this.fe) {
                return 2;
            }
            return 1;
        }
        cs() {
            if (!this.ff) {
                return 1;
            }
            if (this.dc != null) {
                if (this.dc.cb != 1 && this.dc.cb != 0) {
                    return this.dc.cb;
                }
            }
            return 1;
        }
        cr() {
            if (!this.ff) {
                return 1;
            }
            if (this.dc != null) {
                if (this.dc.cb != 1 && this.dc.cb != 0) {
                    return this.dc.b9;
                }
            }
            return 1;
        }
        f0(a) {
            switch (a) {
                case 2:
                case 4: return true;
            }
            return false;
        }
        get ib() {
            return this.h1;
        }
        set ib(a) {
            let b = this.h1;
            this.h1 = a;
            if (b != this.h1) {
                this.raisePropertyChanged("ActualHighlightedValuesFadeOpacity", b, this.h1);
            }
        }
        get ic() {
            return this.h2;
        }
        set ic(a) {
            let b = this.h2;
            this.h2 = a;
            if (b != this.h2) {
                this.raisePropertyChanged("ActualHighlightingFadeOpacity", b, this.h2);
            }
        }
        pg() {
            this.dx = true;
        }
        pv() {
            if (this.dx) {
                this.dx = false;
                if (this.d3) {
                    if (this.eh) {
                        this.rj();
                    }
                }
            }
        }
        rj() {
            if (this.dc == null) {
                return;
            }
            if (this.a5 == null) {
                return;
            }
            if (this.a5.isItemwise) {
                let a = this.a5;
                this.a5.clearLegendItemsForSeries(this);
                if (this.legendItemVisibility == 0) {
                    this.pc();
                    a.renderItemwiseContent(this);
                }
            }
        }
        gv(a) {
            return false;
        }
        pc() {
            if (this.dp == null) {
                return;
            }
            let a = typeCast(IChartItemLegend_$type, this.a5);
            if (a == null || this.dp == null) {
                return;
            }
            this.hv = new List$1(UIElement.$, 0);
            let b = this.dp;
            let c = new List$1(SeriesPointOfInterest.$, 0);
            this.ed(c, false, false, 0, true);
            for (let d = 0; d < c.count; d++) {
                let e = c._inner[d];
                let f = this.vt(e.c);
                let g = this.vs(e.c);
                let h = this.vu(e.c);
                let i = this.vv(e.c);
                let j = new ContentControl();
                let k = this.kt(e.c, true);
                let l = this.kv(e.c);
                let m = null;
                if (typeCast(Date_$type, k) !== null) {
                    let n = k;
                    m = (n.toString());
                }
                else {
                    if (k != null) {
                        m = k.toString();
                    }
                }
                let o = null;
                if (typeCast(Date_$type, l) !== null) {
                    let p = l;
                    o = (p.toString());
                }
                else {
                    if (l != null) {
                        o = l.toString();
                    }
                    else {
                        o = m;
                    }
                }
                if (this.ek) {
                    g = f;
                    i = h;
                }
                let q = this.ku(e.c);
                j.content = ((() => {
                    let $ret = new DataContext();
                    $ret.series = this;
                    $ret.item = q;
                    $ret.itemBrush = g;
                    $ret.outline = i;
                    $ret.itemLabel = m;
                    $ret.legendLabel = o;
                    return $ret;
                })());
                let r = this.s1;
                if (r == null) {
                    r = this.cw.bz(this.c1);
                }
                j.ah = r;
                this.hv.add(j);
            }
        }
        ku(a) {
            return this.dp.item(a);
        }
        kt(a, b) {
            if (this.e0 || this.e8 || this.fu) {
                let c = this.a0();
                if (c != null) {
                    if (!c.co()) {
                        return null;
                    }
                    if (c.cn) {
                        let d = a;
                        if (d < 0) {
                            return null;
                        }
                        let e = c;
                        let f = e.i$d(d);
                        let g = this.h0(f);
                        return g;
                    }
                    else {
                        if (c.ck) {
                            let h = a;
                            if (h < 0) {
                                h = 0;
                            }
                            let i = c;
                            let j = i.getDateTime(h);
                            return j;
                        }
                        else {
                            let k = a;
                            if (k < 0) {
                                return null;
                            }
                            let l = c.kv;
                            if (l == null || l.count == 0) {
                                return null;
                            }
                            let m = false;
                            if (c.b9 && c.cl) {
                                m = true;
                            }
                            if (!m) {
                                if (k >= l.count) {
                                    k = l.count - 1;
                                }
                            }
                            let n = c.gf(k);
                            return n;
                        }
                    }
                }
            }
            return null;
        }
        kv(a) {
            return null;
        }
        get_isColoredItemwise() {
            return this.d3;
        }
        get isColoredItemwise() {
            return this.get_isColoredItemwise();
        }
        get_e7() {
            return true;
        }
        get e7() {
            return this.get_e7();
        }
        sh() {
            let a = (typeCast(XamDataChart.$, this.dc));
            if (a != null) {
                this.ia = isNaN_(this.il) ? a.xk.fp : this.il;
            }
        }
        sj() {
            this.id = isNaN_(this.jh) ? this.jm() : this.jh;
        }
        si() {
            this.ib = isNaN_(this.jf) ? 0.2 : this.jf;
        }
        jm() {
            return 1;
        }
        get e5() {
            return this.dv;
        }
        set e5(a) {
            this.dv = a;
        }
        get cy() {
            return this.cx;
        }
        set cy(a) {
            this.cx = a;
        }
        cz() {
            if (this.c0 == 0) {
                return 1;
            }
            return this.c0;
        }
        get ci() {
            return this.ch;
        }
        set ci(a) {
            this.ch = a;
        }
        ck() {
            if (this.cj == 0) {
                return 1;
            }
            return this.cj;
        }
        a3(a) {
            return ((() => {
                let $ret = new DataContext();
                $ret.series = this;
                $ret.item = a;
                return $ret;
            })());
        }
        c5() {
            return 1;
        }
        c8() {
            return 1;
        }
        rs() {
            this.cw.bg();
        }
        rz() {
            this.eb = true;
            this.g6 = false;
            this.g3 = true;
            this.gl = false;
            this.ru(true);
        }
        q9() {
            this.g3 = false;
            this.g6 = true;
            this.gl = false;
            this.ru(true);
        }
        q8() {
            this.g6 = false;
            this.g3 = true;
            this.gl = false;
            this.ru(true);
        }
        ra() {
            this.gl = true;
            if (!this.gp() || this.jc() == 0 || !this.hf(this.cw.b9, this.cw.ca, this.cw)) {
                this.q2();
            }
            this.g3 = false;
            this.g6 = true;
            this.ru(true);
        }
        rq() {
            this.o4();
        }
        o4() {
        }
        qd() {
        }
        static *_hr(a, b, c) {
            for (let d = b; d < c; d++) {
                yield a(d);
            }
        }
        static hr(a, b, c) {
            return toEnum(() => Series._hr(a, b, c));
        }
        static hq(a, b) {
            return Series.hr(a, 0, b);
        }
        bs() {
            return this.br;
        }
        r6(a) {
            this.sn(a);
        }
        ja() {
            return this.ke;
        }
        jb() {
            return this.kf;
        }
        jc() {
            return this.kg;
        }
        get_g8() {
            return this.d2;
        }
        set_g8(a) {
            this.d2 = a;
        }
        get g8() {
            return this.get_g8();
        }
        set g8(a) {
            this.set_g8(a);
        }
        get gi() {
            return this.g8;
        }
        o5() {
            this.ba.a$y();
        }
        dh(a, b, c) {
            return null;
        }
        di(a, b, c) {
            return null;
        }
        qw(a, b, c, d) {
            this.ba.a$ae(this, a, b, c, d);
        }
        sa(a) {
            this.ba.a$ar(this, a);
        }
        oz(a, b) {
            if (this.a5 != null && this.sy != null) {
                if (b == null && this.a5.containsChild(this.sy)) {
                    this.a5.removeChild(this.sy);
                }
                if (b != null && !this.a5.containsChild(this.sy) && this.legendItemVisibility != 1) {
                    this.a5.addChildInOrder(this.sy, this);
                }
            }
        }
        o6() {
            if (this.a5 == null || this.sy == null) {
                return;
            }
            this.a5.removeChild(this.sy);
        }
        oy(a, b) {
            if (this.sy != null) {
                if (a != null && a.containsChild(this.sy)) {
                    a.removeChild(this.sy);
                }
                if (this.dc != null && b != null && !b.containsChild(this.sy) && this.legendItemVisibility != 1) {
                    b.addChildInOrder(this.sy, this);
                }
            }
        }
        o0(a, b) {
            if (this.a5 != null) {
                if (a != null && this.a5.containsChild(a)) {
                    this.a5.removeChild(a);
                }
                if (this.dc != null && b != null && this.legendItemVisibility != 1) {
                    this.a5.addChildInOrder(b, this);
                }
            }
        }
        rm(a) {
            this.dp = a.releaseFastItemsSource(this.itemsSource);
        }
        rl(a) {
            this.dp = a.getFastItemsSource(this.itemsSource);
        }
        a6() {
            if (this.legend != null) {
                return this.legend;
            }
            if (this.dc != null && this.dc.legend != null) {
                return this.dc.legend;
            }
            return null;
        }
        go() {
            return false;
        }
        gp() {
            return false;
        }
        gg(a) {
            return (a && this.ja() > 0) || this.d4() || (this.g4 && this.go() && this.jb() > 0) || (this.g7 && this.gp() && this.jc() > 0);
        }
        pe(a) {
            if (a != null) {
                a.b0(this);
            }
        }
        rk(a) {
            if (a != null) {
                a.ct(this);
            }
        }
        bt() {
            return this.cw.h();
        }
        sn(a) {
            this.cw.bm(a);
        }
        r9(a, b) {
            this.ba.a$aq(this, a, b);
        }
        get_hb() {
            return false;
        }
        get hb() {
            return this.get_hb();
        }
        rd(a, b) {
            this.cw.a3(a, b);
        }
        rf(a) {
            this.q4(this.wx, a);
        }
        p8(a) {
            if (this.dp != null) {
                this.dp.handleCollectionChanged(a);
            }
        }
        ql(a, b, c) {
            this.p8(new NotifyCollectionChangedEventArgs(2, 2, c, b, a));
        }
        qg() {
            this.p8(new NotifyCollectionChangedEventArgs(0, 4));
        }
        qj(a, b) {
            this.p8(new NotifyCollectionChangedEventArgs(1, 0, b, a));
        }
        qk(a, b) {
            this.p8(new NotifyCollectionChangedEventArgs(1, 1, b, a));
        }
        sg() {
            this.ru(false);
        }
        gx(a, b) {
            return false;
        }
        get_coercionMethods() {
            return this._coercionMethods;
        }
        set_coercionMethods(a) {
            this._coercionMethods = a;
        }
        get coercionMethods() {
            return this.get_coercionMethods();
        }
        set coercionMethods(a) {
            this.set_coercionMethods(a);
        }
        get_expectFunctions() {
            return this.du;
        }
        set_expectFunctions(a) {
            let b = this.du;
            this.du = a;
            if (b != this.du) {
                this.raisePropertyChanged("ExpectFunctions", b, this.du);
            }
        }
        get expectFunctions() {
            return this.get_expectFunctions();
        }
        set expectFunctions(a) {
            this.set_expectFunctions(a);
        }
        a2(a, b) {
            return null;
        }
        get b4() {
            return this.b1;
        }
        set b4(a) {
            let b = this.b1;
            this.b1 = a;
            if (b != this.b1) {
                this.raisePropertyChanged("HitTestMode", enumGetBox(SeriesHitTestMode_$type, b), enumGetBox(SeriesHitTestMode_$type, this.b1));
            }
        }
        b3() {
            return this.b4 == 0 ? 2 : this.b4;
        }
        get b2() {
            return this.b0;
        }
        set b2(a) {
            let b = this.b0;
            this.b0 = a;
            if (b != this.b0) {
                this.raisePropertyChanged("ActualHitTestMode", enumGetBox(SeriesHitTestMode_$type, b), enumGetBox(SeriesHitTestMode_$type, this.b0));
            }
        }
        dl(a) {
            if (a == null) {
                return this.dp.registerColumn(null, null, false);
            }
            let b = null;
            let c = SeriesViewer.cu(a, this.coercionMethods);
            b = c.a;
            return this.dp.registerColumn(a, b, this.expectFunctions);
        }
        dm(a) {
            if (a == null) {
                return this.dp.registerColumnInt(null, null, false);
            }
            let b = null;
            let c = SeriesViewer.cu(a, this.coercionMethods);
            b = c.a;
            return this.dp.registerColumnInt(a, b, this.expectFunctions);
        }
        dn(a) {
            if (a == null) {
                return this.dp.registerColumnObject(null, null, false);
            }
            let b = null;
            let c = SeriesViewer.cu(a, this.coercionMethods);
            b = c.a;
            return this.dp.registerColumnObject(a, b, this.expectFunctions);
        }
        get wx() {
            return this.cw != null ? this.cw.b9 : Rect.empty;
        }
        get_fn() {
            return false;
        }
        get fn() {
            return this.get_fn();
        }
        get_fm() {
            return false;
        }
        get fm() {
            return this.get_fm();
        }
        r8(a) {
        }
        r7(a, b) {
        }
        pa(a, b) {
            this.bc.copyVisualData(a, b);
        }
        kn() {
            let a = this.bc.exportVisualData(this, this.wx);
            this.p1(a);
            this.cw.ax(a);
            this.bc.exportLayerVisualData(this, a);
            return a;
        }
        p1(a) {
        }
        qe(a) {
            if (this.wb.x != a.x || this.wb.y != a.y) {
                this.wb = a;
                this.qt(a);
            }
        }
        qt(a) {
        }
        qf() {
        }
        qm() {
        }
        aw(a) {
            return null;
        }
        ai() {
            return null;
        }
        iz() {
            return NaN;
        }
        static i0(a, b) {
            if (a == null || a.count == 0) {
                return NaN;
            }
            if (b != null && b.i$b != null) {
                if (b.i$b.count != a.count) {
                    return NaN;
                }
                for (let c = 0; c < a.count; c++) {
                    if (!isNaN_(a.item(b.i$b._inner[c])) && a.item(b.i$b._inner[c]) != 0) {
                        return a.item(b.i$b._inner[c]);
                    }
                }
            }
            for (let d = 0; d < a.count; d++) {
                if (!isNaN_(a.item(d)) && a.item(d) != 0) {
                    return a.item(d);
                }
            }
            return NaN;
        }
        static i1(a, b) {
            if (a == null || a.count == 0) {
                return NaN;
            }
            if (b != null && b.i$b != null) {
                if (b.i$b.count != a.count) {
                    return NaN;
                }
                for (let c = 0; c < a.count; c++) {
                    if (!isNaN_(a.item(b.i$b._inner[c])) && a.item(b.i$b._inner[c]) != 0) {
                        return a.item(b.i$b._inner[c]);
                    }
                }
            }
            for (let d = 0; d < a.count; d++) {
                if (!isNaN_(a.item(d)) && a.item(d) != 0) {
                    return a.item(d);
                }
            }
            return NaN;
        }
        qr() {
        }
        get io() {
            return this.h8;
        }
        set io(a) {
            let b = this.io;
            if (a != b) {
                this.h8 = a;
                this.raisePropertyChanged("FinalValue", b, this.io);
            }
        }
        get jj() {
            return this.h9;
        }
        set jj(a) {
            let b = this.jj;
            if (a != b) {
                this.h9 = a;
                this.raisePropertyChanged("PercentChange", b, this.jj);
            }
        }
        sr() {
            let a = this.iz();
            this.jj = (this.io - a) / a * 100;
        }
        kq(a) {
            return null;
        }
        get ll() {
            return !stringIsNullOrWhiteSpace(this.ds.bz) ? this.ds.bz : "Open";
        }
        get k7() {
            return !stringIsNullOrWhiteSpace(this.ds.bw) ? this.ds.bw : "Close";
        }
        get la() {
            return !stringIsNullOrWhiteSpace(this.ds.bx) ? this.ds.bx : "High";
        }
        get lj() {
            return !stringIsNullOrWhiteSpace(this.ds.by) ? this.ds.by : "Low";
        }
        get lt() {
            return !stringIsNullOrWhiteSpace(this.ds.b0) ? this.ds.b0 : "Volume";
        }
        get ls() {
            return !stringIsNullOrWhiteSpace(this.ds.b9) ? this.ds.b9 : "Value";
        }
        get ln() {
            return !stringIsNullOrWhiteSpace(this.ds.m) ? this.ds.m : "Radius";
        }
        sm() {
            this.s0 = this.s2();
            this.cw.bx();
        }
        av() {
            let a = this.legendItemBadgeShape;
            if (a == 0) {
                a = this.bg();
            }
            let b = 0;
            if (a == 3) {
                if (this.fb || this.f7) {
                    b = 6;
                }
                else if (this.e9) {
                    b = 7;
                }
                else {
                    b = 5;
                }
            }
            else if (a == 4) {
                if (this.hasMarkers && !this.fa) {
                    b = 8;
                }
                else {
                    b = 0;
                }
            }
            else if (a == 2) {
                if (this.hasMarkers && !this.eu) {
                    b = 1;
                }
                else {
                    b = 2;
                }
            }
            else if (a == 1) {
                b = 0;
            }
            else if (a == 5) {
                b = 3;
            }
            else if (a == 6) {
                b = 4;
            }
            else if (a == 7) {
                b = 9;
            }
            return b;
        }
        bf(a) {
            return a;
        }
        bg() {
            if (this.ew || this.ez || this.e1 || this.fr || this.fz || this.fb || this.e9 || this.fa || this.f4 || this.f7) {
                return this.bf(3);
            }
            else if (this.fl || this.f1 || this.fs || this.fk || this.isValueOverlay) {
                return this.bf(2);
            }
            else if (this.eu || this.fp || this.fo) {
                return this.bf(1);
            }
            else if (this.ek) {
                return this.bf(4);
            }
            return this.bf(1);
        }
        bk() {
            return null;
        }
        bm() {
            return this.bk();
        }
        get cc() {
            return this.b9;
        }
        get cb() {
            return this.b8;
        }
        get actualLayers() {
            return this.b7;
        }
        get ee() {
            return this.hs.count > 0;
        }
        r5(a, b) {
            if (b != null) {
                a.legendItemVisibility = 1;
            }
            else {
                a.legendItemVisibility = 0;
            }
            a.bl = b;
        }
        sd(a) {
            if (!this.hn.containsKey(a)) {
                this.hn.addItem(a, 0);
            }
            this.hn.item(a, this.hn.item(a) + 1);
        }
        sf(a) {
            if (this.hn.containsKey(a)) {
                this.hn.item(a, this.hn.item(a) - 1);
                if (this.hn.item(a) == 0) {
                    this.hn.removeItem(a);
                }
            }
        }
        f5(a) {
            if (this.hn.containsKey(a) && this.hn.item(a) > 0) {
                return true;
            }
            return false;
        }
        sc(a) {
            if (!this.hj.containsKey(a)) {
                this.hj.addItem(a, new Stack$1(Boolean_$type));
            }
            this.hj.item(a).h(true);
        }
        se(a, b) {
            if (this.hj.containsKey(a)) {
                this.hj.item(a).e();
                if (this.hj.item(a).f == 0) {
                    this.hj.removeItem(a);
                    let c = this.tr(a);
                    if (b && this.ei && !this.f5(a) && !this.f5("Actual" + a)) {
                        {
                            if (c != null) {
                                this.sd(a);
                                this.k4(a, this.c(c), this.c(c));
                                this.sf(a);
                            }
                        }
                    }
                }
            }
        }
        gn(a) {
            if (this.hj.containsKey(a) && this.hj.item(a).d()) {
                return true;
            }
            return false;
        }
        f3() {
            return this.hj.count > 0;
        }
        kw() {
            return null;
        }
        bn(a, b) {
            if (this.hm.containsKey(b)) {
                return this.hm.item(b);
            }
            let c = this.bm();
            if (c == null) {
                return null;
            }
            c.bo = this;
            c.b6 = b;
            this.qc(c);
            this.ry(c);
            b.am(this, c);
            this.o2(a, c);
            this.hm.item(b, c);
            this.hs.insert(a, c);
            return c;
        }
        qc(a) {
            if (this.k3 != null) {
                a.k3 = this.k3;
            }
            if (this.gq) {
                a.gq = true;
            }
        }
        o2(a, b) {
            this.cw.ap(a, b);
        }
        pf(a) {
            this.cw.au(a);
        }
        ry(a) {
            for (let b of fromEnum(this.hp)) {
                let c = this.tr(b);
                if (c == null) {
                    continue;
                }
                this.o9(a, c);
            }
        }
        ga(a) {
            if (a.name == "ToolTip") {
                return true;
            }
            return false;
        }
        gr(a) {
            if (a.name == "ToolTip" && this.gq) {
                return true;
            }
            return false;
        }
        o9(a, b) {
            let c = a.b6;
            if (c != null) {
                let d = this.c(b);
                if (this.gr(b)) {
                    return;
                }
                if (this.ga(b)) {
                    d = this.kk(b, d);
                }
                c.ai(this, a, b, d);
            }
        }
        kk(a, b) {
            if (a.name == "ToolTip") {
                return null;
            }
            return b;
        }
        pj(a) {
            if (this.hm.containsKey(a)) {
                let b = this.hm.item(a);
                this.hm.removeItem(a);
                a.ap(b);
                this.pf(b);
                this.hs.remove(b);
            }
        }
        getDataLegendBadge() {
            let a = this.s2();
            if (a == null) {
                a = LegendTemplates.af(this);
            }
            return a;
        }
        getDataLegendBadgeContext() {
            if (this.a8 == null) {
                this.a8 = ((() => {
                    let $ret = new DataContext();
                    $ret.series = this;
                    $ret.item = null;
                    return $ret;
                })());
            }
            return this.a8;
        }
        getDataLegendBadgeContextAtPosition(a, b) {
            let c = this.getDataLegendBadgeContext();
            let d = this.getDataLegendResolvedWorldPositionX(a);
            let e = this.getDataLegendResolvedWorldPositionY(b);
            let f = this.j4({ $type: Point_$type, x: d, y: e });
            if (this.dp == null || f < 0 || f > (this.dp.count - 1)) {
                return null;
            }
            if (this.d3) {
                c.itemBrush = this.vs(f);
                c.outline = this.vv(f);
            }
            return c;
        }
        getDataLegendBadgeShapeAndMarker() {
            let a = this.av();
            if (a == 8) {
                return this.mc();
            }
            else if (a == 1) {
                if (this.be == 0) {
                    return "Line";
                }
                return "LineWith" + this.mc();
            }
            else if (a == 3) {
                return "Bar";
            }
            else if (a == 4) {
                return "Column";
            }
            else if (a == 9) {
                return "None";
            }
            else if (a == 0) {
                return "Circle";
            }
            else if (a == 2) {
                return "Line";
            }
            else if (a == 5) {
                return "Square";
            }
            else if (a == 6) {
                if (this.be == 0) {
                    return "Square";
                }
                else {
                    return "TwoColumns";
                }
            }
            else if (a == 7) {
                if (this.be == 0) {
                    return "Square";
                }
                else {
                    return "TwoBars";
                }
            }
            return EnumUtil.getName(ActualLegendItemBadgeShape_$type, a);
        }
        mc() {
            return null;
        }
        md(a, b) {
            if (b == a.dc.sa) {
                return "Circle";
            }
            else if (b == a.dc.sb) {
                return "Diamond";
            }
            else if (b == a.dc.sc) {
                return "Hexagon";
            }
            else if (b == a.dc.sd) {
                return "Hexagram";
            }
            else if (b == a.dc.se) {
                return "Pentagon";
            }
            else if (b == a.dc.sf) {
                return "Pentagram";
            }
            else if (b == a.dc.sg) {
                return "Pyramid";
            }
            else if (b == a.dc.sh) {
                return "Square";
            }
            else if (b == a.dc.si) {
                return "Tetragram";
            }
            else if (b == a.dc.sj) {
                return "Triangle";
            }
            else if (b != null) {
                return "Custom";
            }
            else {
                return "None";
            }
        }
        getDataLegendSeriesTitle() {
            return this.title == null ? null : this.title.toString();
        }
        iy(a, b) {
            return FastItemColumn.i(this.kr(a, b));
        }
        getDataLegendResolvedWorldPositionX(a) {
            if (isNaN_(a) || a < 0) {
                if (this.isVertical) {
                    a = 1;
                }
                else {
                    let b = this.a0();
                    if (b != null) {
                        if (b.ch) {
                            a = 0;
                        }
                        else {
                            a = 1;
                        }
                    }
                    else {
                        a = 1;
                    }
                }
            }
            return a;
        }
        getDataLegendResolvedWorldPositionY(a) {
            if (isNaN_(a) || a < 0) {
                if (this.isVertical) {
                    let b = this.a0();
                    if (b != null) {
                        if (b.ch) {
                            a = 1;
                        }
                        else {
                            a = 0;
                        }
                    }
                    else {
                        a = 0;
                    }
                }
                else {
                    a = 0;
                }
            }
            return a;
        }
        getDataLegendSeriesContextAt(a, b) {
            let c = new DataLegendSeriesValueInfo();
            c.l = this.i6({ $type: Point_$type, x: a, y: b }, false, false);
            c.a = 0;
            c.q = "Value";
            c.r = "Value";
            c.s = "";
            let d = new DataLegendSeriesContext();
            d.e = ((() => {
                let $ret = new List$1(DataLegendSeriesValueInfo.$, 0);
                $ret.add(c);
                return $ret;
            })());
            d.h = this.me();
            return d;
        }
        me() {
            let a = "Category";
            if (this.fd) {
                a = "Geographic";
            }
            if (this.fv) {
                a = "Range";
            }
            if (this.fy) {
                a = "Shape";
            }
            if (this.fx) {
                a = "Scatter";
            }
            if (this.fq) {
                a = "Polar";
            }
            if (this.fu) {
                a = "Radial";
            }
            if (this.isStacked || this.isFragment) {
                a = "Stacked";
            }
            if (this.fc) {
                a = "Category";
            }
            if (this.e8) {
                if (this.fb) {
                    a = "Financial";
                }
                else {
                    a = getInstanceType(this).typeName.toString();
                }
            }
            if (this.fg) {
                a += " Highlight";
            }
            else if (this.isValueOverlay) {
                a += " Overlay";
            }
            else {
                a += " Series";
            }
            return a;
        }
        getDataLegendAxisLabelFromCursorPosition(a, b) {
            if (this.e0 || this.e8 || this.fu) {
                let c = this.a0();
                if (c != null) {
                    if (!c.co()) {
                        return null;
                    }
                    let d = this.getDataLegendResolvedWorldPositionX(a);
                    let e = this.getDataLegendResolvedWorldPositionY(b);
                    let f = { $type: Point_$type, x: d, y: e };
                    if (c.cn) {
                        let g = this.j6(f);
                        if (g < 0) {
                            return null;
                        }
                        let h = c;
                        let i = h.i$d(g);
                        let j = this.h0(i);
                        return j;
                    }
                    else {
                        if (c.ck) {
                            let k = this.is(f);
                            if (k < 0) {
                                k = 0;
                            }
                            let l = c;
                            let m = l.getDateTime(k);
                            return m;
                        }
                        else {
                            let n = this.j4(f);
                            if (n < 0) {
                                return null;
                            }
                            let o = c.kv;
                            if (o == null || o.count == 0) {
                                return null;
                            }
                            let p = false;
                            if (c.b9 && c.cl) {
                                p = true;
                            }
                            if (!p) {
                                if (n >= o.count) {
                                    n = o.count - 1;
                                }
                            }
                            let q = c.gf(n);
                            return q;
                        }
                    }
                }
            }
            return null;
        }
        h0(ticks_) {
            let a = (new Date(ticks_));
            return a;
        }
        v5(a) {
            if (a == null) {
                return null;
            }
            if (this.b5 == null) {
                return a;
            }
            a = BrushUtil.s(a, this.ib);
            return a;
        }
        cg() {
            let a = this.mg();
            if (a != null) {
                let b = this.mf(a);
                if (b != null) {
                    let c = ((() => {
                        let $ret = new SeriesMatcher();
                        $ret.d = a;
                        $ret.c = b;
                        return $ret;
                    })());
                    if (this.f8(c)) {
                        return c;
                    }
                }
            }
            if (this.name != null) {
                let d = ((() => {
                    let $ret = new SeriesMatcher();
                    $ret.e = this.name;
                    return $ret;
                })());
                if (this.f8(d)) {
                    return d;
                }
            }
            let e = "Series Title";
            if (this.title != null && typeof this.title === 'string' && !Base.equalsStatic(this.title, e)) {
                let f = ((() => {
                    let $ret = new SeriesMatcher();
                    $ret.f = this.title;
                    return $ret;
                })());
                if (this.f8(f)) {
                    return f;
                }
            }
            if (this.index != -1) {
                let g = ((() => {
                    let $ret = new SeriesMatcher();
                    $ret.b = this.index;
                    return $ret;
                })());
                return g;
            }
            return null;
        }
        f8(a) {
            if (this.dc != null) {
                let b = SeriesMatcherHelper.a(this.dc, a);
                if (b != null && b.length == 1) {
                    return true;
                }
            }
            return false;
        }
    }
    Series.$t = /*@__PURE__*/ markType(Series, 'Series', Control.$, [INotifyPropertyChanged_$type, IProvidesViewport_$type, ILegendSeries_$type, ILegendSeriesInternal_$type, ILegendOwner_$type, ILegendTemplateProvider_$type, IDataLegendSeries_$type]);
    Series.j1 = 0;
    Series.u8 = /*@__PURE__*/ DependencyProperty.i("VisibilityProxy", Visibility_$type, Series.$, /*@__PURE__*/ new PropertyMetadata(2, /*@__PURE__*/ enumGetBox(Visibility_$type, 0), (a, b) => a.raisePropertyChanged("VisibilityProxy", b.oldValue, b.newValue)));
    Series.hg = /*@__PURE__*/ new Dictionary$2(String_$type, /*@__PURE__*/ Dictionary$2.$.specialize(Type.$, DependencyProperty.$), 0);
    Series.hk = null;
    Series.hl = null;
    Series.t4 = /*@__PURE__*/ DependencyProperty.i("ItemsSource", IEnumerable_$type, Series.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(Series.$, a);
        if (c.c4 != null) {
            c.c4.releaseFastItemsSource(b.oldValue);
        }
        a.raisePropertyChanged("ItemsSource", b.oldValue, b.newValue);
    }));
    Series.ua = /*@__PURE__*/ DependencyProperty.i("Legend", IChartLegend_$type, Series.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(Series.$, a);
        c.raisePropertyChanged("Legend", b.oldValue, b.newValue);
    }));
    Series.t7 = /*@__PURE__*/ DependencyProperty.i("LegendItemBadgeTemplate", DataTemplate.$, Series.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(Series.$, a);
        c.raisePropertyChanged("LegendItemBadgeTemplate", b.oldValue, b.newValue);
        if (c.sy != null) {
            c.sy = c.sx();
        }
    }));
    Series.t8 = /*@__PURE__*/ DependencyProperty.i("LegendItemTemplate", DataTemplate.$, Series.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(Series.$, a);
        c.raisePropertyChanged("LegendItemTemplate", b.oldValue, b.newValue);
        if (c.sy != null) {
            c.sy = c.sx();
        }
    }));
    Series.to = /*@__PURE__*/ DependencyProperty.i("DiscreteLegendItemTemplate", DataTemplate.$, Series.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => {
        let c = typeCast(Series.$, a);
        c.raisePropertyChanged("DiscreteLegendItemTemplate", b.oldValue, b.newValue);
    }));
    Series.tz = /*@__PURE__*/ DependencyProperty.i("Index", Number_$type, Series.$, /*@__PURE__*/ new PropertyMetadata(2, -1, (a, b) => {
        let c = typeCast(Series.$, a);
        c.raisePropertyChanged("Index", b.oldValue, b.newValue);
        if (c.sy != null) {
            c.sy = c.sx();
        }
    }));
    Series.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, Series, 'raisePropertyChanged', ['ActualAreaFillOpacity:ia:s4', [1, 1], 'ActualBrush:ve:s5', [Brush.$], 'ActualFocusBrush:vf:s6', [Brush.$], 'ActualLegendItemBadgeBrush:vg:s7', [Brush.$], 'ActualLegendItemBadgeOutline:vh:s8', [Brush.$], 'ActualLegendItemBadgeTemplate:s0:s9', [DataTemplate.$], 'ActualMarkerFillOpacity:id:ta', [1, 1], 'ActualOutline:vi:tb', [Brush.$], 'ActualSelectionBrush:vj:tc', [Brush.$], 'ActualThickness:ig:td', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'AreaFillOpacity:il:te', [1, NaN], 'AttachTooltipToRoot:d5:tf', [0, true], 'AutoCalloutLabelFormat:lw:tg', [2, null], 'AutoCalloutLabelFormatSpecifiers:ag:th', [Array_$type, null], 'AutoCalloutValueLabelFormat:lz:ti', [2, null], 'AutoCalloutValueLabelFormatSpecifiers:ah:tj', [Array_$type, null], 'Brush:vk:tk', [Brush.$, null], 'DashArray:v7:tl', [DoubleCollection.$], 'DashCap:v8:tm', [PenLineCap_$type, /*@__PURE__*/ enumGetBox(PenLineCap_$type, 0)], 'DataLegendGroup:l5:tn', [2, null], 'FastItemsSource:dp:tp', [IFastItemsSource_$type], 'FocusBrush:vp:tq', [Brush.$, null], 'HighlightedItemsSource::ts', [IEnumerable_$type, null], 'HighlightedLegendItemVisibility:w2:tt', [Visibility_$type, /*@__PURE__*/ enumGetBox(Visibility_$type, 0)], 'HighlightedTitleSuffix:mj:tu', [2, " - Highlighted"], 'HighlightedValuesDataLegendGroup:ml:tv', [2, null], 'HighlightedValuesDisplayMode:bw:tw', [SeriesHighlightedValuesDisplayMode_$type, /*@__PURE__*/ enumGetBox(SeriesHighlightedValuesDisplayMode_$type, 0)], 'HighlightedValuesFadeOpacity:jf:tx', [1, NaN], 'HighlightingFadeOpacity:jg:ty', [1, NaN], 'IsActualLegendFinancial:ep:t0', [0, false], 'IsComponentHighlightingModeIgnored:e2:t1', [0, false], 'IsDropShadowEnabled:e6:t2', [0, false], 'IsHighlightingEnabled:fe:t3', [0, false], 'LegendItemBadgeMode:be:t5', [LegendItemBadgeMode_$type, /*@__PURE__*/ enumGetBox(LegendItemBadgeMode_$type, 0)], 'LegendItemBadgeShape::t6', [LegendItemBadgeShape_$type, /*@__PURE__*/ enumGetBox(LegendItemBadgeShape_$type, 0)], 'LegendItemVisibility::t9', [Visibility_$type, /*@__PURE__*/ enumGetBox(Visibility_$type, 0)], 'LineCap:v9:ub', [PenLineCap_$type, /*@__PURE__*/ enumGetBox(PenLineCap_$type, 0)], 'LineJoin:wa:uc', [PenLineJoin_$type, /*@__PURE__*/ enumGetBox(PenLineJoin_$type, 0)], 'MarkerFillOpacity:jh:ud', [1, NaN], 'MiterLimit:ji:ue', [1, 10], 'MouseOverEnabled:f9:uf', [0, true], 'OutlineMode:cj:ug', [SeriesOutlineMode_$type, /*@__PURE__*/ enumGetBox(SeriesOutlineMode_$type, 0)], 'Outline:v0:uh', [Brush.$, null], 'Resolution:jk:ui', [1, NaN], 'SafeActualBrush::uj', [Brush.$], 'SelectionBrush:v4:uk', [Brush.$, null], 'ShadowBlur:jn:ul', [1, NaN], 'ShadowColor:v6:um', [Color.$], 'ShadowOffsetX:jo:un', [1, NaN], 'ShadowOffsetY:jp:uo', [1, NaN], 'ShouldAnimateOnDataSourceSwap:gh:up', [0, false], 'ShouldHideAutoCallouts:gj:uq', [0, false], 'ShouldRemoveHighlightedDataOnLayerHidden:gk:ur', [0, false], 'ShouldShiftOpacityForSafeActualBrush:gm:us', [0, true], 'ShowDefaultTooltip:gq:ut', [0, false], 'Thickness:jq:uu', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'Title::uv', [4, "Series Title"], 'ToolTip::uw', [4, null], 'TransitionDuration:ke:ux', [1, 0], 'TransitionEasingFunction:de:uy', [Delegate_$type, null], 'TransitionInDuration:kf:uz', [1, 1000], 'TransitionInEasingFunction:df:u0', [Delegate_$type, null], 'TransitionInSpeedType:c6:u1', [TransitionInSpeedType_$type, /*@__PURE__*/ enumGetBox(TransitionInSpeedType_$type, 0)], 'TransitionOutDuration:kg:u2', [1, 1000], 'TransitionOutEasingFunction:dg:u3', [Delegate_$type, null], 'TransitionOutSpeedType:c9:u4', [TransitionOutSpeedType_$type, /*@__PURE__*/ enumGetBox(TransitionOutSpeedType_$type, 0)], 'TransitionProgress:jr:u5', [1, 0], 'UseItemWiseColors:ha:u6', [0, false], 'UseSingleShadow:hd:u7', [0, true], 'VisibleRangeMarginBottom:js:u9', [1, NaN], 'VisibleRangeMarginLeft:jt:va', [1, NaN], 'VisibleRangeMarginRight:ju:vb', [1, NaN], 'VisibleRangeMarginTop:jv:vc', [1, NaN], 'VisibleRangeMode:c0:vd', [SeriesVisibleRangeMode_$type, /*@__PURE__*/ enumGetBox(SeriesVisibleRangeMode_$type, 0)]]);
    return Series;
})();
/**
 * @hidden
 */
export let MarkerSeries = /*@__PURE__*/ (() => {
    class MarkerSeries extends Series {
        constructor() {
            super();
            this.xc = 1;
            this.w7 = 1;
            this.w3 = 1;
            this.x6 = null;
            this.xd = this.xe();
        }
        hu() {
            let a = super.hu();
            {
                let b = ((() => {
                    let $ret = new SeriesLayerPropertyOverlay();
                    $ret.r = true;
                    $ret.ad = "MarkerBrush";
                    $ret.p = true;
                    $ret.y = "ActualMarkerBrush";
                    $ret.q = true;
                    return $ret;
                })());
                b.valueResolving = delegateCombine(b.valueResolving, runOn(this, this.r4));
                a.add(b);
            }
            {
                let c = ((() => {
                    let $ret = new SeriesLayerPropertyOverlay();
                    $ret.r = true;
                    $ret.ad = "MarkerOutline";
                    $ret.p = true;
                    $ret.y = "ActualMarkerOutline";
                    $ret.q = true;
                    return $ret;
                })());
                c.valueResolving = delegateCombine(c.valueResolving, runOn(this, this.r4));
                a.add(c);
            }
            return a;
        }
        w0(a, b) {
            if (this.fu || this.fq) {
                return new Thickness(1, 0, 0, 0, 0);
            }
            if (this.xd != 1 && this.xd != 13) {
                let c = this.xb.c8();
                let d = (c.width / 2) + (this.xo / 2);
                let e = (c.height / 2) + (this.xo / 2);
                let f = e;
                let g = e;
                let h = d;
                let i = d;
                if (a == 2 || a == 4) {
                    h = 0;
                }
                if (a == 2 || a == 3) {
                    i = 0;
                }
                if (b == 2 || b == 3) {
                    f = 0;
                }
                if (b == 2 || b == 4) {
                    g = 0;
                }
                return new Thickness(1, h, f, i, g);
            }
            return new Thickness(1, 0, 0, 0, 0);
        }
        q3(a) {
            super.q3(a);
            this.xb = a;
        }
        get_hasMarkers() {
            return true;
        }
        get_en() {
            return this.xd != 13 && this.xd != 1;
        }
        vq() {
            return this.ym;
        }
        vr() {
            return this.yn;
        }
        s3() {
            return this.x6;
        }
        mc() {
            return this.md(this, this.x6);
        }
        get xd() {
            return this.xc;
        }
        set xd(a) {
            let b = this.xc;
            this.xc = a;
            if (b != a) {
                this.raisePropertyChanged("ActualMarkerType", enumGetBox(MarkerType_$type, b), enumGetBox(MarkerType_$type, this.xc));
            }
        }
        xe() {
            if (this.xf == 1 || this.xf == 0) {
                if (this.fj && this.ba.a$d) {
                    return 2;
                }
                if (this.xk()) {
                    return 13;
                }
            }
            return this.xf;
        }
        xk() {
            return (this.ha && typeCast(IChartItemLegend_$type, this.legend) !== null) || this.xj();
        }
        xj() {
            if (this.dc == null) {
                return false;
            }
            if (this.dc.ew) {
                for (let a of fromEnum(this.dc.series)) {
                    if (a.eq) {
                        if (a.gv(this)) {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        pw() {
            super.pw();
            this.xd = this.xe();
        }
        get xh() {
            return this.xi || this.x5 == this.dc.sa;
        }
        get w8() {
            return this.w7;
        }
        set w8(a) {
            this.w7 = a;
        }
        xa() {
            if (this.w9 == 0) {
                return 1;
            }
            return this.w9;
        }
        sp(a) {
            super.sp(a);
            this.w9 = a;
        }
        get w4() {
            return this.w3;
        }
        set w4(a) {
            this.w3 = a;
        }
        w6() {
            if (this.w5 == 0) {
                return 1;
            }
            return this.w5;
        }
        so(a) {
            super.so(a);
            this.w5 = a;
        }
        sq(a) {
            super.sq(a);
            this.xo = a;
        }
        ip() {
            return this.xo;
        }
        static get x8() {
            if (MarkerSeries.x4 == null) {
                MarkerSeries.x4 = new DataTemplate();
            }
            return MarkerSeries.x4;
        }
        get yo() {
            return this.c(MarkerSeries.yd);
        }
        set yo(a) {
            this.h(MarkerSeries.yd, a);
        }
        xl() {
            return this.x6 != null && ((this.xd != 1 && this.xd != 0) || this.x7 != null);
        }
        qu() {
            super.qu();
            this.w8 = this.xa();
            this.w4 = this.w6();
        }
        rc(a, b, c, d) {
            super.rc(a, b, c, d);
            switch (b) {
                case MarkerSeries.$$p[10]:
                    this.xd = this.xe();
                    break;
                case "MarkerBrush":
                case MarkerSeries.$$p[6]:
                case MarkerSeries.$$p[8]:
                case MarkerSeries.$$p[9]:
                    this.ri(b);
                    this.q5();
                    break;
                case "ActualMarkerType":
                    this.ri(b);
                    this.q5();
                    if (this.xk()) {
                        let e = EnumUtil.getEnumValue(MarkerType_$type, c) == 13 && this.xd != 1 && this.xd != 13;
                        let f = this.xd == 13 && EnumUtil.getEnumValue(MarkerType_$type, c) != 1 && EnumUtil.getEnumValue(MarkerType_$type, c) != 13;
                        if (e || f) {
                            if (this.dc != null) {
                                this.dc.ob();
                            }
                            this.qn();
                        }
                    }
                    break;
                case MarkerSeries.$$p[5]:
                    this.w8 = this.xa();
                    this.ri(null);
                    this.q5();
                    break;
                case MarkerSeries.$$p[4]:
                    this.w4 = this.w6();
                    this.ri(null);
                    this.q5();
                    break;
                case MarkerSeries.$$p[2]:
                    this.x6 = d;
                    if (c == MarkerSeries.x8 || d == MarkerSeries.x8 || (c == null || d != null)) {
                        this.xb.cy();
                        let g = typeCast(MarkerSeriesView.$, this.cv);
                        if (g != null) {
                            g.cy();
                        }
                        this.ru(false);
                    }
                    if (this.ek) {
                        this.vg = this.vq();
                        this.vh = this.vr();
                    }
                    if (this.dc != null) {
                        this.dc.ob();
                    }
                    this.cw.bx();
                    if (this.toolTip != null && this.fj) {
                        this.ba.a$as(this, this.toolTip);
                    }
                    this.qn();
                    break;
                case MarkerSeries.$$p[11]:
                    this.xb.c5(this.xn);
                    this.ru(false);
                    break;
                case MarkerSeries.$$p[0]:
                case MarkerSeries.$$p[1]:
                    if (this.ek) {
                        this.vg = this.vq();
                        this.vh = this.vr();
                    }
                    break;
            }
        }
        static xt(a) {
            switch (a) {
                case 3:
                case 13: return SeriesViewer.$$p[2];
                case 4: return SeriesViewer.$$p[48];
                case 5: return SeriesViewer.$$p[33];
                case 6: return SeriesViewer.$$p[42];
                case 7: return SeriesViewer.$$p[5];
                case 8: return SeriesViewer.$$p[25];
                case 9: return SeriesViewer.$$p[10];
                case 10: return SeriesViewer.$$p[45];
                case 11: return SeriesViewer.$$p[26];
                case 12: return SeriesViewer.$$p[11];
                case 0:
                case 1:
                default: return null;
            }
        }
        static xg(a, b) {
            let c = 1;
            let d = 0;
            if (a != null && a.dc != null) {
                d = a.dc.bg;
            }
            if (a == null || a.dc == null) {
                c = 1;
                return c;
            }
            if (b != 2 && b != 0) {
                c = b;
            }
            else {
                if (d == 4) {
                    c = 3;
                }
                else if (d == 5) {
                    c = 4;
                }
                else if (d == 9) {
                    c = 8;
                }
                else if (d == 11) {
                    c = 10;
                }
                else if (d == 8) {
                    c = 7;
                }
                else if (d == 7) {
                    c = 6;
                }
                else if (d == 10) {
                    c = 9;
                }
                else if (d == 12) {
                    c = 11;
                }
                else if (d == 6) {
                    c = 5;
                }
                else if (d == 13) {
                    c = 12;
                }
                else if (d == 1) {
                    c = 1;
                }
                else if (d == 0) {
                    if (a.fm) {
                        c = 1;
                    }
                    else {
                        c = 3;
                    }
                }
                else if (d == 3 || d == 2) {
                    if (d == 2) {
                        if (a.fm) {
                            c = 1;
                            return c;
                        }
                    }
                    if (a.index < 0) {
                        c = 1;
                    }
                    else {
                        let e = [3, 4, 8, 10, 7, 6, 9, 11, 5, 12];
                        c = e[a.index % e.length];
                    }
                }
            }
            return c;
        }
        vt(a) {
            if (this.dc == null) {
                return this.ve;
            }
            let b = this.dc.vr(this.index + a);
            if (this.xf == 13) {
                b = this.cw.b5();
            }
            else {
                if (this.w4 != 2) {
                    if (this.dc != null) {
                        let c = b;
                        if (!isNaN_(this.id) && this.id != 1) {
                            c = BrushUtil.s(c, this.id);
                        }
                        b = c;
                    }
                }
                else {
                    return this.vu(a);
                }
            }
            b = this.vy(b);
            return b;
        }
        vu(a) {
            if (this.dc == null) {
                return this.ve;
            }
            let b = this.dc.vs(this.index + a);
            if (this.xf == 13) {
                b = this.cw.b5();
            }
            else {
                if (this.w8 == 2) {
                    return this.vt(a);
                }
            }
            b = this.vy(b);
            return b;
        }
        sl() {
            super.sl();
            if (this.index < 0) {
                return;
            }
            if (this.xb.ci()) {
                this.xb.cv();
                this.xb.cp();
            }
            else {
                let a = MarkerSeries.xg(this, this.xd);
                if (a == 1 && this.xk()) {
                    a = 13;
                }
                let b = MarkerSeries.xt(a);
                if (b == null) {
                    this.x5 = MarkerSeries.x8;
                }
                else {
                    this.xb.cs(b);
                }
            }
            if (this.yo != null && this.xd != 13) {
                this.sc("ActualMarkerBrush");
                let c = this.ym;
                this.xb.ct();
                this.xb.cq();
                let d = this.ym;
                let e = this.fi("ActualMarkerBrush", this.hw.f > 0 ? this.hw.d() : null, c, d);
                this.se("ActualMarkerBrush", e);
            }
            else {
                if (this.xd == 13) {
                    if (!BrushUtilCore.a(this.ym)) {
                        this.sc("ActualMarkerBrush");
                        let f = this.ym;
                        this.ym = this.cw.b5();
                        let g = this.ym;
                        let h = this.fi("ActualMarkerBrush", this.hw.f > 0 ? this.hw.d() : null, f, g);
                        this.se("ActualMarkerBrush", h);
                    }
                }
                else {
                    if (this.w4 != 2) {
                        if (this.dc != null) {
                            let i = this.dc.vr(this.index);
                            if (!isNaN_(this.id) && this.id != 1) {
                                i = BrushUtil.s(i, this.id);
                            }
                            this.ym = i;
                        }
                        else {
                            this.ym = null;
                        }
                    }
                }
            }
            if (this.yp != null && this.xd != 13) {
                this.sc("ActualMarkerOutline");
                let j = this.yn;
                this.xb.cu();
                this.xb.cr();
                let k = this.yn;
                let l = this.fi("ActualMarkerOutline", this.hw.f > 0 ? this.hw.d() : null, j, k);
                this.se("ActualMarkerOutline", l);
            }
            else {
                if (this.xd == 13) {
                    if (!BrushUtilCore.a(this.yn)) {
                        this.sc("ActualMarkerOutline");
                        let m = this.yn;
                        this.yn = this.cw.b5();
                        let n = this.yn;
                        let o = this.fi("ActualMarkerOutline", this.hw.f > 0 ? this.hw.d() : null, m, n);
                        this.se("ActualMarkerOutline", o);
                    }
                }
                else {
                    if (this.w8 == 2) {
                        this.yn = this.ym;
                    }
                    else {
                        this.yn = this.dc == null ? null : this.dc.vs(this.index);
                    }
                }
            }
            if (this.w4 == 2 && this.yo == null && this.xd != 13) {
                if (this.yn != null) {
                    let p = this.yn;
                    if (!isNaN_(this.id) && this.id != 1) {
                        p = BrushUtil.s(p, this.id);
                    }
                    this.ym = p;
                }
                else {
                    this.ym = null;
                }
            }
        }
        p1(a) {
            super.p1(a);
            this.bc.exportMarkerVisualData(this, a);
        }
        xm(a, b) {
            if (this.hasMarkers && this.xl()) {
                let c = this.wv(a);
                if (c.isEmpty) {
                    return false;
                }
                let d = RectUtil.r(c, this.iv(b));
                if (d.containsPoint(a)) {
                    return true;
                }
            }
            return false;
        }
        a2(a, b) {
            let c = this.xb.ce(a);
            let d = null;
            if (c != null) {
                d = c.content;
            }
            return d;
        }
    }
    MarkerSeries.$t = /*@__PURE__*/ markType(MarkerSeries, 'MarkerSeries', Series.$);
    MarkerSeries.x4 = null;
    MarkerSeries.yd = /*@__PURE__*/ DependencyProperty.i("MarkerBrush", Brush.$, MarkerSeries.$, /*@__PURE__*/ new PropertyMetadata(1, (a, b) => {
        let c = (typeCast(MarkerSeries.$, a));
        c.raisePropertyChanged("MarkerBrush", b.oldValue, b.newValue);
    }));
    MarkerSeries.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, MarkerSeries, 'raisePropertyChanged', ['ActualMarkerBrush:ym:x9', [Brush.$], 'ActualMarkerOutline:yn:ya', [Brush.$], 'ActualMarkerTemplate:x5:yb', [DataTemplate.$, null], 'IsCustomMarkerCircular:xi:yc', [0, false], 'MarkerFillMode:w5:ye', [MarkerFillMode_$type, /*@__PURE__*/ enumGetBox(MarkerFillMode_$type, 0)], 'MarkerOutlineMode:w9:yf', [MarkerOutlineMode_$type, /*@__PURE__*/ enumGetBox(MarkerOutlineMode_$type, 0)], 'MarkerOutline:yp:yg', [Brush.$], 'MarkerStyle:yq:yh', [Style.$], 'MarkerTemplate:x7:yi', [DataTemplate.$, null], 'MarkerThickness:xo:yj', [1, /*@__PURE__*/ DeviceUtils.g(2)], 'MarkerType:xf:yk', [MarkerType_$type, /*@__PURE__*/ enumGetBox(MarkerType_$type, 1)], 'UseLightweightMarkers:xn:yl', [0, false]]);
    return MarkerSeries;
})();
/**
 * @hidden
 */
export let SyncLink = /*@__PURE__*/ (() => {
    class SyncLink extends FrameworkElement {
        constructor() {
            super();
            this.ak = null;
            this.ah = new Dictionary$2(IEnumerable_$type, FastItemsSourceReference.$, 0);
            this.av = null;
            this.ad = null;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (a, b) => this.aq(a, b.propertyName, b.oldValue, b.newValue));
            this.ad = new ChartCollection();
            let a = this.ad;
            a.collectionChanged = delegateCombine(a.collectionChanged, runOn(this, this.am));
            this.av = new Rect(0, 0, 0, 1, 1);
        }
        aq(a, b, c, d) {
        }
        releaseFastItemsSource(a) {
            if (a != null) {
                let b = null;
                if (((() => { let c = this.ah.tryGetValue(a, b); b = c.p1; return c.ret; })())) {
                    --b.b;
                    if (b.b == 0) {
                        this.ah.removeItem(a);
                    }
                }
            }
            return null;
        }
        static af(a) {
            return ((() => {
                let $ret = new FastItemsSource();
                $ret.e = a;
                return $ret;
            })());
        }
        getFastItemsSource(a) {
            if (SyncLink.aj == null) {
                SyncLink.aj = SyncLink.af;
            }
            let b = null;
            if (a != null) {
                let c = null;
                if (!((() => { let d = this.ah.tryGetValue(a, c); c = d.p1; return d.ret; })())) {
                    b = SyncLink.aj(a);
                    c = new FastItemsSourceReference(b);
                    this.ah.addItem(a, c);
                }
                c.b++;
                b = c.a;
            }
            return b;
        }
        ag(a) {
            let b = null;
            if (a != null) {
                let c = null;
                if (!((() => { let d = this.ah.tryGetValue(a, c); c = d.p1; return d.ret; })())) {
                    return null;
                }
                b = c.a;
            }
            return b;
        }
        aw(a, b, c) {
            return this.ax(a, b, c, false);
        }
        ax(a, b, c, d) {
            if (!c.isEmpty) {
                c = new Rect(0, c.left, c.top, c.width, c.height);
                let e = a.ho;
                let f = a.hn;
                if (b == a) {
                    if (!d) {
                        if (!b.fl()) {
                            c.x = b.w0.x;
                            c.width = b.w0.width;
                        }
                        if (!b.fm()) {
                            c.y = b.w0.y;
                            c.height = b.w0.height;
                        }
                    }
                }
                else {
                    let g = SyncManager.a(b);
                    if (g == null || !g.synchronizeHorizontally) {
                        c.x = b.w0.x;
                        c.width = b.w0.width;
                    }
                    if (g == null || !g.synchronizeVertically) {
                        c.y = b.w0.y;
                        c.height = b.w0.height;
                    }
                }
                let h = 0.5 * (c.left + c.right);
                let i = 0.5 * (c.top + c.bottom);
                let j = c.width;
                let k = c.height;
                let l = MathUtil.d(c.width, e, 1);
                let m = MathUtil.d(c.height, f, 1);
                let n = false;
                if (a.gg() && !a.wz.isEmpty) {
                    let o = a.wz;
                    let p = o.width / o.height;
                    let q = l * o.width;
                    let r = m * o.height;
                    let s = q / r;
                    if (s != p) {
                        if (r * p > q) {
                            q = r * p;
                            l = q / o.width;
                        }
                        else {
                            r = q / p;
                            m = r / o.height;
                        }
                    }
                }
                else if (a.eu()) {
                    let t = false;
                    let u = false;
                    if (Math.abs(l - a.wh.width) > e) {
                        t = true;
                    }
                    if (Math.abs(m - a.wh.height) > f) {
                        u = true;
                    }
                    let v = a.of(l, m, t, u);
                    l = v.p0;
                    m = v.p1;
                    l = MathUtil.d(l, e, 1);
                    m = MathUtil.d(m, f, 1);
                }
                else if (b.f8) {
                    let w = 1.7976931348623157E+308;
                    let x = -1.7976931348623157E+308;
                    let y = 1.7976931348623157E+308;
                    let z = -1.7976931348623157E+308;
                    let aa = c.left;
                    let ab = c.right;
                    let ac = c.top;
                    let ad = c.bottom;
                    let ae = c.width;
                    let af = c.height;
                    if (b.cr == 1) {
                        if (aa < 0) {
                            aa = 0;
                            ab = aa + ae;
                        }
                        if (ab > 1) {
                            ab = 1;
                            aa = ab - ae;
                        }
                        if (ac < 0) {
                            ac = 0;
                            ad = ac + af;
                        }
                        if (ad > 1) {
                            ad = 1;
                            ac = ad - af;
                        }
                    }
                    let ag = new Rect(0, aa, ac, ab - aa, ad - ac);
                    let ah = [w, x];
                    let ai = [y, z];
                    for (let aj = 0; aj < b.series.count; aj++) {
                        let ak = b.series._inner[aj];
                        if (ak.eu) {
                            continue;
                        }
                        {
                            let al = ak;
                            if (al.isVertical) {
                                if (c.height < 1) {
                                    ai = this.ac(al, b, ag, ai);
                                    y = ai[0];
                                    z = ai[1];
                                }
                            }
                            else {
                                if (c.width < 1) {
                                    ah = this.ab(al, b, ag, ah);
                                    w = ah[0];
                                    x = ah[1];
                                }
                            }
                        }
                    }
                    let am = (w == 1.7976931348623157E+308 || x == -1.7976931348623157E+308 || isNaN_(w) || isNaN_(x));
                    let an = (y == 1.7976931348623157E+308 || z == -1.7976931348623157E+308 || isNaN_(y) || isNaN_(z));
                    if (!am || !an) {
                        if (am) {
                            c = new Rect(0, y, c.top, z - y, c.height);
                        }
                        else if (an) {
                            c = new Rect(0, c.left, w, c.width, x - w);
                        }
                        else {
                            c = new Rect(0, y, w, z - y, x - w);
                        }
                        l = c.width;
                        m = c.height;
                        n = true;
                    }
                }
                let ao = l != j;
                let ap = m != k;
                let aq = ao && !n ? h - 0.5 * l : c.left;
                let ar = ap && !n ? i - 0.5 * m : c.top;
                let as = ao && !n ? h + 0.5 * l : c.right;
                let at = ap && !n ? i + 0.5 * m : c.bottom;
                if (b.cr == 1) {
                    if (aq < 0) {
                        aq = 0;
                        as = aq + l;
                    }
                    if (as > 1) {
                        as = 1;
                        aq = as - l;
                    }
                    if (ar < 0) {
                        ar = 0;
                        at = ar + m;
                    }
                    if (at > 1) {
                        at = 1;
                        ar = at - m;
                    }
                }
                c = new Rect(0, aq, ar, as - aq, at - ar);
            }
            return c;
        }
        ab(a, b, c, d) {
            let e = a.ai();
            let f = d[0];
            let g = d[1];
            let h = null;
            for (let i = 0; i < e.length; i++) {
                if (e[i].cp) {
                    h = e[i];
                }
            }
            if (h != null) {
                let j = new Rect(0, 0, 0, 1, 1);
                let k = new ScalerParams(0, j, j, h.ch, b.wr(j, b.wz, b.wl));
                k.b = a.iz();
                let l = a.az(c);
                let m = l == null || l.c == 1.7976931348623157E+308 || isNaN_(l.c);
                if (m) {
                    return d;
                }
                let n = h.el(l.c, k);
                let o = h.el(l.b, k);
                if (h.ch) {
                    let p = n;
                    n = o;
                    o = p;
                }
                g = Math.max(g, n);
                f = Math.min(f, o);
                if (a.cy == 2) {
                    if (h.cj) {
                        let q = h;
                        let r = q.me;
                        r = h.d2(r, k);
                        let s = h.el(r, k);
                        g = Math.max(g, s);
                        f = Math.min(f, s);
                    }
                }
            }
            d[0] = f;
            d[1] = g;
            return d;
        }
        ac(a, b, c, d) {
            let e = a.ai();
            let f = d[0];
            let g = d[1];
            let h = null;
            for (let i = 0; i < e.length; i++) {
                if (!e[i].cp) {
                    h = e[i];
                }
            }
            if (h != null) {
                let j = new Rect(0, 0, 0, 1, 1);
                let k = new ScalerParams(0, j, j, h.ch, b.wr(j, b.wz, b.wl));
                k.b = a.iz();
                let l = a.az(c);
                let m = l == null || l.c == 1.7976931348623157E+308 || isNaN_(l.c);
                if (m) {
                    return d;
                }
                let n = h.el(l.c, k);
                let o = h.el(l.b, k);
                if (h.ch) {
                    let p = n;
                    n = o;
                    o = p;
                }
                g = Math.max(g, o);
                f = Math.min(f, n);
                if (a.cy == 2) {
                    if (h.cj) {
                        let q = h;
                        let r = q.me;
                        r = h.d2(r, k);
                        let s = h.el(r, k);
                        g = Math.max(g, s);
                        f = Math.min(f, s);
                    }
                }
            }
            d[0] = f;
            d[1] = g;
            return d;
        }
        get ai() {
            return this.ad;
        }
        al(a) {
            this.ad.add(a);
        }
        as(a) {
            this.ad.remove(a);
        }
        ao() {
            for (let a of fromEnum(this.ad)) {
                if (a.w0.isEmpty) {
                    a.w0 = this.aw(null, a, this.av);
                }
            }
        }
        am(a, b) {
            if (b.newItems != null) {
                for (let c of fromEn(b.newItems)) {
                    if (c.w0.isEmpty) {
                        c.w0 = this.aw(null, c, this.av);
                    }
                }
            }
        }
        an(a, b) {
            for (let c of fromEnum(this.ai)) {
                if (c == a) {
                    c.v8 = { $type: Point_$type, x: b.x, y: b.y };
                }
                else {
                    let d = { $type: Point_$type, x: b.x, y: b.y };
                    let e = SyncManager.a(c);
                    if (e == null || !e.synchronizeHorizontally) {
                        d.x = NaN;
                    }
                    if (e == null || !e.synchronizeVertically) {
                        d.y = NaN;
                    }
                    c.v8 = d;
                }
            }
        }
        ap(a, b) {
            for (let c of fromEnum(this.ai)) {
                c.ws = this.aw(a, c, b);
            }
        }
        at(a, b) {
            this.au(a, b, false);
        }
        au(a, b, c) {
            let d = b.isEmpty || isNaN_(b.x) || isNaN_(b.y) || isNaN_(b.width) || isNaN_(b.height);
            if (!d && !a.es) {
                for (let e of fromEnum(this.ai)) {
                    e.es = true;
                    e.w0 = this.ax(a, e, b, c);
                    e.es = false;
                }
            }
        }
        ar(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
    }
    SyncLink.$t = /*@__PURE__*/ markType(SyncLink, 'SyncLink', FrameworkElement.$, [INotifyPropertyChanged_$type, IFastItemsSourceProvider_$type]);
    SyncLink.aj = null;
    return SyncLink;
})();
/**
 * @hidden
 */
export let SyncLinkManager = /*@__PURE__*/ (() => {
    class SyncLinkManager extends Base {
        static instance() {
            if (SyncLinkManager.b == null) {
                SyncLinkManager.b = new SyncLinkManager();
            }
            return SyncLinkManager.b;
        }
        get e() {
            return this.d.count;
        }
        constructor() {
            super();
            this.d = null;
            this.d = new Dictionary$2(String_$type, SyncLink.$, 0);
        }
        getLink(a) {
            let b;
            if (((() => { let c = this.d.tryGetValue(a, b); b = c.p1; return c.ret; })())) {
                return b;
            }
            b = new SyncLink();
            b.ak = a;
            this.d.addItem(a, b);
            return b;
        }
        releaseLink(a) {
            if (a.ai.count == 0 && a.ak != null && this.d.containsKey(a.ak)) {
                this.d.removeItem(a.ak);
            }
        }
    }
    SyncLinkManager.$t = /*@__PURE__*/ markType(SyncLinkManager, 'SyncLinkManager');
    SyncLinkManager.b = null;
    return SyncLinkManager;
})();
/**
 * @hidden
 */
export let SyncManager = /*@__PURE__*/ (() => {
    class SyncManager extends Base {
        static e(a) {
            let b = SyncManager.a(a);
            if (b == null) {
                return;
            }
            if (!a.fg) {
                return;
            }
            if (a.syncChannel != b.syncChannel) {
                return;
            }
            SyncManager.b(a, a.syncChannel, null);
        }
        static c(a) {
            let b = SyncManager.a(a);
            if (b == null) {
                return;
            }
            if (a.fg && a.syncChannel == b.syncChannel) {
                return;
            }
            let c = null;
            if (a.fg) {
                c = a.syncChannel;
            }
            SyncManager.b(a, c, b.syncChannel);
        }
        static b(a, b, c) {
            if (a != null) {
                if (stringIsNullOrEmpty(c)) {
                    let d = a.actualSyncLink;
                    a.actualSyncLink = null;
                    a.actualSyncLink = new SyncLink();
                    if (d != null) {
                        SyncLinkManager.instance().releaseLink(d);
                    }
                    a.syncChannel = null;
                }
                else {
                    if (!stringIsNullOrEmpty(b)) {
                        let e = a.actualSyncLink;
                        a.actualSyncLink = null;
                        if (e != null) {
                            SyncLinkManager.instance().releaseLink(e);
                        }
                    }
                    a.actualSyncLink = SyncLinkManager.instance().getLink(c);
                    a.syncChannel = c;
                }
            }
        }
        static d(a, b) {
            a.syncSettings = b;
        }
        static a(a) {
            return a.syncSettings;
        }
    }
    SyncManager.$t = /*@__PURE__*/ markType(SyncManager, 'SyncManager');
    return SyncManager;
})();
/**
 * @hidden
 */
export let ITrendLineManager_$type = /*@__PURE__*/ new Type(null, 'ITrendLineManager');
/**
 * @hidden
 */
export let ChartCollection = /*@__PURE__*/ (() => {
    class ChartCollection extends ObservableCollection$1 {
        constructor() {
            super(SeriesViewer.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    ChartCollection.$t = /*@__PURE__*/ markType(ChartCollection, 'ChartCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(SeriesViewer.$));
    return ChartCollection;
})();
/**
 * @hidden
 */
export let SeriesCollection = /*@__PURE__*/ (() => {
    class SeriesCollection extends ObservableCollection$1 {
        constructor() {
            super(Series.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    SeriesCollection.$t = /*@__PURE__*/ markType(SeriesCollection, 'SeriesCollection', /*@__PURE__*/ ObservableCollection$1.$.specialize(Series.$));
    return SeriesCollection;
})();
/**
 * @hidden
 */
export let PlotAreaMouseEventArgs = /*@__PURE__*/ (() => {
    class PlotAreaMouseEventArgs extends EventArgs {
        constructor(a, b, c) {
            super();
            this._chartPosition = null;
            this._plotAreaPosition = null;
            this._isDuringManipulation = false;
            this._viewer = null;
            this.viewer = a;
            this.chartPosition = b;
            this.plotAreaPosition = c;
        }
        get chartPosition() {
            return this._chartPosition;
        }
        set chartPosition(a) {
            this._chartPosition = a;
        }
        get plotAreaPosition() {
            return this._plotAreaPosition;
        }
        set plotAreaPosition(a) {
            this._plotAreaPosition = a;
        }
        get isDuringManipulation() {
            return this._isDuringManipulation;
        }
        set isDuringManipulation(a) {
            this._isDuringManipulation = a;
        }
        get viewer() {
            return this._viewer;
        }
        set viewer(a) {
            this._viewer = a;
        }
    }
    PlotAreaMouseEventArgs.$t = /*@__PURE__*/ markType(PlotAreaMouseEventArgs, 'PlotAreaMouseEventArgs', EventArgs.$);
    return PlotAreaMouseEventArgs;
})();
/**
 * @hidden
 */
export let PlotAreaMouseButtonEventArgs = /*@__PURE__*/ (() => {
    class PlotAreaMouseButtonEventArgs extends EventArgs {
        constructor(a, b, c) {
            super();
            this._chartPosition = null;
            this._plotAreaPosition = null;
            this._manipulationOccurred = false;
            this._viewer = null;
            this.viewer = a;
            this.chartPosition = b;
            this.plotAreaPosition = c;
        }
        get chartPosition() {
            return this._chartPosition;
        }
        set chartPosition(a) {
            this._chartPosition = a;
        }
        get plotAreaPosition() {
            return this._plotAreaPosition;
        }
        set plotAreaPosition(a) {
            this._plotAreaPosition = a;
        }
        get manipulationOccurred() {
            return this._manipulationOccurred;
        }
        set manipulationOccurred(a) {
            this._manipulationOccurred = a;
        }
        get viewer() {
            return this._viewer;
        }
        set viewer(a) {
            this._viewer = a;
        }
    }
    PlotAreaMouseButtonEventArgs.$t = /*@__PURE__*/ markType(PlotAreaMouseButtonEventArgs, 'PlotAreaMouseButtonEventArgs', EventArgs.$);
    return PlotAreaMouseButtonEventArgs;
})();
/**
 * @hidden
 */
export let ChartCursorEventArgs = /*@__PURE__*/ (() => {
    class ChartCursorEventArgs extends EventArgs {
        constructor(a, b, c) {
            super();
            this._item = null;
            this._series = null;
            this._seriesViewer = null;
            this.seriesViewer = a;
            this.series = b;
            this.item = c;
        }
        toString() {
            return this.seriesViewer.name + ", " + this.series.name + ", " + (this.item != null ? this.item.toString() : "");
        }
        get item() {
            return this._item;
        }
        set item(a) {
            this._item = a;
        }
        get series() {
            return this._series;
        }
        set series(a) {
            this._series = a;
        }
        get seriesViewer() {
            return this._seriesViewer;
        }
        set seriesViewer(a) {
            this._seriesViewer = a;
        }
        get chart() {
            return typeCast(XamDataChart.$, this.seriesViewer);
        }
    }
    ChartCursorEventArgs.$t = /*@__PURE__*/ markType(ChartCursorEventArgs, 'ChartCursorEventArgs', EventArgs.$);
    return ChartCursorEventArgs;
})();
/**
 * @hidden
 */
export let SeriesViewerSelectedSeriesItemsChangedEventArgs = /*@__PURE__*/ (() => {
    class SeriesViewerSelectedSeriesItemsChangedEventArgs extends EventArgs {
        get oldItems() {
            return this._oldItems;
        }
        set oldItems(a) {
            this._oldItems = a;
        }
        get newItems() {
            return this._newItems;
        }
        set newItems(a) {
            this._newItems = a;
        }
        get currentItems() {
            return this._currentItems;
        }
        set currentItems(a) {
            this._currentItems = a;
        }
        constructor(a, b, c) {
            super();
            this._oldItems = null;
            this._newItems = null;
            this._currentItems = null;
            this.oldItems = a;
            this.newItems = b;
            this.currentItems = c;
        }
    }
    SeriesViewerSelectedSeriesItemsChangedEventArgs.$t = /*@__PURE__*/ markType(SeriesViewerSelectedSeriesItemsChangedEventArgs, 'SeriesViewerSelectedSeriesItemsChangedEventArgs', EventArgs.$);
    return SeriesViewerSelectedSeriesItemsChangedEventArgs;
})();
/**
 * @hidden
 */
export let DataChartMouseButtonEventArgs = /*@__PURE__*/ (() => {
    class DataChartMouseButtonEventArgs extends EventArgs {
        constructor(a, b, c, d, e) {
            super();
            this.j = { $type: Point_$type, x: NaN, y: NaN };
            this.i = null;
            this.d = false;
            this._item = null;
            this._series = null;
            this._plotAreaPosition = null;
            this._chart = null;
            this.chart = a;
            this.series = b;
            this.item = c;
            this.i = d;
            this.plotAreaPosition = e;
        }
        toString() {
            return this.chart.name + ", " + this.series.name + ", " + (this.item != null ? this.item.toString() : "") + ", " + this.getPosition(null).toString();
        }
        get handled() {
            return this.i.handled;
        }
        set handled(a) {
            this.i.handled = a;
        }
        get cancelSelection() {
            return this.d;
        }
        set cancelSelection(a) {
            this.d = a;
        }
        getPosition(a) {
            return this.i.getPosition(a);
        }
        get originalSource() {
            return this.i.originalSource;
        }
        get item() {
            return this._item;
        }
        set item(a) {
            this._item = a;
        }
        get series() {
            return this._series;
        }
        set series(a) {
            this._series = a;
        }
        get plotAreaPosition() {
            return this._plotAreaPosition;
        }
        set plotAreaPosition(a) {
            this._plotAreaPosition = a;
        }
        get chartPosition() {
            if (isNaN_(this.j.x) && isNaN_(this.j.y)) {
                this.j.x = this.plotAreaPosition.x - this.chart.wz.left;
                this.j.y = this.plotAreaPosition.y - this.chart.wz.top;
            }
            return this.j;
        }
        get chart() {
            return this._chart;
        }
        set chart(a) {
            this._chart = a;
        }
    }
    DataChartMouseButtonEventArgs.$t = /*@__PURE__*/ markType(DataChartMouseButtonEventArgs, 'DataChartMouseButtonEventArgs', EventArgs.$);
    return DataChartMouseButtonEventArgs;
})();
/**
 * @hidden
 */
export let ChartMouseEventArgs = /*@__PURE__*/ (() => {
    class ChartMouseEventArgs extends EventArgs {
        constructor(a, b, c, d, e) {
            super();
            this.f = null;
            this._item = null;
            this._series = null;
            this._plotAreaPosition = null;
            this.g = { $type: Point_$type, x: NaN, y: NaN };
            this._chart = null;
            this.chart = a;
            this.series = b;
            this.item = c;
            this.f = d;
            this.plotAreaPosition = e;
        }
        toString() {
            return this.chart.name + ", " + this.series.name + ", " + (this.item != null ? this.item.toString() : "") + ", " + this.getPosition(null).toString();
        }
        getPosition(a) {
            return this.f.getPosition(a);
        }
        get originalSource() {
            return this.f.originalSource;
        }
        get item() {
            return this._item;
        }
        set item(a) {
            this._item = a;
        }
        get series() {
            return this._series;
        }
        set series(a) {
            this._series = a;
        }
        get plotAreaPosition() {
            return this._plotAreaPosition;
        }
        set plotAreaPosition(a) {
            this._plotAreaPosition = a;
        }
        get chartPosition() {
            if (isNaN_(this.g.x) && isNaN_(this.g.y)) {
                this.g.x = this.plotAreaPosition.x - this.chart.wz.left;
                this.g.y = this.plotAreaPosition.y - this.chart.wz.top;
            }
            return this.g;
        }
        get chart() {
            return this._chart;
        }
        set chart(a) {
            this._chart = a;
        }
    }
    ChartMouseEventArgs.$t = /*@__PURE__*/ markType(ChartMouseEventArgs, 'ChartMouseEventArgs', EventArgs.$);
    return ChartMouseEventArgs;
})();
/**
 * @hidden
 */
export let AxisComponentsForView = /*@__PURE__*/ (() => {
    class AxisComponentsForView extends Base {
        constructor() {
            super(...arguments);
            this.a = null;
        }
    }
    AxisComponentsForView.$t = /*@__PURE__*/ markType(AxisComponentsForView, 'AxisComponentsForView');
    return AxisComponentsForView;
})();
/**
 * @hidden
 */
export let AxisLabelPanelBaseView = /*@__PURE__*/ (() => {
    class AxisLabelPanelBaseView extends Base {
        constructor(a) {
            super();
            this.a = null;
            this.aw = null;
            this.e = null;
            this.av = Rect.empty;
            this.c = null;
            this.h = 0;
            this.i = NaN;
            this.a = a;
        }
        aa(a, b, c, d, e, f) {
            let g = typeCast(FrameworkElement.$, a);
            if (g != null) {
                g._visibility = 0;
                if (b.width == 0 && b.height == 0) {
                    g._visibility = 1;
                }
                let h = b.height - (d + f);
                let i = b.width - (c + e);
                g.n = b.left + c;
                g.o = b.top + d;
                if (i < 0) {
                    i = 0;
                }
                if (h < 0) {
                    h = 0;
                }
                g.l = h;
                g.m = i;
                if (g.j != null) {
                    let j = g.j;
                    let k = j.j._inner[0];
                    k.k = k.k + g.n;
                    k.l = k.l + g.o;
                }
            }
        }
        z(a, b, c, d, e, f, g, h) {
            let i = Math.max(e, Math.max(f, Math.max(g, h)));
            let j = new Thickness(0, i);
            if (this.a.av) {
                j = new Thickness(0, Math.sqrt((i * i) / 2));
            }
            let k = c.d;
            if (isNaN_(k.left) || isNaN_(k.top) || isNaN_(k.right) || isNaN_(k.bottom)) {
                k = j;
            }
            if (k.left > j.left || k.top > j.top || k.right > j.right || k.bottom > j.bottom) {
                k = j;
            }
            let l = new Rect(0, d.left - k.left, d.top - k.top, d.width + k.left + k.right, d.height + k.top + k.bottom);
            let m = a.j;
            a.j = null;
            this.aa(a, l, e, f, g, h);
            a.j = m;
            a.width = a.m;
            a.height = a.l;
        }
        ae(a) {
            let b = a;
            b.j = null;
        }
        ah(a) {
        }
        ai(a, b) {
        }
        aj(a, b) {
            let c = typeCast(FrameworkElement.$, a);
            let d = 0;
            let e = 0;
            let f = new TransformGroup();
            let g = ((() => {
                let $ret = new RotateTransform();
                $ret.j = b;
                $ret.k = d;
                $ret.l = e;
                return $ret;
            })());
            f.j.add(g);
            c.j = f;
        }
        ar(a, b, c, d, e, f, g, h, i) {
            let j = Math.max(e, Math.max(f, Math.max(g, h)));
            let k = new Thickness(0, j);
            if (this.a.av) {
                k = new Thickness(0, Math.sqrt((j * j) / 2));
            }
            let l = c.d;
            if (isNaN_(l.left) || isNaN_(l.top) || isNaN_(l.right) || isNaN_(l.bottom)) {
                l = k;
            }
            if (l.left > k.left || l.top > k.top || l.right > k.right || l.bottom > k.bottom) {
                l = k;
            }
            let m = b.j;
            let n = new TransformGroup();
            let o = a.n + l.left;
            let p = a.o + l.top;
            n.j.add(m);
            a.j = n;
        }
        ad(a) {
            a.j = null;
        }
        x(a, b, c, d) {
            let e = a.al.length;
            let f = a.al;
            let g = a.al;
            while ((this.m(a) + c + d) > b && e > 0) {
                e--;
                f = f.substr(0, e) + "\u2026";
                a.al = f;
            }
            a.al = g;
            return f;
        }
        af() {
            if (this.e == null) {
                return;
            }
            let a = this.g();
            for (let b of fromEnum(a)) {
                let c = typeCast(FrameworkElement.$, b);
                if (c != null) {
                    this.a.cg(c);
                }
                this.a.b7(b);
            }
        }
        g() {
            let a = this.a.a1();
            let b = this.a.a0();
            if (!this.a.ad.c7) {
                return a;
            }
            else {
                return b;
            }
        }
        l(a) {
            if (this.a.ad != null && this.a.ad.bz) {
                return this.ax(a).height;
            }
            else {
                return this.h;
            }
        }
        n(a) {
            return this.l(a) + this.r() + this.o();
        }
        an() {
            this.aw = ((() => {
                let $ret = new Path();
                $ret.an = new GeometryGroup();
                $ret.ab = false;
                return $ret;
            })());
        }
        m(a) {
            if (this.a.ad != null && this.a.ad.bz) {
                return this.ax(a).width;
            }
            else {
                let b = a;
                if (b != null && b.al != null) {
                    return this.e.f(b);
                }
                return 0;
            }
        }
        w(a) {
            let b = a;
            if (b != null && b.al != null) {
                return this.m(a) + this.p() + this.q();
            }
            return 0;
        }
        ax(a) {
            let b = a;
            if (b != null && b.al != null) {
                b.ag = true;
                let c = this.e.ah(b, this.h, true);
                return new Size(1, c.c, c.b);
            }
            return new Size(1, 0, 0);
        }
        ac() {
            this.a.bh = this.a.ad.er();
        }
        ak() {
            this.ag();
            this.a.c8(new Size(1, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY));
        }
        f() {
            return this.e;
        }
        al(a) {
            this.e = a;
        }
        y() {
            if (this.a.c1.isEmpty) {
                return;
            }
            let a = this.a.bd;
            this.a.c6(new Size(1, this.a.c1.width, this.a.c1.height));
            if (this.a.bd != a) {
                this.a.ad.bg.oc();
                this.am();
            }
        }
        am() {
        }
        ap(a) {
            this.e.x(a);
        }
        ao() {
            if (this.e == null) {
                return;
            }
            if (this.e.d) {
                if (this.a.ad.bi != null && this.a.ad.bi.hk != 1) {
                    this.e.aa();
                    this.e.ab(this.a.ad.bi.hk, this.a.ad.bi.hk);
                }
                this.ag();
                this.av = this.a.c1;
                let a = this.a.ad.bg.getFontBrush();
                if (this.a.ag != null && this.a.ag.textColor != null) {
                    a = this.a.ag.textColor;
                }
                if (this.a.j != null) {
                    this.e.aa();
                    this.e.k(this.a.j);
                }
                let b = false;
                for (let c of fromEnum(this.g())) {
                    let d = typeCast(TextBlock.$, c);
                    if (d != null) {
                        if (d.s != 0) {
                            b = true;
                            continue;
                        }
                        d.ao = a;
                        if (d.j != null) {
                            this.e.aa();
                            this.e.k(d.j);
                        }
                        this.ap(d);
                        if (d.j != null) {
                            this.e.z();
                        }
                    }
                }
                if (b) {
                    for (let e of fromEnum(this.a.ab)) {
                        let f = typeCast(Rectangle.$, e);
                        if (f != null) {
                            if (f.s == 0) {
                                continue;
                            }
                            if (f.j != null) {
                                this.e.aa();
                                this.e.k(f.j);
                            }
                            this.e.w(f);
                            if (f.j != null) {
                                this.e.z();
                            }
                        }
                        let g = typeCast(TextBlock.$, e);
                        if (g != null) {
                            if (g.s == 0) {
                                continue;
                            }
                            if (g.j != null) {
                                this.e.aa();
                                this.e.k(g.j);
                            }
                            if (g.ao == null) {
                                g.ao = a;
                            }
                            this.e.x(g);
                            if (g.j != null) {
                                this.e.z();
                            }
                        }
                    }
                }
                if (this.a.j != null) {
                    this.e.z();
                }
                this.aq();
                a = this.at();
                this.e.ad(this.d());
                let h = this.a.ad.iv;
                if (h != null) {
                    h.ao = a;
                    if (h.j != null) {
                        this.e.aa();
                        this.e.k(h.j);
                    }
                    this.e.x(h);
                    if (h.j != null) {
                        this.e.z();
                    }
                }
                if (this.a.ad.bi != null && this.a.ad.bi.hk != 1) {
                    this.e.z();
                }
            }
        }
        d() {
            let a = this.a.ad.bi.getFontInfo();
            if (this.a.ad.bf != null && this.a.ad.bf.textStyle != null) {
                a = this.a.ad.bf.h(this.a.ad.bi.c9.j.ae);
            }
            else {
                let b = this.a.ad.bi.de();
                if (b != null) {
                    a = b;
                }
            }
            return a;
        }
        at() {
            let a = this.a.ad.bg.getFontBrush();
            if (this.a.ad.bf != null && this.a.ad.bf.textColor != null) {
                a = this.a.ad.bf.textColor;
            }
            else {
                let b = this.a.ad.bi.vo();
                if (b != null) {
                    a = b;
                }
            }
            return a;
        }
        ag() {
            if (this.e == null) {
                return;
            }
            let a = this.a.ad.bi.getFontInfo();
            if (this.a.ag != null && this.a.ag.j) {
                a = this.a.ag.h(this.a.ad.bi.c9.j.ae);
            }
            if (this.c != a) {
                this.c = a;
                this.as();
            }
            this.e.ad(a);
        }
        as() {
            if (this.a.ad != null && this.a.ad.bi != null) {
                if (this.a.ag == null || this.a.ag.textStyle == null) {
                    this.h = this.a.ad.bi.c9.a9;
                    return;
                }
                if (this.h == 0) {
                    this.h = this.a.ad.bi.c9.a9;
                }
                let a = this.h;
                let b = this.a.ad.bi.getFontInfo();
                if (this.a.ag != null && this.a.ag.textStyle != null) {
                    b = this.a.ag.h(this.a.ad.bi.c9.j.ae);
                }
                let c = FontUtil.getCurrentFontHeight(this.a.ad.bi.c9.j.ae, b);
                this.h = c;
                if (a != this.h) {
                    this.a.ad.bi.oc();
                }
            }
        }
        j() {
            if (this.a.ad.g8 == null) {
                return 0;
            }
            if (this.a.ad.bf != null && this.a.ad.bf.visibility == 1) {
                return 0;
            }
            if (!isNaN_(this.i)) {
                return this.i;
            }
            let a = this.d();
            if (this.a.ad.bi == null) {
                return this.h;
            }
            this.i = FontUtil.getCurrentFontHeight(this.a.ad.bi.c9.j.ae, a);
            return this.i;
        }
        k() {
            if (this.a.ad.bf != null && this.a.ad.bf.visibility == 1) {
                return 0;
            }
            if (this.e == null) {
                return 0;
            }
            let a = this.a.ad.iv;
            if (a != null && a.al != null) {
                this.e.ad(this.d());
                let b = this.e.f(a);
                this.ag();
                return b;
            }
            return 0;
        }
        aq() {
            if (this.a.ab.count == 0) {
                return;
            }
            if (this.a.ad.j3 == null) {
                this.aw._stroke = this.a.ad.bg.vl();
            }
            else {
                this.aw._stroke = this.a.ad.j3;
            }
            this.aw.ad = this.a.ad.fk;
            this.e.t(this.aw);
        }
        ab(a) {
        }
        ay() {
            return this.a.ad.bi.w2();
        }
        v() {
            if (this.a.ad.bf != null && !isNaN_(this.a.ad.bf.topMargin)) {
                return Math.max(0, this.a.ad.bf.topMargin);
            }
            else {
                return this.ay().top;
            }
        }
        s() {
            if (this.a.ad.bf != null && !isNaN_(this.a.ad.bf.bottomMargin)) {
                return Math.max(0, this.a.ad.bf.bottomMargin);
            }
            else {
                return this.ay().bottom;
            }
        }
        t() {
            if (this.a.ad.bf != null && !isNaN_(this.a.ad.bf.leftMargin)) {
                return Math.max(0, this.a.ad.bf.leftMargin);
            }
            else {
                return this.ay().left;
            }
        }
        u() {
            if (this.a.ad.bf != null && !isNaN_(this.a.ad.bf.rightMargin)) {
                return Math.max(0, this.a.ad.bf.rightMargin);
            }
            else {
                return this.ay().right;
            }
        }
        au() {
            return this.aw.an.d;
        }
        b() {
            let a = ((() => {
                let $ret = new PathRenderingInfo();
                $ret.e = this.a.ad.j3;
                $ret.c = this.a.ad.fk;
                return $ret;
            })());
            if (this.a.ad != null && typeCast(XamDataChart.$, this.a.ad.bg) !== null) {
                let b = this.a.ad.bg;
                if (b.xr && b.c0 != 2 && b.c0 != 1) {
                    a.a = true;
                }
            }
            return a;
        }
        r() {
            if (this.a.ag == null) {
                return 0;
            }
            return Math.max(0, this.a.ag.topMargin);
        }
        p() {
            if (this.a.ag == null) {
                return 0;
            }
            return Math.max(0, this.a.ag.leftMargin);
        }
        q() {
            if (this.a.ag == null) {
                return 0;
            }
            return Math.max(0, this.a.ag.rightMargin);
        }
        o() {
            if (this.a.ag == null) {
                return 0;
            }
            return Math.max(0, this.a.ag.bottomMargin);
        }
    }
    AxisLabelPanelBaseView.$t = /*@__PURE__*/ markType(AxisLabelPanelBaseView, 'AxisLabelPanelBaseView');
    return AxisLabelPanelBaseView;
})();
/**
 * @hidden
 */
export let AxisView = /*@__PURE__*/ (() => {
    class AxisView extends Base {
        constructor(a) {
            super();
            this.a = null;
            this.bd = null;
            this.be = null;
            this.bg = null;
            this.bf = null;
            this.b = new AxisComponentsFromView();
            this.h = null;
            this.k = null;
            this.j = null;
            this._isDirty = false;
            this.bh = null;
            this.bb = Rect.empty;
            this.a = a;
            this.bh = new Rectangle();
        }
        al() {
            this.bd = ((() => {
                let $ret = new Path();
                $ret.an = new GeometryGroup();
                return $ret;
            })());
            this.bg = ((() => {
                let $ret = new Path();
                $ret.an = new GeometryGroup();
                $ret.ab = false;
                $ret.stroke = null;
                return $ret;
            })());
            this.be = ((() => {
                let $ret = new Path();
                $ret.an = new GeometryGroup();
                $ret.ab = false;
                return $ret;
            })());
            this.bf = ((() => {
                let $ret = new Path();
                $ret.an = new GeometryGroup();
                $ret.ab = false;
                return $ret;
            })());
            this.a.j3 = AxisDefaults.axis_TickBrush;
            this.a.fj = AxisDefaults.axis_TickLength;
            this.a.fk = AxisDefaults.axis_TickStroke;
            this.a.et = AxisDefaults.axis_MajorStroke;
            this.a.ew = AxisDefaults.axis_MinorStroke;
            this.a.fi = AxisDefaults.axis_LineStroke;
        }
        an(a) {
        }
        a3() {
            let a = new TextBlock();
            return a;
        }
        aw(a) {
            a._visibility = 0;
            a.s = 0;
            if (a.x == null) {
                this.a.aw.ab.add(a);
            }
        }
        ay(a) {
            a._visibility = 1;
        }
        ax(a) {
            if (this.a.aw.ab.contains(a)) {
                this.a.aw.ab.remove(a);
            }
        }
        bi() {
            let a = new Rectangle();
            return a;
        }
        t(a) {
            if (a.x == null) {
                this.d.ab.add(a);
            }
            a._visibility = 0;
        }
        v(a) {
            a._visibility = 1;
        }
        u(a) {
            if (this.a.aw.ab.contains(a)) {
                this.a.aw.ab.remove(a);
            }
        }
        ao() {
        }
        p() {
            return true;
        }
        get index() {
            if (this.a.bi != null && this.a.bi.fd) {
                return this.a.bi.series.count + 1;
            }
            let a = typeCast(XamDataChart.$, this.a.bg);
            let b = 0;
            if (a == null) {
                return 0;
            }
            if (a != null && a.xb == 1) {
                let c = 0;
                for (let d = 0; d < this.a.bi.series.count; d++) {
                    if (this.a.bi.series._inner[d].isStacked) {
                        c += this.a.bi.series._inner[d].kd();
                    }
                    else {
                        c++;
                    }
                }
                b = c;
            }
            return b + a.axes.indexOf(this.a);
        }
        ai() {
            this.d.cf();
            this.d.b3();
        }
        ag() {
            this.d.ca();
        }
        ac() {
            if (this.d != null) {
                this.d.ab.clear();
            }
            this.ae(this.bd.an.d);
            this.ae(this.bg.an.d);
            this.ae(this.be.an.d);
            this.ae(this.bf.an.d);
            this.aj();
        }
        a1(a) {
            this.bd._visibility = a;
            this.be._visibility = a;
            this.bg._visibility = a;
            this.bf._visibility = a;
        }
        at() {
        }
        ab(a) {
            this.a.cq = true;
            if (this.a.bi != null) {
                this.a.bi.oc();
            }
            this.a.ia();
        }
        c() {
            this.b.a = this.bd;
            this.b.b = this.be;
            this.b.c = this.bf;
            this.b.d = this.bg;
            return this.b;
        }
        ae(a) {
            if (a != null) {
                a.clear();
            }
        }
        a4() {
            return this.bd.an.d;
        }
        e() {
            let a = ((() => {
                let $ret = new PathRenderingInfo();
                $ret.e = this.a.j2;
                $ret.c = this.a.fi;
                $ret.f = this.a.j6;
                return $ret;
            })());
            if (typeCast(XamDataChart.$, this.a.bg) !== null) {
                let b = this.a.bg;
                if (b.xr && b.c0 != 2 && b.c0 != 1) {
                    a.a = true;
                }
            }
            return a;
        }
        a7() {
            return this.bg.an.d;
        }
        a5() {
            return this.be.an.d;
        }
        f() {
            let a = ((() => {
                let $ret = new PathRenderingInfo();
                $ret.e = this.a.jz;
                $ret.c = this.a.et;
                $ret.f = this.a.j4;
                return $ret;
            })());
            if (typeCast(XamDataChart.$, this.a.bg) !== null) {
                let b = this.a.bg;
                if (b.xr && b.c0 != 2 && b.c0 != 1) {
                    a.a = true;
                }
            }
            return a;
        }
        a6() {
            return this.bf.an.d;
        }
        g() {
            let a = ((() => {
                let $ret = new PathRenderingInfo();
                $ret.e = this.a.j0;
                $ret.c = this.a.ew;
                $ret.f = this.a.j5;
                return $ret;
            })());
            if (typeCast(XamDataChart.$, this.a.bg) !== null) {
                let b = this.a.bg;
                if (b.xr && b.c0 != 2 && b.c0 != 1) {
                    a.a = true;
                }
            }
            return a;
        }
        get d() {
            return this.a.aq().a;
        }
        az(a, b, c) {
            this.d.ad = a;
            this.d.c5 = b;
            this.d.c4 = c;
            this.aj();
        }
        ad() {
            this.d.ab.clear();
            this.aj();
        }
        av(a) {
            this.d.bw = a;
            this.aj();
        }
        a0(a, b) {
            this.d.a9 = a;
            this.d.ba = b;
            this.d.ar = false;
        }
        au(a) {
            this.d.bg = a;
        }
        aa() {
        }
        s(a) {
            return null;
        }
        z() {
        }
        aq() {
        }
        l() {
            return true;
        }
        o() {
            return false;
        }
        m() {
            return false;
        }
        r(dataItem_) {
            if (this.a.au != null) {
                return this.a.au(dataItem_);
            }
            if (this.a.ai != null) {
                return this.a.ai.i(dataItem_);
            }
            return null;
        }
        q(dataItem_) {
            if (this.o() && this.m()) {
                return this.r(dataItem_);
            }
            else {
                if (this.a.au != null) {
                    return this.a.au(dataItem_);
                }
                if (this.a.ai != null) {
                    return this.a.ai.i(dataItem_);
                }
            }
            let label_ = this.a.f2;
            let a = typeof dataItem_ === 'number' && typeof label_ === 'string';
            let labelValue_ = null;
            if (this.h != null) {
                labelValue_ = this.h.getPropertyValue(dataItem_);
                if ((labelValue_ === undefined)) {
                    labelValue_ = label_;
                }
            }
            else {
                labelValue_ = a ? stringFormat(label_, dataItem_) : (typeof dataItem_[label_] != 'undefined') ? dataItem_[label_] : label_;
                ;
            }
            if (this.a.expectFunctions) {
                if ((typeof (labelValue_) == 'function')) {
                    labelValue_ = labelValue_();
                }
            }
            return labelValue_;
        }
        ak(a, b) {
            this.j = a;
            this.k = b;
        }
        get isDirty() {
            return this._isDirty;
        }
        set isDirty(a) {
            this._isDirty = a;
        }
        aj() {
            if (this.a.bg == null || this.j == null) {
                return;
            }
            if (!this.isDirty) {
                this.isDirty = true;
                this.a.bg.al.r(this.j, this.k);
            }
        }
        undirty(a) {
            this.isDirty = false;
            this.ar(a);
        }
        ar(a) {
            if (this.j == null) {
                return;
            }
            if (this.j.d) {
                if (this.a.bi != null && this.a.bi.hk != 1) {
                    this.j.aa();
                    this.j.ab(this.a.bi.hk, this.a.bi.hk);
                }
                let b = this.a.bg.wn();
                if (a) {
                    if (!this.j.e) {
                        this.j.l(b.left, b.top, b.width, b.height);
                    }
                }
                if (a) {
                    if (this.a.bi.vx != null && !this.a.kh.isEmpty) {
                        this.bh.o = this.a.kh.top;
                        this.bh.n = this.a.kh.left;
                        this.bh.width = this.a.kh.width;
                        this.bh.height = this.a.kh.height;
                        this.bh._fill = this.a.bi.vx;
                        this.j.w(this.bh);
                    }
                }
                this.j.aa();
                this.j.af(this.a.kh);
                this.as();
                this.j.z();
                if (this.a.bi != null && this.a.bi.hk != 1) {
                    this.j.z();
                }
            }
            if (this.k.d) {
                if (this.a.bi != null && this.a.bi.hk != 1) {
                    this.k.aa();
                    this.k.ab(this.a.bi.hk, this.a.bi.hk);
                }
                let c = this.bb;
                let d = this.a.bg.wn();
                if (!c.isEmpty && a) {
                    if (!this.k.e) {
                        this.k.l(d.left, d.top, d.width, d.height);
                    }
                }
                if (this.a.bi != null && this.a.bi.hk != 1) {
                    this.k.z();
                }
            }
        }
        postRender() {
            this.d.ck();
        }
        as() {
            if (this.j.d) {
                this.bd._stroke = this.a.jy;
                this.bg._fill = this.a.j1;
                this.bf._stroke = this.a.jx;
                this.be._stroke = this.a.jw;
                this.bf.ad = this.a.ew;
                this.be.ad = this.a.et;
                this.bd.ad = this.a.fi;
                this.bf.ai = this.a.j5;
                this.be.ai = this.a.j4;
                this.bd.ai = this.a.j6;
                this.bb = this.a.kh;
                this.j.t(this.bd);
                this.j.t(this.bg);
                this.j.t(this.be);
                this.j.t(this.bf);
            }
        }
        ah() {
            this.aj();
        }
        af(a) {
            if (a != null) {
                a.al.u(this);
                a.c9.cq();
            }
        }
        y(a) {
            if (a != null) {
                a.al.o(this);
                this.aj();
            }
        }
        i() {
            if (this.a.bi == null || this.a.bi.c9.j.ae == null) {
                return null;
            }
            return FontUtil.getFont(this.a.bi.c9.j.ae);
        }
        n() {
            return this.j == null;
        }
        ap() {
            if (this.a.b9 || this.a.cm) {
                return;
            }
            if (this.a.g8 == null) {
                this.a.iv = null;
                this.a.cq = true;
                this.a.ia();
                return;
            }
            if (this.a.iv == null) {
                let a = new TextBlock();
                a.al = this.a.g8;
                a.dataContext = this.a.bf;
                this.a.iv = a;
            }
            else {
                this.a.iv.al = this.a.g8;
                this.a.iv.dataContext = this.a.bf;
            }
            this.a.cq = true;
            this.a.ia();
        }
        x() {
            let a;
            let b = new AxisLabelSettings();
            if (this.a.b9) {
                a = "ui-angular-axis-labels";
                b.margin = 0;
            }
            else if (this.a.cp) {
                a = "ui-vertical-axis-labels";
                b.location = 2;
                b.leftMargin = 5;
                b.rightMargin = 5;
                b.topMargin = 2;
                b.bottomMargin = 2;
            }
            else if (this.a.a2 == 3) {
                a = "ui-radial-axis-labels";
                b.location = 5;
            }
            else {
                a = "ui-horizontal-axis-labels";
                b.location = 1;
                b.leftMargin = 2;
                b.rightMargin = 2;
                b.topMargin = 5;
                b.bottomMargin = 5;
            }
            this.w(b, a);
        }
        a2() {
            if (this.a.bi == null) {
                return;
            }
            let a = this.a.bi.xk;
            let b = a.fv;
            let c = a.fu;
            if (this.a.j2 == null) {
                if (b == null) {
                    this.a.j2 = a.fs;
                }
                else if (b.color.l != 0) {
                    this.a.j2 = b;
                }
            }
            if (this.a.jz == null) {
                if (c == null) {
                    this.a.jz = a.fs;
                }
                else if (c.color.l != 0) {
                    this.a.jz = c;
                }
            }
        }
        w(a, b) {
            this.a.fn.startCSSQuery();
            let c = this.a.fn.getCssDefaultPropertyValue(b, "margin-top");
            let d = this.a.fn.getCssDefaultPropertyValue(b, "margin-right");
            let e = this.a.fn.getCssDefaultPropertyValue(b, "margin-bottom");
            let f = this.a.fn.getCssDefaultPropertyValue(b, "margin-left");
            let g = this.a.fn.getCssDefaultPropertyValue(b, "text-align");
            let h = this.a.fn.getCssDefaultPropertyValue(b, "vertical-align");
            let i = this.a.fn.getCssDefaultPropertyValue(b, "color");
            let j = FontUtil.getFontForClass(this.a.fn, b);
            this.a.fn.endCSSQuery();
            if (c != null) {
                a.topMargin = parseFloat(c);
            }
            if (d != null) {
                a.rightMargin = parseFloat(d);
            }
            if (e != null) {
                a.bottomMargin = parseFloat(e);
            }
            if (f != null) {
                a.leftMargin = parseFloat(f);
            }
            if (i != null) {
                if (a.textColor == null) {
                    a.textColor = new Brush();
                }
                a.textColor._fill = i;
            }
            if (j != null) {
                a.g = j;
            }
            if (g != null) {
                switch (g) {
                    case "right":
                        a.horizontalAlignment = 2;
                        break;
                    case "left":
                        a.horizontalAlignment = 0;
                        break;
                    default:
                        a.horizontalAlignment = 1;
                        break;
                }
            }
            if (h != null) {
                switch (h) {
                    case "top":
                        a.verticalAlignment = 0;
                        break;
                    case "bottom":
                        a.verticalAlignment = 2;
                        break;
                    default:
                        a.verticalAlignment = 1;
                        break;
                }
            }
            this.a.az = a;
        }
        preRender() {
            if (this.a.bi != null) {
                this.a.bi.nv();
            }
        }
        isValid() {
            return this.a != null && !this.a.kh.isEmpty;
        }
        a8(a) {
            return { $type: Point_$type, x: a.n, y: a.o };
        }
        a9() {
            return { $type: Point_$type, x: this.a.aw.c1.left, y: this.a.aw.c1.top };
        }
        bc() {
            let a = this.a.aw.c1;
            return a;
        }
        ba(a) {
            return { $type: Point_$type, x: a.n, y: a.o };
        }
        bj(a) {
            let b = this.a.aw.af.t();
            let c = this.a.aw.af.v();
            let d = this.a.aw.af.u();
            let e = this.a.aw.af.s();
            return new Thickness(1, b, c, d, e);
        }
        am() {
            if (FastReflectionHelper.needsHelper(this.a.f2)) {
                this.h = new FastReflectionHelper(true, this.a.f2);
            }
            else {
                this.h = null;
            }
        }
    }
    AxisView.$t = /*@__PURE__*/ markType(AxisView, 'AxisView', Base.$, [ISchedulableRender_$type]);
    return AxisView;
})();
/**
 * @hidden
 */
export let CategoryAxisBaseView = /*@__PURE__*/ (() => {
    class CategoryAxisBaseView extends AxisView {
        constructor(a) {
            super(a);
            this.bk = null;
            this.bk = a;
        }
        s(a) {
            let b = 0;
            if (this.bk.categoryMode == 0) {
                b = truncate(Math.round(a));
            }
            else {
                b = truncate(Math.floor(a));
            }
            if (b < 0 || b > this.a.lk - 1) {
                return null;
            }
            let c = this.a.kv.item(b);
            let d = this.q(c);
            if (d == null) {
                return null;
            }
            return d.toString();
        }
        bl(a) {
            let b = 0;
            let c = false;
            for (let d = 0; d < a.count; d++) {
                let e = typeCast(FrameworkElement.$, a._inner[d]);
                if (e == null) {
                    e = this.a.br.item(d);
                    let f = a._inner[d] == null ? "" : a._inner[d].toString();
                    let g = e.al;
                    let h = 0;
                    let i = 0;
                    if (g != null) {
                        h = g.length;
                    }
                    if (f != null) {
                        i = f.length;
                    }
                    if (h != i) {
                        c = true;
                    }
                    e.al = f;
                    b++;
                }
                else {
                    this.d.ab.add(e);
                }
            }
            if (c) {
                this.a.cq = true;
            }
            this.a.hh();
            return b;
        }
    }
    CategoryAxisBaseView.$t = /*@__PURE__*/ markType(CategoryAxisBaseView, 'CategoryAxisBaseView', AxisView.$);
    return CategoryAxisBaseView;
})();
/**
 * @hidden
 */
export let HorizontalAxisLabelPanelBaseView = /*@__PURE__*/ (() => {
    class HorizontalAxisLabelPanelBaseView extends AxisLabelPanelBaseView {
        constructor(a) {
            super(a);
            this.az = null;
            this.az = a;
        }
        a1() {
        }
        a0() {
            return false;
        }
        a2(a) {
            let b = this.a.bs();
            let c, d;
            c = this.az.dh();
            d = this.az.de();
            let e = this.a.ag != null ? this.a.ag.verticalAlignment : 1;
            let f = this.a.bd;
            let g = a.count;
            let h = this.a.c1;
            let i = this.az.dg();
            let j = i / 2;
            for (let k = 0; k < g; k++) {
                let l = a._inner[k];
                let m = l.height / 2;
                switch (e) {
                    case 0:
                        l.y = h.top + c;
                        break;
                    case 1:
                    case 3:
                        l.y = (h.top + c + j) - m;
                        break;
                    case 2:
                        l.y = (h.bottom - d) - l.height;
                        break;
                }
            }
        }
    }
    HorizontalAxisLabelPanelBaseView.$t = /*@__PURE__*/ markType(HorizontalAxisLabelPanelBaseView, 'HorizontalAxisLabelPanelBaseView', AxisLabelPanelBaseView.$);
    return HorizontalAxisLabelPanelBaseView;
})();
/**
 * @hidden
 */
export let NumericAxisBaseView = /*@__PURE__*/ (() => {
    class NumericAxisBaseView extends AxisView {
        constructor(a) {
            super(a);
            this.bk = null;
            this.bk = a;
        }
        bl() {
        }
        o() {
            return this.bk.ln;
        }
        m() {
            if (this.bk.kt != null) {
                return true;
            }
            if (this.bk.ks != null) {
                return true;
            }
            return false;
        }
        r(dataItem_) {
            if (this.bk.kt != null) {
                return this.bk.kt(dataItem_);
            }
            if (this.bk.ks != null) {
                return this.bk.ks.i(dataItem_);
            }
            return null;
        }
        s(a) {
            let b = this.bk.k4.d(this.bk.kh, this.bk.bi.wh, this.bk.kc(), this.bk.kb());
            return this.bk.k4.w(b, a, -1, NaN);
        }
    }
    NumericAxisBaseView.$t = /*@__PURE__*/ markType(NumericAxisBaseView, 'NumericAxisBaseView', AxisView.$);
    return NumericAxisBaseView;
})();
/**
 * @hidden
 */
export let VerticalAxisLabelPanelView = /*@__PURE__*/ (() => {
    class VerticalAxisLabelPanelView extends AxisLabelPanelBaseView {
        constructor(a) {
            super(a);
            this.az = null;
            this.az = a;
        }
        a0() {
        }
        d() {
            let a = this.a.ad.bi.getFontInfo();
            if (this.a.ad.bf != null && this.a.ad.bf.textStyle != null) {
                a = this.a.ad.bf.h(this.a.ad.bi.c9.j.ae);
            }
            else {
                let b = this.a.ad.bi.df();
                if (b != null) {
                    a = b;
                }
            }
            return a;
        }
        ay() {
            return this.a.ad.bi.w3();
        }
        at() {
            let a = this.a.ad.bg.getFontBrush();
            if (this.a.ad.bf != null && this.a.ad.bf.textColor != null) {
                a = this.a.ad.bf.textColor;
            }
            else {
                let b = this.a.ad.bi.vp();
                if (b != null) {
                    a = b;
                }
            }
            return a;
        }
        a1(a, b) {
            let c, d;
            c = this.az.db();
            d = this.az.dd();
            let e = this.a.ag != null ? this.a.ag.horizontalAlignment : 1;
            let f = this.a.bd;
            let g = this.az.de();
            let h = g / 2;
            let i = this.a.c1;
            for (let j = 0; j < a.count; j++) {
                let k = a._inner[j];
                let l = k.width / 2;
                switch (e) {
                    case 0:
                        k.x = i.left + c;
                        break;
                    case 1:
                    case 3:
                        k.x = (i.left + c + h) - l;
                        break;
                    case 2:
                        k.x = (i.right - d) - k.width;
                        break;
                }
            }
        }
    }
    VerticalAxisLabelPanelView.$t = /*@__PURE__*/ markType(VerticalAxisLabelPanelView, 'VerticalAxisLabelPanelView', AxisLabelPanelBaseView.$);
    return VerticalAxisLabelPanelView;
})();
/**
 * @hidden
 */
export let XamDataChartView = /*@__PURE__*/ (() => {
    class XamDataChartView extends SeriesViewerView {
        constructor(a) {
            super(a);
            this.fn = null;
            this.fw = null;
            this.fs = null;
            this.ft = null;
            this.fv = null;
            this.fu = null;
            this.fp = 0;
            this.fq = 0;
            this.fo = null;
            this.fn = a;
        }
        fr(a) {
            this.p.al.s();
        }
        ds() {
            super.ds();
            if (this.b.count == 0 && this.y != null) {
                if (this.p.hk != 1) {
                    this.y.aa();
                    this.y.ab(this.p.hk, this.p.hk);
                }
                if (!this.y.e) {
                    this.y.l(0, 0, this.a8, this.a7);
                }
                if (this.p.hk != 1) {
                    this.y.z();
                }
            }
        }
        d4() {
            let a, b;
            let c = 1, d = 0;
            let e = false;
            let f = this.j.e();
            let g;
            let h = this.j.a7(c, g, a, b, d, e);
            c = h.p0;
            g = h.p1;
            a = h.p2;
            b = h.p3;
            d = h.p4;
            e = h.p5;
            if (isNaN_(this.p.ij)) {
                this.p.ij = g[0];
            }
            if (isNaN_(this.p.h9)) {
                this.p.h9 = g[1];
            }
            if (isNaN_(this.p.hr)) {
                this.p.hr = g[2];
            }
            if (isNaN_(this.p.h4)) {
                this.p.h4 = g[3];
            }
            this.fn.aa7 = f.i;
            this.fn.aa5 = AxisDefaults.axis_MajorBrush;
            this.fn.aa6 = AxisDefaults.axis_MinorBrush;
            this.fn.xr = e;
            this.fv = a;
            this.fu = b;
            this.fn.ag = f.a;
            this.fn.aj = f.f;
            this.fn.ah = f.b != null ? f.b : new BrushCollection();
            this.fn.ai = f.c != null ? f.c : new BrushCollection();
            if (this.fn.ah.count == 0) {
                for (let i = 0; i < f.a.count; i++) {
                    this.fn.ah.add(f.a.item(i));
                }
            }
            if (f.c.count == 0) {
                for (let j = 0; j < f.f.count; j++) {
                    this.fn.ai.add(f.f.item(j));
                }
            }
            this.ft = f.j;
            this.fw = f.k;
            this.fo = f.h;
            this.fs = f.i;
            this.fp = c;
            for (let k of fromEnum(this.fn.series)) {
                k.sh();
            }
            this.fq = d;
        }
        d1() {
            this.fe.ad = Defaults.crosshairLineThickness;
            this.fd.ad = Defaults.crosshairLineThickness;
            this.fe._stroke = this.p.v4 != null ? this.p.v4 : this.ft;
            this.fd._stroke = this.p.vu != null ? this.p.vu : this.ft;
            super.d1();
        }
    }
    XamDataChartView.$t = /*@__PURE__*/ markType(XamDataChartView, 'XamDataChartView', SeriesViewerView.$);
    return XamDataChartView;
})();
/**
 * @hidden
 */
export let SeriesView = /*@__PURE__*/ (() => {
    class SeriesView extends Base {
        constructor(a) {
            super();
            this.f = null;
            this.v = false;
            this.i = null;
            this.d = null;
            this._isDirty = false;
            this.cb = null;
            this.b1 = null;
            this.ad = 0;
            this.b6 = Rect.empty;
            this.b0 = new Brush();
            this.g = new SeriesComponentsFromView();
            this.m = null;
            this.n = null;
            this.b7 = null;
            this.b8 = null;
            this.o = false;
            this.a = null;
            this.u = false;
            this.q = false;
            this.s = false;
            this.al = null;
            this.y = new List$1(ITrendLineManager_$type, 0);
            this.p = false;
            this.z = new List$1(FrameworkElement.$, 0);
            this.x = new Dictionary$2(FontInfo.$, Tuple$2.$.specialize(Number_$type, FontInfo.$), 0);
            this.ad = NaN;
            this.u = true;
            this.f = a;
            this.t = false;
            this.cb = new Rectangle();
            this.v = false;
        }
        getDefaultTooltipTemplate() {
            return this.f.ba.a$t(this.f);
        }
        a1() {
            if (this.f.fj) {
                this.f.ba.a$aa(this.f);
            }
        }
        k() {
            return new DOMExecutionContext(this.f.dc.c9.j.ae);
        }
        get j() {
            if (this.i == null) {
                this.i = this.k();
            }
            return this.i;
        }
        ap(a, b) {
            Series.po(b, this.f.dc, false);
            b.dc = this.f.dc;
            b.c4 = this.f.c4;
            if (b.dc != null) {
                b.dc.nh(b);
            }
        }
        au(a) {
            Series.po(a, this.f.dc, true);
            a.o7(true, a.cw);
            a.dc = null;
            a.c4 = null;
            a.itemsSource = null;
            a.legend = null;
            if (a.dc != null) {
                a.dc.rd(a);
            }
        }
        a4() {
            if (!this.t) {
                this.f.il = 0.8;
                this.f.c2 = 0;
                this.f.c1 = 1;
                this.d = new DataContext();
                this.d.series = this.f;
                this.f.df = EasingFunctions.cubicEase;
                this.an();
            }
        }
        getEffectiveViewport() {
            return this.f.getEffectiveViewport1(this);
        }
        bb() {
            this.a2();
        }
        as() {
        }
        getMainContentViewport() {
            return this.f.getMainContentViewport();
        }
        get ae() {
            if (this.f.dc != null) {
                return this.f.dc.c9.j.ae;
            }
            return null;
        }
        l(a) {
            return FontUtil.getFontInfoFromString(this.ae, a);
        }
        get isDirty() {
            return this._isDirty;
        }
        set isDirty(a) {
            this._isDirty = a;
        }
        get_index() {
            if (this.f == null || this.f.dc == null) {
                return 0;
            }
            if (this.f.dc.fd) {
                if (this.f.fd) {
                    return this.f.dc.series.indexOf(this.f);
                }
                else {
                    let a = this.f.dc.series.indexOf(this.f);
                    if (a >= 0) {
                        return a;
                    }
                    for (let b = 0; b < this.f.dc.series.count; b++) {
                        if (this.f.dc.series._inner[b].fd) {
                            let c = this.f.dc.series._inner[b].bp();
                            if (c == this.f) {
                                return b;
                            }
                        }
                    }
                    return a;
                }
            }
            let d = typeCast(XamDataChart.$, this.f.da);
            let e = 0;
            if (d != null) {
                if (d.xb == 2 || d.xb == 0) {
                    e = d.axes.count;
                }
            }
            let f = 0;
            for (let g = 0; g < this.f.dc.series.count; g++) {
                if (this.f.dc.series._inner[g] == this.f) {
                    break;
                }
                if (this.f.dc.series._inner[g].isStacked) {
                    f += this.f.dc.series._inner[g].kd();
                }
                else if (this.f.dc.series._inner[g].ei) {
                    if (this.f.bo != null && this.f.bo == this.f.dc.series._inner[g]) {
                        f += 1;
                        for (let h = 0; h < this.f.dc.series._inner[g].actualLayers.count; h++) {
                            if (this.f.dc.series._inner[g].actualLayers._inner[h].target == this.f) {
                                return e + f + (h);
                            }
                        }
                    }
                    else {
                        f += this.f.dc.series._inner[g].actualLayers.count + 1;
                    }
                }
                else {
                    f++;
                }
            }
            return e + f;
        }
        get index() {
            return this.get_index();
        }
        a2() {
            if (this.f.dc == null) {
                return;
            }
            if (!this.isDirty) {
                this.isDirty = true;
                this.a.r(this.m, this.n);
            }
        }
        undirty(a) {
            this.isDirty = false;
            this.bh(a);
        }
        a6() {
            this.a2();
        }
        b5() {
            if (this.b1 == null) {
                this.b1 = ((() => {
                    let $ret = new Brush();
                    $ret.color = Color.u(0, 0, 0, 0);
                    return $ret;
                })());
            }
            return this.b1;
        }
        b2(a) {
            if (a != null) {
                let b = BrushUtil.p(a, 1);
                return b;
            }
            else {
                return null;
            }
        }
        ac() {
            if (!isNaN_(this.ad)) {
                return this.ad;
            }
            if (this.f.dc != null) {
                return this.f.dc.hk;
            }
            else {
                return 1;
            }
        }
        bh(a) {
            if (this.m == null) {
                return;
            }
            if (this.b6.isEmpty) {
                this.b6 = this.b9;
            }
            let b = this.b6;
            let c = this.f.dc.wn();
            let d = c.left;
            let e = c.top;
            let f = c.width;
            let g = c.height;
            let h = this.ac();
            if (this.s) {
                d = this.b9.left;
                e = this.b9.top;
                f = this.b9.width;
                g = this.b9.height;
            }
            if (this.m.d) {
                if (h != 1) {
                    this.m.aa();
                    this.m.ab(h, h);
                }
                if (a) {
                    if (!this.m.e) {
                        this.m.l(d, e, f, g);
                    }
                }
                if (a) {
                    if (this.f.dc.vx != null && !this.b9.isEmpty) {
                        this.cb.o = this.b9.top;
                        this.cb.n = this.b9.left;
                        this.cb.width = this.b9.width;
                        this.cb.height = this.b9.height;
                        this.cb._fill = this.f.dc.vx;
                        this.m.w(this.cb);
                    }
                }
                if (h != 1) {
                    this.m.z();
                }
            }
            if (this.n != null && this.u) {
                if (this.n.d) {
                    if (this.f.dc != null && h != 1) {
                        this.n.aa();
                        this.n.ab(h, h);
                    }
                    if (!b.isEmpty && a) {
                        if (!this.n.e) {
                            this.n.l(b.left, b.top, b.width, b.height);
                        }
                    }
                    this.bo(true);
                    this.bj(this.n, true);
                    this.bi(this.n, true);
                    if (h != 1) {
                        this.n.z();
                    }
                }
            }
            if (this.m.d && this.u) {
                if (h != 1) {
                    this.m.aa();
                    this.m.ab(h, h);
                }
                this.m.aa();
                if (!this.t && Rect.l_op_Inequality(this.f.wn, null) && !this.f.wn.isEmpty && (this.f.wn.width != 1 || this.f.wn.height != 1)) {
                    this.m.af(new Rect(0, this.b9.left + this.b9.width * this.f.wn.left, this.b9.top + this.b9.height * this.f.wn.top, this.b9.width * this.f.wn.width, this.b9.height * this.f.wn.height));
                }
                else {
                    this.m.af(this.b9);
                }
                this.bo(false);
                this.m.ae(this.f._opacity);
                if (this.f.e6 && this.f.e7 && !this.t) {
                    if (this.f.hd) {
                        this.m.p(this.f.v6.colorString, 0, this.f.jo, this.f.jp);
                        let i = this.f.dc.c9.j.x;
                        let j = this.f.dc.c9.j.ak;
                        if (h != 1) {
                            i.aa();
                            i.ab(h, h);
                        }
                        if (!i.e) {
                            i.l(c.left, c.top, c.width, c.height);
                        }
                        this.bj(i, false);
                        this.bi(i, false);
                        this.m.n(j.getNativeElement(), 1, 0, 0, c.width, c.height);
                        if (h != 1) {
                            i.z();
                        }
                    }
                    else {
                        this.m.p(this.f.v6.colorString, this.f.jn, this.f.jo, this.f.jp);
                        this.bj(this.m, false);
                        this.bi(this.m, false);
                    }
                    this.m.m();
                }
                else {
                    this.bj(this.m, false);
                    this.bi(this.m, false);
                }
                this.m.ae(1);
                this.m.z();
                if (h != 1) {
                    this.m.z();
                }
            }
        }
        br(a, b, c) {
            if (c) {
                this.bt(a, b);
            }
            else {
                this.bs(a, b);
            }
        }
        bu(a, b, c) {
            if (c) {
                this.bw(a, b);
            }
            else {
                this.bv(a, b);
            }
        }
        ai(a, b) {
            if (b) {
                return this.aj(a);
            }
            else {
                return this.ak(a);
            }
        }
        aj(a) {
            return null;
        }
        ak(a) {
            return null;
        }
        bs(a, b) {
        }
        bv(a, b) {
        }
        bt(a, b) {
        }
        bw(a, b) {
        }
        bo(a) {
            if (a) {
                this.bq();
            }
            else {
                this.bp();
            }
        }
        bp() {
        }
        bq() {
        }
        b4(a) {
            return this.b3();
        }
        b3() {
            let a = this.f.kh;
            let num_ = (a + 1) * 1000;
            let b = ((num_ & 0x3F) << 2);
            num_ = (num_ >> 6);
            let c = ((num_ & 0x3F) << 2);
            num_ = (num_ >> 6);
            let d = ((num_ & 0x3F) << 2);
            this.b0._fill = "rgb(" + b + "," + c + "," + d + ")";
            return this.b0;
        }
        bj(a, b) {
            this.b6 = this.b9;
        }
        bi(a, b) {
        }
        a9() {
        }
        ay() {
        }
        az() {
        }
        h() {
            return this.g;
        }
        bm(a) {
        }
        w() {
            return true;
        }
        a8() {
        }
        a7() {
        }
        bk() {
            this.f.ve = null;
        }
        aq() {
            this.f.ve = this.f.vk;
        }
        bl() {
            this.f.vi = null;
        }
        ar() {
            this.f.vi = this.f.v0;
        }
        c(a) {
            if (typeCast(DataContext.$, a) !== null) {
                return a;
            }
            return null;
        }
        a3(a, b) {
            this.m = a;
            this.n = b;
        }
        get b9() {
            return this.b7;
        }
        set b9(a) {
            this.b7 = a;
        }
        get_ca() {
            if (this.s) {
                return this.b8;
            }
            else if (this.t) {
                return XamDataChart.wu;
            }
            else {
                return this.f.dc != null ? this.f.dc.wh : Rect.empty;
            }
        }
        get ca() {
            return this.get_ca();
        }
        get t() {
            return this.o;
        }
        set t(a) {
            this.o = a;
        }
        at(a) {
            if (a != null) {
                this.a.u(this);
                if (this.f.cv != null) {
                    this.f.cv.a.u(this.f.cv);
                }
            }
        }
        ao(a) {
            if (a != null) {
                if (this.f.hb) {
                    this.m = this.f.dc.c9.z;
                    a.c9.a.o(this);
                    this.a = a.c9.a;
                }
                else {
                    this.m = this.f.dc.c9.y;
                    a.al.o(this);
                    this.a = a.al;
                }
                if (this.f.cv != null) {
                    a.am.o(this.f.cv);
                    this.f.cv.a = a.am;
                    this.f.cv.a2();
                }
                if (this.f.fj) {
                    for (let b of fromEnum(this.f.ba.a$j.keys)) {
                        a.ak.o(this.f.ba.a$j.item(b));
                        this.f.ba.a$j.item(b).a = a.ak;
                        this.f.ba.a$j.item(b).a2();
                    }
                }
                this.a2();
            }
        }
        postRender() {
            this.bc();
        }
        bc() {
        }
        b(a) {
            return null;
        }
        be(a) {
            this.f.cv.m = a.a;
        }
        ax(a) {
        }
        bx() {
            if (this.q) {
                return;
            }
            if (this.f.dc != null) {
                let a = (this.f.legend != null) ? this.f.legend : this.f.dc.legend;
                if (a != null && this.f.sy != null && a.containsChild(this.f.sy)) {
                    a.removeChild(this.f.sy);
                    let b = this.f.k0();
                    b.content.actualItemBrush = this.f.ve;
                    b.content.outline = this.f.vi;
                    b.content.thickness = this.f.ig;
                    a.addChildInOrder(this.f.sy, this.f);
                }
            }
        }
        a5() {
            this.f.oy(this.f.a5, this.f.a5);
        }
        ba() {
            this.bx();
        }
        getViewInfo(a, b) {
            a = this.b9;
            b = this.ca;
            return {
                p0: a,
                p1: b
            };
        }
        r() {
            return this.m != null;
        }
        by() {
            this.u = this.f._visibility == 0;
            this.a2();
        }
        bg() {
            this.f.ba.a$ap(this.f);
        }
        an() {
            let a = new Color();
            a.colorString = "rgba(95,95,95,0.5)";
            this.f.v6 = a;
            this.f.jn = 5;
            this.f.jo = 5;
            this.f.jp = 5;
        }
        a0() {
        }
        preRender() {
            if (this.f.dc != null && !this.t) {
                this.f.dc.nv();
            }
        }
        isValid() {
            return true;
        }
        bd(a) {
            this.m = a.a;
        }
        bz(type_) {
            let legendTemplates_ = TypeRegistrar.get("LegendTemplates");
            let a = (legendTemplates_.resolveLegendItemTemplate(type_));
            return a;
        }
        get aa() {
            return this.y;
        }
        e() {
            let a = this.f.bd();
            if (a != null) {
                a.g$d = true;
                this.y.add(a);
                return a;
            }
            return null;
        }
        bf(a) {
            if (a != null) {
                this.y.remove(a);
            }
        }
        bn(a, b, c) {
            if (this.p) {
                this.z.add(a);
            }
            a.n = b;
            a.o = c;
        }
        av(a, b) {
            a.dataContext = b;
        }
        aw(a, b) {
            a.ag = true;
            let c = this.m.ah(a, this.ab(b), true);
        }
        cc(a, b) {
            this.m.ad(b);
            let c = new TextBlock();
            c.al = a;
            let d = this.m.ah(c, this.ab(b), true);
            return new Size(1, d.c, d.b);
        }
        ab(a) {
            if (this.x.containsKey(a)) {
                let b = this.x.item(a);
                if (b.d.j == a.j) {
                    return b.c;
                }
            }
            let c = 20;
            let d = new Tuple$2(Number_$type, FontInfo.$, c, a);
            this.x.item(a, d);
            return c;
        }
    }
    SeriesView.$t = /*@__PURE__*/ markType(SeriesView, 'SeriesView', Base.$, [ISchedulableRender_$type, IProvidesViewport_$type]);
    return SeriesView;
})();
/**
 * @hidden
 */
export let MarkerSeriesView = /*@__PURE__*/ (() => {
    class MarkerSeriesView extends SeriesView {
        constructor(a) {
            super(a);
            this.ch = null;
            this.cm = 1;
            this.co = Defaults.series_MarkerThickness;
            this.cn = 3;
            this.cl = null;
            this.ck = false;
            this.cd = new Marker();
            this.c6 = null;
            this.cd = new Marker();
            this.cd.content = new DataContext();
            this.ch = a;
        }
        a4() {
            super.a4();
            this.cl = new List$1(Marker.$, 0);
            this.c6 = ((() => {
                let $ret = new DataTemplate();
                $ret.render = MarkerTemplates.c;
                $ret.measure = MarkerTemplates.b;
                return $ret;
            })());
        }
        cy() {
            for (let a of fromEnum(this.cl)) {
                a.ah = this.ch.x6;
            }
            this.a2();
        }
        c8() {
            if (this.m == null) {
                return new Size(1, 0, 0);
            }
            let a = new DataTemplatePassInfo();
            a.isHitTestRender = false;
            a.context = this.m.h();
            a.viewportTop = this.b9.top;
            a.viewportLeft = this.b9.left;
            a.viewportWidth = this.b9.width;
            a.viewportHeight = this.b9.height;
            a.passID = "TestMeasure";
            let b = new DataTemplateRenderInfo();
            b.isHitTestRender = false;
            b.passInfo = a;
            let c = new DataTemplateMeasureInfo();
            c.passInfo = a;
            let d = this.m.h();
            c.context = d;
            b.context = d;
            let e = 0;
            let f = 0;
            if (this.ch.x6 != null && this.ch.x6.passStarting != null) {
                this.ch.x6.passStarting(a);
            }
            let g = this.ch.x6;
            if (this.cl.count > 0) {
                let h = this.cl._inner[0];
                c.data = h.content;
                c.width = h.width;
                c.height = h.height;
                c.renderOffsetX = 0;
                c.renderOffsetY = 0;
                c.renderContext = this.m;
                g = h.ah;
            }
            let i = 0;
            let j = 0;
            if (g != null && g.measure != null) {
                g.measure(c);
                i = c.width;
                j = c.height;
            }
            if (this.ch.x6 != null && this.ch.x6.passCompleted != null) {
                this.ch.x6.passCompleted(a);
            }
            return new Size(1, i, j);
        }
        c5(a) {
        }
        cg() {
            let a = new Marker();
            a.content = ((() => {
                let $ret = new DataContext();
                $ret.series = this.f;
                return $ret;
            })());
            a.ah = this.ch.x6;
            this.cl.add(a);
            return a;
        }
        cx(a) {
            for (let b = this.cl.count - 1; b >= 0; b--) {
                let c = this.cl._inner[b];
                a(c);
            }
        }
        c1(a) {
            a._visibility = 0;
        }
        c3(a) {
            a._visibility = 1;
        }
        c2(a) {
            this.cl.remove(a);
        }
        ci() {
            return this.ch.x7 != null;
        }
        cv() {
            this.ch.x5 = null;
        }
        cp() {
            this.ch.x5 = this.ch.x7;
        }
        c7(a) {
            let b = a.n;
            let c = a.o;
            let d = a.m;
            let e = a.l;
            return new Rect(0, b - d / 2, c - d / 2, d, e);
        }
        cs(a) {
            if (this.ch.dc == null) {
                return;
            }
            switch (a) {
                case SeriesViewer.$$p[2]:
                    this.ch.x5 = this.ch.dc.sa;
                    break;
                case SeriesViewer.$$p[48]:
                    this.ch.x5 = this.ch.dc.sj;
                    break;
                case SeriesViewer.$$p[33]:
                    this.ch.x5 = this.ch.dc.sg;
                    break;
                case SeriesViewer.$$p[42]:
                    this.ch.x5 = this.ch.dc.sh;
                    break;
                case SeriesViewer.$$p[5]:
                    this.ch.x5 = this.ch.dc.sb;
                    break;
                case SeriesViewer.$$p[25]:
                    this.ch.x5 = this.ch.dc.se;
                    break;
                case SeriesViewer.$$p[10]:
                    this.ch.x5 = this.ch.dc.sc;
                    break;
                case SeriesViewer.$$p[45]:
                    this.ch.x5 = this.ch.dc.si;
                    break;
                case SeriesViewer.$$p[26]:
                    this.ch.x5 = this.ch.dc.sf;
                    break;
                case SeriesViewer.$$p[11]:
                    this.ch.x5 = this.ch.dc.sd;
                    break;
            }
        }
        ct() {
            this.ch.ym = null;
        }
        cq() {
            if (!isNaN_(this.f.id) && this.f.id != 1) {
                let a = BrushUtil.s(this.ch.yo, this.f.id);
                this.ch.ym = a;
            }
            else {
                this.ch.ym = this.ch.yo;
            }
        }
        cu() {
            this.ch.yn = null;
        }
        cr() {
            this.ch.yn = this.ch.yp;
        }
        c4() {
            this.a2();
        }
        bv(a, b) {
            super.bv(a, b);
            if (!this.ck) {
                let c = a;
                let d = c.content;
                if (d != null) {
                    d.actualItemBrush = this.ch.ym;
                    if (d.itemBrush != null) {
                        d.actualItemBrush = d.itemBrush;
                    }
                    d.outline = this.ch.yn;
                    d.thickness = this.ch.xo;
                }
            }
        }
        bw(a, b) {
            super.bw(a, b);
            let c = a;
            this.cd._visibility = c._visibility;
            this.cd.ah = c.ah;
            this.cd.width = c.width;
            this.cd.height = c.height;
            this.cd.m = c.m;
            this.cd.l = c.l;
            this.cd.n = c.n;
            this.cd.o = c.o;
            let d = this.b4(b);
            let e = this.cd.content;
            let f = c.content;
            e.item = f.item;
            e.series = f.series;
            e.thickness = f.thickness;
            if (e != null) {
                e.actualItemBrush = d;
                e.outline = d;
                e.thickness = this.cm + this.cn;
            }
        }
        b(a) {
            if (a >= 0 && a < this.cl.count) {
                return this.cl._inner[a].content;
            }
            return super.b(a);
        }
        bi(a, b) {
            super.bi(a, b);
            if (a.d) {
                let c = new DataTemplatePassInfo();
                c.isHitTestRender = b;
                c.context = a.h();
                c.viewportTop = this.b9.top;
                c.viewportLeft = this.b9.left;
                c.viewportWidth = this.b9.width;
                c.viewportHeight = this.b9.height;
                c.passID = "Markers";
                let d = new DataTemplateRenderInfo();
                d.isHitTestRender = b;
                d.passInfo = c;
                let e = new DataTemplateMeasureInfo();
                e.passInfo = c;
                let f = false;
                let g = a.h();
                e.context = g;
                d.context = g;
                let h = 0;
                let i = 0;
                if (this.ch.x6 != null && this.ch.x6.passStarting != null) {
                    this.ch.x6.passStarting(c);
                }
                for (let j = 0; j < this.cl.count; j++) {
                    let k = this.cl._inner[j];
                    if (k._visibility == 1) {
                        continue;
                    }
                    this.bu(k, j, b);
                    if (b) {
                        k = this.cd;
                    }
                    if (!f) {
                        e.data = k.content;
                        e.width = k.width;
                        e.height = k.height;
                        e.renderOffsetX = 0;
                        e.renderOffsetY = 0;
                        e.renderContext = a;
                        let l = k.ah;
                        if (l.measure != null) {
                            e.data = k.content;
                            l.measure(e);
                            f = e.isConstant;
                            if (f) {
                                h = e.width;
                                i = e.height;
                            }
                        }
                        d.availableWidth = e.width;
                        d.availableHeight = e.height;
                        d.renderOffsetX = e.renderOffsetX;
                        d.renderOffsetY = e.renderOffsetY;
                        d.renderContext = a;
                    }
                    else {
                        d.availableWidth = h;
                        d.availableHeight = i;
                    }
                    if (!isNaN_(k.width) && !isInfinity(k.width)) {
                        d.availableWidth = k.width;
                    }
                    if (!isNaN_(k.height) && !isInfinity(k.height)) {
                        d.availableHeight = k.height;
                    }
                    a.q(d, k);
                    k.m = d.availableWidth;
                    k.l = d.availableHeight;
                    k.ai = d.renderOffsetX;
                    k.aj = d.renderOffsetY;
                }
                if (this.ch.x6 != null && this.ch.x6.passCompleted != null) {
                    this.ch.x6.passCompleted(c);
                }
            }
        }
        cz(a) {
            a.create = runOn(this, this.cg);
            a.destroy = runOn(this, this.c2);
            a.activate = runOn(this, this.c1);
            a.disactivate = runOn(this, this.c3);
        }
        c0(a) {
            a.create = runOn(this, this.cg);
            a.destroy = runOn(this, this.c2);
            a.activate = runOn(this, this.c1);
            a.disactivate = runOn(this, this.c3);
        }
        ce(a) {
            let b = this.cf(a, 0);
            if (b == null) {
                b = this.cf(a, 3);
            }
            return b;
        }
        cf(a, b) {
            let c;
            let d;
            let e;
            let f;
            for (let g = this.cl.count - 1; g >= 0; g--) {
                let h = this.cl._inner[g];
                if (h._visibility == 1 || h._opacity == 0) {
                    continue;
                }
                c = (h.m / 2) + b;
                d = (h.l / 2) + b;
                e = h.ai;
                f = h.aj;
                if (this.ch.xh) {
                    if (this.cj(a.x, a.y, h.n + e, h.o + f, c)) {
                        return h;
                    }
                }
                else {
                    if ((h.n + e) - c <= a.x && (h.n + e) + c >= a.x && (h.o + f) - d <= a.y && (h.o + f) + d >= a.y) {
                        return h;
                    }
                }
            }
            return null;
        }
        cj(a, b, c, d, e) {
            let f = e * e;
            let g = (a - c) * (a - c) + (b - d) * (b - d);
            return g < f;
        }
    }
    MarkerSeriesView.$t = /*@__PURE__*/ markType(MarkerSeriesView, 'MarkerSeriesView', SeriesView.$);
    return MarkerSeriesView;
})();
/**
 * @hidden
 */
export let ChartAxisRangeChangedEventArgs = /*@__PURE__*/ (() => {
    class ChartAxisRangeChangedEventArgs extends EventArgs {
        constructor(a, b, c, d, e, f) {
            super();
            this._chart = null;
            this._axis = null;
            this._oldMinimumValue = 0;
            this._minimumValue = 0;
            this._oldMaximumValue = 0;
            this._maximumValue = 0;
            this.chart = a;
            this.axis = b;
            this.oldMinimumValue = c;
            this.minimumValue = d;
            this.oldMaximumValue = e;
            this.maximumValue = f;
        }
        get chart() {
            return this._chart;
        }
        set chart(a) {
            this._chart = a;
        }
        get axis() {
            return this._axis;
        }
        set axis(a) {
            this._axis = a;
        }
        get oldMinimumValue() {
            return this._oldMinimumValue;
        }
        set oldMinimumValue(a) {
            this._oldMinimumValue = a;
        }
        get minimumValue() {
            return this._minimumValue;
        }
        set minimumValue(a) {
            this._minimumValue = a;
        }
        get oldMaximumValue() {
            return this._oldMaximumValue;
        }
        set oldMaximumValue(a) {
            this._oldMaximumValue = a;
        }
        get maximumValue() {
            return this._maximumValue;
        }
        set maximumValue(a) {
            this._maximumValue = a;
        }
    }
    ChartAxisRangeChangedEventArgs.$t = /*@__PURE__*/ markType(ChartAxisRangeChangedEventArgs, 'ChartAxisRangeChangedEventArgs', EventArgs.$);
    return ChartAxisRangeChangedEventArgs;
})();
(function (v) { callStaticConstructors(); })(true);