echarts.simple.js.map 2.6 MB
Newer Older
1
100pah 已提交
1
{"version":3,"sources":["unknown"],"names":["global","factory","exports","module","define","amd","self","echarts","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__spreadArrays","s","i","il","arguments","length","r","k","a","j","jl","Browser","firefox","ie","edge","weChat","Env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","env","wx","getSystemInfoSync","document","navigator","detect","userAgent","ua","match","test","version","createElement","getContext","SVGRect","window","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","console","error","apply","clone","source","result","typeStr","call","isPrimitive","len","Ctor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","extend","assign","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","obj","bindPolyfill","func","concat","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","createObject","proto","properties","StyleCtor","hasOwn","own","noop","x","y","copy","out","v","clone$1","add","v1","v2","scaleAndAdd","sub","Math","sqrt","lenSquare","scale","normalize","distance","dist","distanceSquare","distSquare","lerp","t","applyTransform","m","min","max","Param","e","topTarget","Draggable","handler","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","parent","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","event","dx","dy","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Eventful","eventProcessors","_$eventProcessor","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","eventName","off","eventType","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","colLocalIdx","colTag","buildTransformer","src","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","transformCoordWithViewport","el","inX","inY","inverse","getBoundingClientRect","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","style","idxLR","idxTB","cssText","join","appendChild","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","left","top","offsetLeft","offsetTop","nodeName","toUpperCase","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","wheelDelta","getWheelDeltaMayPolyfill","zrDelta","detail","touch","targetTouches","changedTouches","button","which","undefined","rawWheelDelta","deltaX","deltaY","delta","abs","sign","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","GestureMgr","_track","recognize","root","_doTrack","_recognize","clear","touches","trackItem","points","pos","recognizers","gestureInfo","dist$1","pointPair","center","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","zrByTouch","stopEvent","EmptyProxy","_super","_this","dispose","setCursor","HoveredResult","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","setHandlerProxy","_draggingMgr","mousemove","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hovered","hoveredTarget","cursor","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","setCursorStyle","cursorStyle","silent","eventKey","eventPacket","__hostTarget","eachOtherLayer","layer","exclude","list","getDisplayList","hoverCheckResult","ignore","isHover","processGesture","stage","_gestureMgr","gestureMgr","dom","res","_downEl","_downPoint","_upEl","displayable","rectHover","clipPath","getClipPath","contain","hostEl","handlerInstance","getWidth","getHeight","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","n","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","start","pivot","right","mid","gallopLeft","hint","lastOffset","maxOffset","offset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","sort","remaining","ts","minRun","force","invalidZErrorLogged","logInvalidZError","warn","shapeCompareFunc","zlevel","z","z2","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","traverse","update","includeIgnore","displayList","updateDisplayList","roots","_updateAndAddDisplayable","clipPaths","beforeUpdate","__dirty","afterUpdate","userSetClipPath","currentClipPath","parentClipPath","updateTransform","childrenRef","children","child","markRedraw","disp","__clipPaths","isNaN","textGuide","getTextGuideLine","textEl","getTextContent","addRoot","delRoot","idx","delAllRoots","getRoots","requestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","requestAnimationFrame$1","easing","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","cos","PI","sinusoidalOut","sin","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","step","globalTime","deltaTime","percent","easing$1","easingFunc","schedule","_restart","remainder","pause","resume","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","LRU","maxSize","_list","_maxSize","_map","put","removed","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssFloat","f","parseCssInt","charAt","parseFloat","parseInt","parseCssFloat","cssHueToRgb","m1","m2","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","toLowerCase","iv","substr","op","ep","fname","params","split","alpha","pop","hsla2rgba","hsla","rgba","lift","color","level","colorArr","stringify","arrColor","lum","backgroundLum","arraySlice","interpolateNumber","p0","p1","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillArray","val0","val1","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","is1DArraySame","catmullRomInterpolate","p2","p3","t2","t3","v0","catmullRomInterpolate1DArray","catmullRomInterpolate2DArray","cloneValue","ret","rgba2String","floor","guessArrayDim","tmpRgba","Track","propName","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","needsAnimate","getAdditiveTrack","_additiveTrack","addKeyframe","time","arrayDim","lastFrame","colorArray","isValueColor","kf","prepare","additiveTrack","kfs","kfsLen","lastKf","startValue","additiveValue","isAdditive","valueKey","kfsNum","frameIdx","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_doneList","_onframeList","_clip","_target","_loop","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","propNames","track","initialValue","_getAdditiveTrack","lastFinalKf","during","callback","isPaused","_doneCallback","doneList","trackName","additiveAnimators","getTrack","forceAnimate","clip","stillHasAdditiveAnimator","animation","addClip","forwardToLast","removeClip","done","getClip","stopTracks","tracksKeys","allAborted","saveFinalToTarget","trackKeys","__changeFinalValue","finalProps","Animation","_running","_time","_pauseStart","_clipsHead","_clipsTail","addAnimator","animator","removeAnimator","Date","getTime","nextClip","finished","_startLoop","animate","options","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","scope","touching","touchTimer","clearTimeout","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","isLocal","domBelongToZr","parentNode","stopImmediatePropagation","currentTarget","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","__pointerCapturing","element","toElement","relatedTarget","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","isPointerCapturing","globalHandlerScope","create$1","identity","copy$1","mul","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","ct","scale$1","vx","vy","invert","mIdentity","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","Transformable","setPosition","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","parentHasTransform","transform","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","setLocalTransform","atan2","decomposeTransform","ox","oy","transformCoordToLocal","transformCoordToGlobal","getLineScale","initDefaultProps","Point","other","equal","scalar","dot","negate","toArray","fromArray","input","onet","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","union","calculateTransform","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","Infinity","dMax","d0","d1","d2","d3","plain","tx","ty","maxX","maxY","textWidthCache","DEFAULT_FONT","_ctx","_cachedFont","defaultMeasureText","text","font","measureText","methods$1","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","calculateTextPosition","textPosition","position","halfHeight","textVerticalAlign","align","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","id","animators","currentStates","states","_init","attr","updateInnerText","forceUpdate","_textContent","textConfig","local","attachedTransform","textStyleChanged","innerOrigin","layoutRect","textOrigin","origin","relOriginX","relOriginY","textOffset","isInside","inside","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","fill","stroke","setDefaultTextStyle","dirtyStyle","isDarkMode","backgroundColor","getBackgroundColor","attrKV","setTextConfig","setTextContent","setClipPath","extra","hide","show","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","fromStateTransition","__fromStateTransition","targetName","_savePrimaryToNormal","primaryKeys","hasState","getState","ensureState","clearStates","useState","stateName","keepCurrentStates","toNormalState","hasStates","animationCfg","stateTransition","state","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","duration","_textGuide","_updateAnimationTargets","REDARAW_BIT","useStates","stateObjects","notChange","stateObj","mergedState","_mergeStates","removeState","replaceState","oldState","newState","forceAdd","newStateExists","toggleState","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","zr","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","previousTextContent","removeTextContent","cfg","setTextGuideLine","guideLine","removeTextGuideLine","refreshHover","refresh","dirty","inHover","textContent","updateDuringAnimation","wakeUp","stopAnimation","leftAnimators","animateTo","animationProps","animateFrom","elProto","isGroup","logs","logDeprecatedError","xKey","yKey","createLegacyProperty","privateKey","defineProperty","enhanceArray","animatable","reverse","animateToShallow","count","copyArrShallow","is2DArray","copyValue","sourceArr","len0","len1","topKey","animatableKeys","changedKeys","targetKeys","additive","setToFinal","animateAll","innerKey","keyLen","existsAnimators","existsAnimatorsOnSameTarget","revertedSource","reversedTarget","sourceClone","STYLE_MAGIC_KEY","random","DEFAULT_COMMON_STYLE","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","opacity","blend","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS$1","Displayable","useStyle","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","rectContain","coord","animateStyle","targetKey","setStyle","STYLE_CHANGED_BIT","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","_getAnimationStyleProps","mergedStyle","dispProto","invisible","culling","incremental","mathPow","mathSqrt","EPSILON$1","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero$1","cubicAt","cubicDerivativeAt","cubicRootAt","c","A","B","C","t1","disc","K","discSqrt","Y1","Y2","T","theta","acos","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","interval","_t","cubicLength","iteration","px","py","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","mathMin$1","mathMax$1","mathSin","mathCos","PI2","end","extremity","fromPoints","bottom","fromLine","xDim","yDim","fromCubic","cubicExtrema$1","cubicAt$1","fromQuadratic","quadraticExtremum$1","quadraticAt$1","fromArc","rx","ry","startAngle","endAngle","anticlockwise","min$1","max$1","vec2Min","vec2Max","diff","angle","CMD","M","L","Q","Z","R","tmpOutX","tmpOutY","min2","max2","mathMin$2","mathMax$2","mathCos$1","mathSin$1","mathSqrt$1","mathAbs","PI2$1","hasTypedArray","Float32Array","PathProxy","notSaveData","_xi","_yi","_x0","_y0","_saveData","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","arcTo","radius","closePath","toStatic","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","newData","dashSum","nDash","dash","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","drawPart","accumLength","displayedLength","psi","isEllipse","breakBuild","d_1","containStroke","lineWidth","_l","_a","_b","_s","containStroke$1","containStroke$2","PI2$2","normalizeRadian","PI2$3","containStroke$3","windingLine","dir","x_","CMD$1","PI2$4","EPSILON$2","isAroundEqual","swapExtrema","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","isStroke","pathData","containStroke$4","DEFAULT_PATH_STYLE","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","miterLimit","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","Path","shape","getDefaultShape","defaultStyle","getDefaultStyle","hasFill","pathFill","fillLum","isDarkLabel","buildPath","shapeCfg","inBundle","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectWithStroke","_rectWithStroke","lineScale","strokeContainThreshold","localPos","dirtyShape","animateShape","setShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","isZeroArea","defaultProps","Sub","init","pathProto","subPixelOptimize","autoBatch","CMD$2","mathSqrt$2","mathAtan2","transformPath","nPoint","p_1","mathSqrt$3","mathSin$2","mathCos$2","PI$1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","SVGPath","isPathProxy","createPathOptions","pathProxy","innerOpts","createFromString","Group","_children","childAt","childOfName","childCount","_doAdd","addBefore","nextSibling","replaceAt","index","old","removeAll","eachChild","stopped","includeChildren","tmpRect","tmpMat","childRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","ZRImage","CircleShape","Circle","r1","r2","r3","r4","total","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","EllipseShape","Ellipse","subPixelOptimizeOutputShape$1","LineShape","Line","pointAt","interpolate","smoothSpline","isLoop","distance$1","segs","w2","w3","smoothBezier","smooth","constraint","cps","prevPoint","nextPoint","point","cp0","cp1","shift","buildPath$1","controlPoints","smoothConstraint","cp2","PolygonShape","Polygon","PolylineShape","Polyline","Gradient","addColorStop","LinearGradient","globalCoord","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","parseXML","svg","parser","DOMParser","parseFromString","svgNode","firstChild","CompoundPath","_updatePathDirty","paths","dirtyPath","IncrementalDisplayble","notClear","_displayables","_temporaryDisplayables","_cursor","getCursor","clearDisplaybles","clearTemporalDisplayables","addDisplayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","cbPayload","__zrImageSrc","pendingWrap","isImageReady","pending","Image","onload","onerror","imageOnLoad","__cachedImgObj","STYLE_REG","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","charCodeAt","parsePlainText","overflow","padding","truncate","calculatedLineHeight","lineHeight","truncateLineOverflow","lineOverflow","lines","wrapText","contentHeight","lineCount","outerHeight","outerWidth","truncateMinChar","maxWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","topWidth","topHeight","wrapInfo","accumWidth","breakAll","exec","matchedIndex","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","outer","line","token","tokenStyle","styleName","rich","textPadding","paddingH","tokenHeight","styleTokenWidth","tokenWidthNotSpecified","percentWidth","textBackgroundColor","bgImg","remainTruncWidth","block","isEmptyStr","newLine","strLines","linesWidths","tokenPadding","tokenPaddingH","outerWidth_1","parsePercent$1","isLineHolder","tokensLen","isLatin","ch","code","breakCharMap","isWordBreakChar","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","DEFAULT_RICH_TEXT_COLOR","DEFAULT_STROKE_LINE_WIDTH","DEFAULT_TEXT_ANIMATION_PROPS","fontSize","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderColor","borderWidth","borderRadius","ZRText","_defaultStyle","_updateSubTexts","_childCursor","normalizeTextStyle","_updateRichTexts","_updatePlainTexts","defaultTextStyle","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","textFont","getStyleText","needDrawBg","needDrawBackground","bgColorDrawn","baseX","baseY","textX","textY","boxX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","hasShadow","fixedBoundingRect","subElStyle","xLeft","lineTop","xRight","tokenCount","remainedWidth","leftIndex","lineXLeft","lineXRight","rightIndex","_placeToken","parentBgColorDrawn","textWidth","textHeight","textBorderWidth","textBorderColor","isPlainBg","textBorderRadius","rectEl","imgEl","rectShape","rectStyle","imgStyle","borderDash","borderDashOffset","shadowStyle","makeFont","fontFamily","fontWeight","fontStyle","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","middle","normalizeStyle","ArcShape","clockwise","Arc","unitX","unitY","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","tangentAt","DropletShape","Droplet","HeartShape","Heart","PI$2","IsogonShape","Isogon","dStep","deg","RingShape","r0","Ring","sin$1","cos$1","radian","RoseShape","Rose","SectorShape","Sector","PI$3","cos$2","sin$2","StarShape","Star","xStart","yStart","ri","cos$3","sin$3","TrochoidShape","location","Trochoid","num","RadialGradient","extent","extent2","minTv$1","maxTv$1","OrientedBoundingRect","_corners","_axes","_origin","fromBoundingRect","corners","axes","overlapped","noMtv","_intersectCheckOneSide","axis","_getProjMinMaxOnAxis","dist0","dist1","dim","proj","proj_1","useVML","painterCtors","delInstance","totalLum","ZRender","_stillFrameAccum","_needsRefresh","_needsRefreshHover","_darkMode","rendererType","renderer","vml","handerProxy","getViewportRoot","_flush","configLayer","zLevel","config","setBackgroundColor","_backgroundColor","setDarkMode","darkMode","refreshImmediately","fromInside","flush","triggerRendered","refreshHoverImmediately","addHover","removeHover","clearHover","clearAnimation","pathToImage","eventHandler","registerPainter","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","parsePercent$2","all","NaN","round$1","precision","returnStr","toFixed","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","dataExtent","pixelExtent","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","NEGATIVE_INFINITY","maxId","remRadian","pi2","isRadianAroundZero","TIME_REG","parseDate","hour","UTC","quantity","quantityExponent","exp","nice","exponent","exp10","nf","numericToNumber","valFloat","isNumeric","DUMMY_COMPONENT_NAME_PREFIX","INTERNAL_COMPONENT_ID_PREFIX","normalizeToArray","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","existings","newCmptOptions","mode","isNormalMergeMode","isReplaceMergeMode","isReplaceAllMode","existingIdIdxMap","cmptOption","validateIdOrName","prepareResult","mappingById","mappingByName","mappingByIndex","mappingInReplaceAllMode","makeIdAndName","existing","isComponentIdInternal","newOption","keyInfo","brandNew","optionId","makeComparableKey","existingIdx","resultItem","keyExistAndEqual","nextIdx","mapResult","idMap","item","idNum","obj1","obj2","key1","key2","idOrName","isValidIdOrName","isNameSpecified","componentModel","setComponentTypeToKeyInfo","mappingResult","mainType","componentModelCtor","subType","determineSubType","newCmptOption","existComponent","queryDataIndex","payload","dataIndexInside","dataIndex","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","hostObj","parseFinder","ecModel","finderInput","finder","defaultMainType","queryOptionMap","parsedKey","queryType","includeMainTypes","queryOption","queryResult","queryReferringComponents","useDefault","enableAll","enableNone","models","SINGLE_REFERRING","userOption","indexOption","idOption","nameOption","specified","firstCmpt","getComponent","queryComponents","setAttribute","getAttribute","TYPE_DELIMITER","IS_CONTAINER","IS_EXTENDED_CLASS","parseClassType","componentType","main","typeArr","checkClassType","isExtendedClass","clz","enableClassExtend","rootClz","mandatoryMethods","$constructor","method","ExtendedClass","isESClass","ins","superCall","superApply","Function","mountExtend","SubClz","SupperClz","classBase","enableClassCheck","classAttr","isInstance","methodName","enableClassManagement","registerClass","componentFullType","componentTypeInfo","container","makeContainer","getClass","throwWhenNotFound","getClassesByMainType","o","hasClass","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend_1","makeStyleMapper","ignoreParent","model","excludes","includes","getShallow","AREA_STYLE_KEY_MAP","getAreaStyle","AreaStyleMixin","getECData","_highlightNextDigit","_highlightKeyMap","getSavedStates","HOVER_STATE_NORMAL","HOVER_STATE_BLUR","HOVER_STATE_EMPHASIS","SPECIAL_STATES","DISPLAY_STATES","Z2_EMPHASIS_LIFT","Z2_SELECT_LIFT","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","hasFillOrStroke","fillOrStroke","liftedColorCache","liftColor","liftedColor","doChangeHoverState","hoverStateEnum","onHoverStateChange","hoverState","singleEnterEmphasis","singleLeaveEmphasis","singleEnterBlur","singleLeaveBlur","singleEnterSelect","selected","singleLeaveSelect","updateElementState","updater","commonParam","traverseUpdateState","setStatesFlag","getFromStateStyle","toStateName","defaultValue","fromState","createEmphasisDefaultState","targetStates","hasSelect","cloned","store","fromFill","selectFill","normalFill","fromStroke","selectStroke","normalStroke","emphasisStyle","z2EmphasisLift","createSelectDefaultState","z2SelectLift","createBlurDefaultState","hasBlur","currentOpacity","blurStyle","elementStateProxy","setDefaultStateProxy","enterEmphasisWhenMouseOver","shouldSilent","__highByOuter","leaveEmphasisWhenMouseOut","enterEmphasis","highlightDigit","leaveEmphasis","enterBlur","leaveBlur","enterSelect","leaveSelect","__highDownSilentOnTouch","allLeaveBlur","ecIns","getModel","eachComponent","view","getViewOfSeriesModel","getViewOfComponentModel","group","toggleSeriesBlurState","targetSeriesIndex","focus","blurScope","isBlur","leaveBlurOfIndices","dataIndices","itemEl","getItemGraphicEl","targetSeriesModel","getSeriesByIndex","targetCoordSys","coordinateSystem","master","blurredSeries","eachSeries","seriesModel","sameSeries","coordSys","sameCoordSys","getData","dataTypes","blurSeries","toggleSeriesBlurStateFromPayload","isHighDownPayload","isHighlight","seriesIndex","dataType","current","ecData","focus_1","toggleSelectionFromPayload","isSelectChangePayload","updateSeriesElementSelection","allData","getAllData","eachItemGraphicEl","isSelected","getAllSelectedIndices","getSelectedDataIndices","enableHoverEmphasis","setAsHighDownDispatcher","enableHoverFocus","OTHER_STATES","styleGetterMap","itemStyle","lineStyle","areaStyle","setStatesStylesFromModel","itemModel","styleType","getterType","asDispatcher","disable","extendedEl","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","getHighlightDigit","highlightKey","payloadType","savePathStates","selectState","select","ECHARTS_PREFIX","storedLogs","hasConsole","deprecateLog","deprecateReplaceLog","oldOpt","newOpt","consoleLog","makePrintable","hintInfo","msg","arg","JSON","toISOString","err","EMPTY_OBJ","getLabelText","stateModels","overrideValue","labelFetcher","labelDataIndex","labelDimIndex","normalModel","normal","baseText","getFormattedLabel","defaultText","statesText","stateModel","setLabelStyle","targetEl","labelStatesModels","stateSpecified","isSetOnText","needsCreateText","labelStatesTexts","showNormal","normalStyle","createTextStyle","createTextConfig","targetElEmphasisState","getLabelStatesModels","labelName","statesModels","textStyleModel","specifiedTextStyle","isNotNormal","isAttached","textStyle","setTextStyleCommon","labelPosition","labelRotate","labelDistance","labelOffset","defaultOutsidePosition","inheritColor","globalTextStyle","option","richItemNames","getRichItemNames","richResult","name_1","richTextStyle","setTokenTextStyle","margin","richItemNameMap","richKeys","richKey","parentModel","TEXT_PROPS_WITH_GLOBAL","TEXT_PROPS_SELF","TEXT_PROPS_BOX","isBlock","fillColor","strokeColor","baseline","disableBox","getFont","gTextStyleModel","PATH_COLOR","tmpRichText","TextStyleMixin","getTextColor","isEmphasis","getTextRect","LINE_STYLE_KEY_MAP","getLineStyle","LineStyleMixin","getLineDash","lineType","dotSize","dashSize","ITEM_STYLE_KEY_MAP","getItemStyle","ItemStyleMixin","getBorderLineDash","Model","rest","mergeOption","_doGet","parsePath","hasPath","pathFinal","resolveParentPath","isEmpty","restoreData","isAnimationEnabled","pathArr","base","getUID","enableSubTypeDefaulter","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","enableTopologicalTravel","entity","dependencyGetter","topologicalTravel","targetNameList","fullNameList","makeDepndencyGraph","graph","stack","noEntryList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","originalDeps","successor","removeEdgeAndAdd","removeEdge","succComponentType","entryCount","thisItem","createDependencyGraphItem","availableDeps","getAvailableDependencies","dependentName","predecessor","thatItem","dep","inheritDefaultOption","superOption","subOption","langEN","month","monthAbbr","dayOfWeek","dayOfWeekAbbr","legend","selector","toolbox","brush","title","polygon","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","bar","tiled","restore","saveAsImage","series","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","partialData","langZH","LOCALE_ZH","LOCALE_EN","DEFAULT_LOCALE","localeStorage","localeModels","SYSTEM_LANG","langStr","documentElement","language","browserLanguage","registerLocale","locale","localeObj","createLocaleObject","getLocaleModel","getDefaultLocaleModel","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","defaultLeveledFormatter","year","day","minute","second","millisecond","none","fullDayFormatter","fullLeveledFormatter","primaryTimeUnits","timeUnits","pad","getPrimaryTimeUnit","timeUnit","isPrimaryTimeUnit","getDefaultFormatPrecisionOfInterval","format","template","isUTC","date","fullYearGetterName","monthGetterName","q","dateGetterName","H","hoursGetterName","minutesGetterName","secondsGetterName","S","millisecondsGetterName","localeModel","timeModel","leveledFormat","tick","formatter","defaults$1","mergedFormatter","inherit","getUnitFromValue","targetId","levelId","isSecond","isMinute","isHour","isDay","isMonth","isYear","getUnitValue","fullYearSetterName","monthSetterName","dateSetterName","hoursSetterName","minutesSetterName","secondsSetterName","millisecondsSetterName","innerLabel","makePath","layout","centerGraphic","resizePath","makeImage","imageUrl","zrImg","img","boundingRect","aspect","pathRect","animateOrSetProps","animationType","animatableModel","isFrom","isUpdate","isRemove","animationPayload","updatePayload","getUpdatePayload","animationEnabled","animationEasing","animationDelay","getAnimationDelayParams","updateProps","initProps","removeElement","fadeOutDisplayable","removeElementWithFadeOut","doRemove","isElementRemoved","animateOrSetLabel","labelModel","defaultTextGetter","valueAnimationEnabled","precisionOption","precision_1","interpolateValues_1","rawValues_1","getRawValue","isRawValueNumber_1","info","getDimensionInfo","host_1","nextValue","interpolated","startValues","labelText","updateLabel","initLabel","isNotGroup","isPath","groupTransition","g1","g2","getElMap","elMap","anid","getAnimatableProps","elMap1","oldEl","newProp","addCommas","parts","normalizeCssArray$1","replaceReg","replaceMap","encodeHTML","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","formatTpl","tpl","paramsList","encode","seriesLen","isTimeAxis","axisType","axisValue","axisIndex","$vars","alias","getTooltipMarker","inOpt","extraCssText","renderMode","markerId","content","formatTime","utc","each$1","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","nextChild","nextChildRect","nextX","nextY","moveX","newline","moveY","vbox","hbox","getLayoutRect","positionInfo","containerRect","containerHeight","verticalMargin","horizontalMargin","fetchLayoutMode","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","names","hvIdx","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","hasValue","getLayoutParams","copyLayoutParams","inner","ComponentModel","uid","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","ctor","defaultOption","fields","optList","getReferringComponents","indexKey","idKey","getBoxLayoutParams","boxLayoutModel","protoInitialize","componentIndex","getDependencies","deps","dependencies","unshift","platform","globalDefault","gradientColor","blendMode","stateAnimation","animationDuration","animationDurationUpdate","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","useUTC","inner$1","getNearestColorPalette","colors","requestColorNum","paletteNum","ColorPaletteMixin","clearColorPalette","colorIdx","colorNameMap","getColorFromPalette","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","VISUAL_DIMENSIONS","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_UNKNOWN","SERIES_LAYOUT_BY_COLUMN","SERIES_LAYOUT_BY_ROW","Source","sourceFormat","seriesLayoutBy","startIndex","dimensionsDefine","dimensionsDetectCount","encodeDefine","metaRawOption","seriesDataToSource","BE_ORDINAL","Must","Might","Not","innerGlobalModel","detectSourceFormat","resetSourceDefaulter","datasetMap","createSource","sourceData","thisMetaRawOption","dimInfo","determineSourceDimensions","sourceHeader","dimensions","makeEncodeDefine","inheritSourceMetaRawOption","thisNew","cloneSourceShallow","normalizeDimensionsOption","dataArrayRows","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","nameMap","displayName","exist","maxLoop","firstIndex","dimensions_1","makeSeriesEncodeForAxisCoordSys","coordDimensions","datasetModel","querySeriesUpstreamDatasetModel","encodeItemName","encodeSeriesName","baseCategoryDimIndex","categoryWayValueDimStart","coordDimInfoLoose","coordDimIdx","coordDimInfo","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","coordDimName","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","fulfilled","nameDimIndex","thisData","queryDatasetUpstreamDatasetModels","guessOrdinal","dimIndex","dimName","dimType","dimDefItem","sample","detectValue","row","dataObjectRows","dataKeyedColumns","dataOriginal","beStr","internalOptionCreatorMap","concatInternalOptions","newCmptOptionList","internalOptionCreator","internalOptions","reCreateSeriesIndices","assertSeriesInitialized","initBase","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_locale","_optionManager","setOption","optionPreprocessorFuncs","innerOpt","normalizeReplaceMergeInput","_resetOption","resetOption","optionChanged","baseOption","mountOption","_mergeOption","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","_componentsMap","componentsCount","_componentsCount","newCmptTypes","newCmptTypeMap","replaceMergeMainTypeMap","componentOption","mainTypeInReplaceMerge","visitComponent","oldCmptList","mergeMode","optionsByMainType","cmptsByMainType","cmptsCountByMainType","ComponentModelClass","extraOpt","__requireNewView","_seriesIndices","getOption","optInMainType","realLen","metNonInner","getLocale","localePosition","setUpdatePayload","_payload","cmpt","cmpts","queryByIdOrName","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","ctxForAll_1","cbForAll_1","getSeriesByName","oneSeries","getSeriesByType","getSeries","getSeriesCount","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","_seriesIndicesMap","getCurrentSeriesIndices","filterSeries","newSeriesIndices","seriesRawIdx","componentTypes","components","component","isNotTargetSeries","internalField","seriesIndices","mergeTheme","seriesId","notMergeColorLayer","colorLayer","themeItem","keyMap_1","idOrNameItem","replaceMerge","availableMethods","ExtensionAPI","ecInstance","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","api","coordinateSystems","creater","getCoordinateSystems","register","creator","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_currentMediaIndices","_api","rawOption","dataset","optionBackup","_optionBackup","newParsedOption","parseRawOption","_newBaseOption","timelineOptions","mediaList","mediaDefault","isRecreate","_mediaDefault","timelineModel","getCurrentIndex","ecWidth","ecHeight","indices","applyMediaQuery","indicesEquals","isNew","timelineOpt","timeline","media","singleMedia","preProcess","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indices1","indices2","each$2","isObject$1","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","textPropName","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","categories","mpData","mlData","breadcrumb","levels","leaves","toArr","toObj","compatStyle","isTheme","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","toolboxOpt","feature","featureOpt","tooltip","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","edgeDistance","compatSunburstState","downplay","blur","compatGraphFocus","focusNodeAdjacency","traverseTree","backwardCompat","seriesType","clipOverflow","clockWise","label","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","mapType","mapLocation","hoverAnimation","dataRange","visualMap","componentName","dataStack","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","byValue","stackedDataRawIndex","getRawIndex","stackedOver","rawIndexOf","getByRawIndex","hostModel","_c","providerMethods","mountMethods","DefaultDataProvider","sourceParam","dimSize","_source","_data","_offset","_dimSize","getSource","getItem","appendData","clean","pure","persistent","provider","getMethodMapKey","getItemForTypedArray","countForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","appendDataSimply","newCol","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","col","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getProvider","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","rawValue","rawDataIndex","getName","itemOpt","getItemVisual","isSeries","userOutput","componentSubType","dimensionNames","status","extendParams","getItemModel","dimensionIndex","formatTooltip","multipleSeries","order","createTask","Task","_reset","_plan","plan","_count","_onDirty","onDirty","_dirty","perform","performArgs","upTask","_upstream","skip","outputData","__pipeline","currentTask","planResult","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","forceFirstProgress","_doReset","_outputDueEnd","_dueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","iterator","_callingProgress","downstream","_downstream","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","it","sStep","sCount","ceil","modNext","sequentialNext","parseDataValue","ordinalMeta","parseAndCollect","valueParserMap","ExternalSource","getDimensionInfoAll","getRawHeaderItem","retrieveItemValue","rawItem","convertDataValue","rawVal","createExternalSource","sourceHeaderCount","extSource","dimsByName","dimDef","dimDefExt","rawValueGetter","externalTransformMap","registerExternalTransform","externalTransform","typeParsed","applyDataTransform","rawTransOption","sourceList","infoForPrint","pipedTransOption","transOption","isFinal","applySingleDataTransform","upSourceList","transType","resultList","print","printStrArr","datasetIndex","resultMetaRawOption","SourceManager","sourceHost","_sourceList","_upstreamSignList","_versionSignBase","_sourceHost","_setLocalSource","upstreamSignList","_getVersionSign","prepareSource","_isDirty","_createSource","upSourceMgrList","_getUpstreamSourceManagers","hasUpstream","resultSourceList","upSource","upSourceMgr","_createSourceMetaRawOption","_applyTransform","upMgrList","transformOption","fromTransformResult","upSourceList_1","upMgr","errMsg","doThrow","upSrcMgr","sourceIndex","getSourceManager","disableTransformOptionMerge","inner$2","getSelectionKey","getId","SeriesModel","_selectedDataIndicesMap","dataTask","dataTaskCount","dataTaskReset","sourceManager","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","_initSelectedMapFromData","themeSubType","fillDataTextStyle","newSeriesOption","getRawData","task","getCurrentTask","getLinkedData","mainData","getLinkedDataAll","getBaseAxis","isRichText","formatArrayValue","vertially","dimItem","tooltipDims","setEachItem","otherDims","markName","dimHead","dimHeadStr","valStr","formatSingleValue","mapDimensionsAll","tooltipDimLen","isValueArr","visualDrawType","formattedValue","colorEl","html","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","innerDataIndices","_innerSelect","unselect","selectedMap","nameOrId","toggleSelect","tmpArr","selectedDataIndicesMap","nameOrIds","selectedMode","lastDataIndex","hasItemOption","useColorPaletteOnData","ignoreStyleOnData","hasSymbolVisual","defaultSymbol","visualStyleAccessPath","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","param","CHANGABLE_METHODS","wrapMethod","onDataSelfChange","scheduler","pipeline","getPipeline","agentStubMap","ComponentView","render","updateView","updateLayout","updateVisual","seriesModels","createRenderPlanner","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","inner$3","renderPlanner","ChartView","renderTask","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","markUpdateMethod","updateMethod","elSetState","dataIdx","progressMethodMap","incrementalPrepareRender","incrementalRender","throttle","debounce","currCall","lastCall","lastExec","timer","debounceNextCall","cbArgs","thisDelay","thisDebounce","debounceDelay","inner$4","defaultStyleMappers","defaultColorKey","getStyleMapper","stylePath","styleMapper","visualStyleMapper","getDefaultColorKey","colorKey","seriesStyleTask","createOnAllSeries","performRawSeries","styleModel","getStyle","globalStyle","colorCallback","setVisual","dataEach","dataParams","setItemVisual","sharedModel","dataStyleTask","getVisual","existsStyle","ensureUniqueItemVisual","dataColorPaletteTask","overallReset","paletteScopeGroupByType","colorScope","dataAll","idxMap","rawIdx","fromPalette","ariaModel","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","ariaLabel","getTitle","getConfig","seriesLabels_1","seriesCount","seriesLabel","seriesTpl","getSeriesTypeName","displayCnt","dataLabels","keyValues","RegExp","userConfig","PI$4","loadingDefault","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","Scheduler","dataProcessorHandlers","visualHandlers","_stageTaskMap","_dataProcessorHandlers","_visualHandlers","_allHandlers","taskRecord","overallTask","getPerformArgs","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","pipelineId","updateStreamModes","dataLen","threshold","restorePipelines","pipelineMap","preventIncremental","_pipe","prepareStageTasks","stageTaskMap","record","_createSeriesStageTask","_createOverallStageTask","prepareView","__block","performDataProcessorTasks","_performStageTasks","performVisualTasks","stageHandlers","stageHandler","visualType","stageHandlerRecord","seriesTaskMap","overallNeedDirty_1","stub","needSetDirty","performArgs_1","setDirty","dirtyMap","performSeriesTasks","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","overallTaskReset","overallProgress","createStub","stubReset","stubOnDirty","agent","wrapStageHandler","detectSeriseType","stubProgress","clearAllVisual","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","legacyFunc","ecModelMock","apiMock","mockMethods","cond","Clz","colorAll","lightTheme","contrastColor","axisCommon","axisLine","splitLine","splitArea","minorSplitLine","crossStyle","subtextStyle","iconStyle","brushStyle","handleStyle","moveHandleStyle","fillerColor","dataBackground","selectedDataBackground","controlStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","categoryAxis","symbol","color0","borderColor0","DatasetModel","_sourceManager","DatasetView","mapDataStorage","registerMap","mapName","rawDef","rawSpecialAreas","records","specialAreas","geoSource","geoJson","geoJSON","features","parsers","retrieveMap","svgXML","ECEventProcessor","cptQuery","dataQuery","otherQuery","condCptType","suffixes_1","dataKeys_1","reserved","propSuffix","suffixPos","eventInfo","packedEvent","check","filterForExposedEvent","host","propOnHost","seriesSymbolTask","legendSymbol","symbolType","symbolSize","keepAspect","symbolRotate","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","seriesSymbolRotate","symbolKeepAspect","dataSymbolTask","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","getItemVisualFromData","getVisualFromData","PI2$5","CMD$3","DEFAULT_SEARCH_SPACE","getCandidateAnchor","outPt","outDir","projectPointToArc","projectPointToLine","limitToEnds","dx1","dy1","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","minDist","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelLineModel","labelLine","labelGuideConfig","textGuideLineConfig","searchSpace","candidates","anchorPoint","anchor","targetTransform","targetInversedTransform","candidate","limitTurnAngle","tmpProjPoint","linePoints","minTurnAngle","angleCos","minTurnAngleCos","tan","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","newAngle","setLabelLineState","isNormal","styleObj","buildLabelLinePath","moveLen","midPoint0","midPoint2","midPoint1","setLabelLineStyle","labelIgnoreNormal","stateShow","isLabelIgnored","getLabelLineStatesModels","labelLineName","prepareLayoutList","defaultAttr","localRect","isAxisAligned","minMargin","globalRect","obb","priority","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","lastPos","adjusted","totalShifts","shiftList","first","last","minGap","maxGap","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","remained","maxSqeezePercent","gaps","totalGaps","prevItemRect","squeezePercent","movement","moveForEachLabel","shiftLayoutOnX","leftBound","rightBound","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","labelItem","existsTextCfg","labelGuideIgnore","cloneArr","newPoints","prepareLayoutCallbackParams","labelAttr","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelStyle","labelTransform","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","needsUpdateLabelLine","labelLayoutStore","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","ignoreLabelLineUpdate","_updateLabelLine","_animateLabels","visualStyle","disableLabelAnimation","layoutStore","oldLayout","newProps","oldOpacity","prevStates","oldLayoutSelect","oldLayoutEmphasis","layoutSelect","layoutEmphasis","newLayout","createLegacyDataSelectAction","ecRegisterAction","getSeriesIndices","eventsMap","dispatchAction","handleSeriesLegacySelectEvents","eventPostfix","legacyEventName","fromActionPayload","handleLegacySelectEvents","messageCenter","isFromClick","fromAction","createLinearGradient","canvasGradient","createRadialGradient","getCanvasGradient","pathProxyForDraw","styleHasStroke","styleHasFill","doFillPath","originalGlobalAlpha","globalAlpha","doStrokePath","createCanvasPattern","pattern","__image","createPattern","repeat","brushPath","inBatch","strokePart","firstDraw","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","fillStyle","strokeStyle","ctxLineDash","lineScale_1","needsRebuild","brushImage","drawImage","brushText","lineScale_2","strokeText","fillText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","flushPathDrawn","globalCompositeOperation","bindPathAndTextCommonStyle","prevEl","newLineWidth","bindImageStyle","setContextTransform","setTransform","viewRect","isDisplayableCulled","isClipPathChanged","prevClipPaths","updateClipStatus","allClipped","isTransformChanged","m0","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","batchFill","batchStroke","isLast","viewWidth","viewHeight","prevElClipPaths","forceSetTransform","forceSetStyle","save","canBatchPath","lastDrawType","brushIncremental","temporalDisplayables","innerScope","i_1","len_1","returnFalse","createDom","newDom","newDomStyle","Layer","motionBlur","lastFrameAlpha","virtual","__used","__drawIndex","__startIndex","__endIndex","domStyle","onselectstart","webkitUserSelect","userSelect","webkitTapHighlightColor","domBack","ctxBack","getElementCount","initContext","createBackBuffer","clearAll","clearColor","haveMotionBLur","clearRect","clearColorGradientOrPattern","__canvasGradient","__painter","fillRect","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","createRoot","domRoot","CanvasPainter","_zlevelList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","_opts","_singleCanvas","rootStyle","innerHTML","zlevelList","layers","_width","_getSize","_height","_domRoot","rootCanvas","mainLayer","getType","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_paintHoverList","_hoverlayer","getLayer","getHoverLayer","redrawId","_updateLayerStatus","_doPaintList","needsRefreshHover","_compositeManually","self_1","eachBuiltinLayer","layerList","zi","useTimer","now","startTime","firstEl","dTime","draw","insertLayer","layersMap","prevLayer","prevDom","insertBefore","eachLayer","getLayers","updatePrevLayer","incrementalLayerCount","prevZlevel","_clearLayer","layerConfig","_zlevel","delLayer","removeChild","display","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","ctx_1","renderToCanvas","whIdx","wh","cwh","plt","prb","defaultView","getComputedStyle","canvas","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","assert$1","each$3","isFunction$1","isObject$2","zrender","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY_VISUAL_BRUSH","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","IN_MAIN_PROCESS_KEY","OPTION_UPDATED_KEY","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","CONNECT_STATUS_PENDING","CONNECT_STATUS_UPDATING","CONNECT_STATUS_UPDATED","createRegisterEventWithLowercaseECharts","isDisposed","disposedWarning","toLowercaseNameAndCallEventful","createRegisterEventWithLowercaseMessageCenter","MessageCenter","messageCenterProto","updateDirectly","updateMethods","doConvertPixel","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","renderComponents","renderSeries","performPostUpdateFuncs","createExtensionAPI","enableConnect","markStatusToUpdate","applyChangedStates","ECharts","_chartsViews","_chartsMap","_componentsViews","_pendingActions","themeStorage","_dom","defaultRenderer","__ECHARTS__DEFAULT__RENDERER__","_zr","_throttledZrFlush","_coordSysMgr","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_labelManager","_initEvents","_onframe","remainTime","_model","getDom","getZr","notMerge","lazyUpdate","setTheme","getDevicePixelRatio","getSvgDataURL","toDataURL","getDataURL","excludeComponents","excludesComponentViews","__viewId","url","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","left_1","top_1","right_1","bottom_1","canvasList_1","dpr_1","instances","chart","getSvgDom","targetCanvas","zr_1","content_1","getSvgRoot","connectedBackgroundColor","convertToPixel","convertFromPixel","containPixel","findResult","containPoint","parsedFinder","MOUSE_EVENT_NAMES","eveName","isGlobalOut","dataModel","eventData","eventActionMap","actionType","DOM_ATTRIBUTE_KEY","_loadingFX","showLoading","hideLoading","loadingEffects","makeActionFromEvent","eventObj","actions","updateLabelLayout","labelManager","isComponent","viewList","viewMap","__alive","doPrepare","requireNewView","viewId","classType","Clazz","__id","__ecComponentInfo","callView","excludeSeriesId","excludeSeriesIdMap","notBlur","prepareAndUpdate","coordSysMgr","componentDirtyList","componentView","seriesDirtyMap","coordSysList","chartsMap","escapeConnect","actionWrap","actionInfo","cptTypeTmp","cptType","payloads","batched","batch","eventObjBatch","isSelectChange","isStatusChange","batchItem","action","statusChanged","newObj","pendingActions","getDispatcher","dispatcher","dirtyList","updateZ","updateStates","updateBlend","updateHoverLayerStatus","postUpdateFuncs","applyElementStates","newStates","oldStates","elCount","preventUsingHoverLayer","preventAutoZ","stateAnimationModel","enableAnimation","class_1","getComponentByElement","modelInfo","updateConnectedChartsStatus","charts","otherChart","action_1","otherCharts_1","echartsProto","one","wrapped","args2","idBase","groupIdBase","init$1","existInstance","getInstanceByDom","clientWidth","clientHeight","connect","disConnect","disconnect","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","coordSysCreator","getCoordinateSystemDimensions","getDimensionsInfo","registerLayout","layoutTask","registerVisual","visualTask","targetList","defaultPriority","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","getMap","registerTransform","dataTool","defaultKeyGetter","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","_add","_update","_remove","execute","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","keyArr","keyGetterName","existence","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","otherDim","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","getDimensionTypeByAxis","DataDimensionInfo","isObject$3","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","defaultDimValueGetters","prepareInvertedIndex","getRawValueFromStore","getIndicesCtor","prepareChunks","getRawIndexWithoutIndices","getRawIndexWithIndices","normalizeDimensions","validateDimensions","cloneListForMapAndSample","cloneDimStore","getInitialExtent","setItemDataAndSeriesIndex","transferProperties","List","_rawCount","_storage","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawExtent","_extent","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","dimensionInfos","invertedIndicesMap","dimInfoInput","dimensionInfo","dimensionName","createInvertedIndices","_dimensionInfos","_dimensionsSummary","_invertedIndicesMap","getDimension","getDimensionsOnCoord","mapDimension","dimensionsSummary","initData","nameList","dimValueGetter","notProvider","_rawData","_indices","_nameRepeatCount","defaultDimValueGetter","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","appendValues","values","chunkSize","dimLen","rawExtent","originalChunkCount","emptyDataItem","sourceIdx","chunkIndex","chunkOffset","dimRawExtent","dimensionInfoMap","idList","nameRepeatCount","nameDimIdx","_nameDimIdx","itemId","_idDimIdx","dimStorage","nameDim","nameDimChunk","getIndices","newIndices","thisCount","buffer","chunkStore","dimStore","_getFast","getValues","getDataExtent","dimData","initialExtent","currEnd","useRaw","dimExtent","getApproximateExtent","setApproximateExtent","getSum","getMedian","dimDataArray","sortedDimDataArray","invertedIndices","rawIndex","indicesOfNearest","maxDistance","nearestIndices","minDiff","nearestIndicesLen","ctxCompat","fCtx","dimNames","filterSelf","dim0","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","mapArray","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","dimension","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","otherList","thisList","visual","kvObj","itemVisual","itemVisuals","setLayout","name_2","getLayout","getItemLayout","setItemLayout","clearItemLayouts","setItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","__wrappedMethods","getDimValueSimply","objectRows","keyedColumns","original","typedArray","chunk","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","excludeDimensions","allDimensions","originalStorage","originalDimStore","newDimStore","cloneChunk","originalChunk","childECData","thisECData","completeDimensions","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","dimDefItemRaw","userDimName","encodeDef","encodeDefaulter","encodeDefMap","dataDimsRaw","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItem","sysDimItemDimsDefItem","generateCoord","generateCoordCount","fromZero","genName","optDimCount","createDimensions","dimensionsCount","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisModel","axisDim","enableDataStack","byIndex","stackedCoordDimension","mayStack","stackedByDimInfo","stackedDimInfo","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","isCalculationCoord","isDimensionStacked","stackedDim","getStackedDimension","targetDim","createListFromArray","registeredCoordSys","coordSysInfo","coordSysDimDefs","useEncodeDefaulter","dimInfoList","hasNameEncode","categoryAxisModel","getOrdinalMeta","stackCalculationInfo","isNeedCompleteOrdinalData","sampleItem","firstDataNotNull","LineSeriesModel","legendHoverLink","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","circle","diamond","pin","arrow","triangle","symbolShapeMakers","thickness","size","symbolBuildProxies","SymbolClz","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","__isEmptyBrush","createSymbol","symbolPath","setColor","getDefaultLabel","interpolatedValues","labelDims","vals","Symbol","seriesScope","updateData","_createSymbol","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","getSymbolSize","_updateCommon","_sizeX","_sizeY","_seriesModel","emphasisItemStyle","blurItemStyle","selectItemStyle","symbolOffset","hoverScale","emphasisModel","visualColor","pathStyle","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","setSymbolScale","emphasisState","fadeOut","keepLabel","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","oldData","newIdx","symbolEl","oldIdx","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","prepareDataCoordInfo","valueOrigin","baseAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","valueDim","baseDim","baseDataOffset","stacked","stackResultDim","dataDimsForPoint","getExtent","getStackedOnPoint","dataCoordInfo","stackedData","dataToPoint","diffData","diffResult","idx1","lineAnimationDiff","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","nextPt","idxAdd","idxMinus","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","stackedOnCurrent","stackedOnNext","scaleAndAdd$1","v2Copy","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","drawNonMono","drawMono","prevIdx","prevP","ctrlLen","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","getBoundingBox","ptMin","ptMax","ECPolylineShape","ECPolyline","ECPolygonShape","ECPolygon","stackedOnPoints","bbox","stackedOnBBox","stackedOnSmooth","createGridClipPath","cartesian","hasAnimation","getArea","isHorizontal","createPolarClipPath","sectorArea","createClipPath","isPointsSame","points1","points2","getBoundingDiff","min1","max1","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","stepPt2","getVisualGradient","visualMetaList","visualMeta","getAxis","stops","toGlobalCoord","dataToCoord","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","gradient","getIsIgnoreFunc","isAuto","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","tickValue","axisExtent","availSize","createLineClipPath","expandSize","LineView","lineGroup","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_newPolyline","_newPolygon","_stackedOnPoints","_points","_updateAnimation","lineJoin","shouldBolderOnEmphasis","emphasisLineStyle","stackedOnSeries","changePolyState","_changePolyState","_valueOrigin","__points","updatedDataInfo","diffStatus","ptIdx","layoutPoints","isLargeRender","tmpIn","tmpOut","samplers","average","nearest","indexSampler","dataSample","sampler","nameLocation","nameRotate","nameTruncate","nameTextStyle","triggerEvent","onZero","onZeroAxisIndex","axisTick","axisLabel","showMinLabel","showMaxLabel","boundaryGap","deduplication","alignWithLabel","splitNumber","minorTick","primary","logBase","axisDefault","category","OrdinalMeta","_needCollect","needCollect","_deduplication","createByAxisModel","dedplication","getOrdinal","_getOrCreateMap","AXIS_TYPES","axisModelCreator","BaseAxisModelClass","extraDefaultOption","AxisModel","getAxisType","thisOption","__ordinalMeta","getCategories","AxisModelCommonMixin","getNeedCrossZero","getCoordSysModel","CartesianAxisModel","extraOption","categorySortInfo","Scale","setting","_setting","getSetting","unionExtent","unionExtentFromData","setExtent","thisExtent","isInExtentRange","isBlank","_isBlank","setBlank","roundNumber","intervalScaleNiceTicks","minInterval","maxInterval","span","intervalPrecision","getIntervalPrecision","niceTickExtent","fixExtent","contain$1","normalize$1","scale$2","OrdinalScale","_ordinalMeta","_categorySortInfo","getCategoryIndex","getTicks","ticks","getMinorTicks","setCategorySortInfo","getCategorySortInfo","beforeSortIndex","displayIndex","ordinalNumber","getLabel","cateogry","niceTicks","niceExtent","roundNumber$1","IntervalScale","_interval","_intervalPrecision","getInterval","setInterval","_niceExtent","expandToNicedExtent","safeLimit","lastNiceTick","minorTicks","nextTick","prevTick","minorTicksGroup","minorInterval","dataNum","fixMax","fixMin","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","prepareLayoutBarSeries","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","bandWidth","getBandWidth","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","columnsMap","seriesInfo","columnsOnAxis","autoWidthCount","categoryGap","stacks","minWidth","categoryGapPercent","columnCount","barGapPercent","autoWidth","column","finalWidth","widthSum","lastColumn","retrieveColumnLayout","barWidthAndOffset","lastStackCoords","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","isValueAxisH","valueAxisStart","getValueAxisStart","baseValue","baseCoord","largeLayout","coordLayout","getRect","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","bisect","TimeScale","_minLevelUnit","labelFormatter","innerTicks","getIntervalTicks","_approxInterval","getFullYear","getMonth","getDate","approxTickNum","scaleIntervalsLen","scaleIntervals","isUnitValueSame","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isSameMilliSecond","getDateInterval","approxInterval","daysInMonth","getMonthInterval","APPROX_ONE_MONTH","getHourInterval","getMinutesAndSecondsInterval","isMinutes","getMillisecondsInterval","getFirstTimestampOfUnit","unitName","outDate","bottomUnitName","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","dateTime","notAdd","addLevelTicks","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","startTick","endTick","getterName","setterName","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","levelTicksRemoveDuplicated","targetTickNum","levelsTicksInExtent","maxLevel","scaleProto","intervalScaleProto","getPrecisionSafe$1","roundingErrorFix","mathFloor","mathCeil","mathPow$1","mathLog","LogScale","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","originalVal","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","boundaryGapArr","_boundaryGapInner","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","frozen","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","freeze","ensureScaleRawExtentInfo","rawExtentInfo","minMax","getScaleExtent","scaleType","rawExtentResult","barSeriesModels","isBaseAxisAndHasBarSeries_1","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","extentInfo","createScaleByModel","ifAxisCrossZero","makeLabelFormatter","getLabelModel","categoryTickStart","getAxisRawValue","estimateLabelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","singleRect","rotateTextRect","textRect","rotateRadians","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","unionAxisExtentFromData","seriesExtent","PI$5","AxisBuilder","nameDirection","tickDirection","labelDirection","handleAutoShown","transformGroup","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","textRotation","direction","rotationDiff","makeAxisEventDataBase","isLabelSilent","tooltipOpt","shown","matrix","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","gapSignal","isNameLocationCenter","labelLayout","nameRotation","axisNameAvailableWidth","endTextLayout","truncateOpt","nameTruncateMaxWidth","formatterParams","__fullText","targetType","textRotate","onLeft","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","createTicks","ticksCoords","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","tickCoord","tickEl","tickModel","getTicksCoords","minorTickModel","minorTicksCoords","getMinorTicksCoords","minorTickLineStyle","minorTicksEls","axisLabelShow","labelMargin","labels","labelRotation","rawCategoryData","formattedLabel","rawLabel","itemLabelModel","rawCategoryItem","fixValue","axisInfo","getAxisInfo","axisPointerModel","useHandle","isHandleTrigger","coordSysAxesInfo","axesInfo","makeKey","getAxisPointerModel","axisPointerClazz","AxisView","axisPointerClass","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","forceRender","getAxisPointerClass","registerAxisPointerClass","layout$1","gridModel","grid","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","axisPosition","rectBound","axisOffset","posBound","onZeroCoord","dirMap","labelInside","isCartesian2DSeries","findAxisModels","axisModelMap","inner$5","rectCoordAxisBuildSplitArea","axisView","axisGroup","splitAreaModel","areaColors","gridRect","areaColorsLen","lastSplitAreaColors","splitAreaColors","newSplitAreaColors","colorIndex","cIndex","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","elementType","cartesians","getCartesians","otherAxisType","axisElementBuilders","splitLineModel","lineColors","minorSplitLineModel","CartesianXAxisView","CartesianYAxisView","seriesModelMap","seriesRecords","axisRecordMap","prepareDataExtentOnAxis","calculateFilteredExtent","shrinkAxisExtent","axesModelMap","xAxis","yAxis","xRawExtentInfo","yRawExtentInfo","prepareAxisRecord","condExtent","seriesRecord","xAxisRecord","yAxisRecord","condDimMap","tarDimMap","condAxis","tarAxisRecord","addCondition","axisRecord","addTarget","condDims","tarDims","tarDimExtents","initExtent","condDimsLen","tarDimsLen","singleCondDim","singleTarDim","condVal","tarDimExtent","tarAxisExtent","tarExtent","GridModel","containLabel","GridView","Cartesian","_dimList","getAxes","addAxis","cartesian2DDimensions","Cartesian2D","axisX","axisY","toLocalCoord","containData","clampData","xScale","yScale","xAxisExtent","yAxisExtent","pointToData","coordToData","xExtent","getGlobalExtent","yExtent","inner$6","createAxisLabels","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","makeCategoryTicks","makeCategoryLabelsActually","labelCategoryInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","numericLabelInterval","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","ticksCache","optionTickInterval","tickCategoryInterval","labelsResult","cache","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","categoryInterval","onlyTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","fixExtentWithBands","getTickModel","tickVal","fixOnBandTicksCoords","nTick","ticksLen","diffSize","crossLen","shift_1","ticksItem","littleThan","Axis2D","coordExtent","asc","Grid","_coordsMap","_coordsList","_axesMap","_axesList","axisPointerEnabled","_initCartesian","axesMap","_updateScale","onZeroRecords","fixAxisOnZero","ignoreContainLabel","axesList","adjustAxes","labelUnionRect","updateAxisTransform","axesMapOnDim","getCartesian","xAxisIndex","yAxisIndex","coordList","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","isAxisUsedInTheGrid","getTooltipAxes","baseAxes","otherAxes","otherAxis","grids","otherAxisDim","canOnZeroToAxis","getOnZeroRecordKey","coordBase","axisExtentSum","BaseBarSeriesModel","getMarkerPosition","offsetIndex","barMinAngle","largeThreshold","progressiveChunkMode","BarSeriesModel","brushSelector","selectors","roundCap","showBackground","borderType","realtimeSort","SausageShape","SausagePath","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","lessThanCircle","isCoordinateSystemType","BAR_BORDER_WIDTH_QUERY","BAR_BORDER_RADIUS_QUERY","_eventPos","mathMax$3","mathMin$3","getClipArea","coordSysClipArea","expandWidth","BarView","_isFirstFrame","removeOnRenderedListener","_updateDrawMode","coordinateSystemType","isReorder","_isLargeDraw","_renderLarge","_renderNormal","_clear","_updateLargeClip","_incrementalRenderLarge","isLargeDraw","isHorizontalOrRadial","animationModel","axis2DModel","_initSort","_onRendered","orderMap","_updateSort","needsClip","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","bgLayout","bgEl","createBackgroundEl","isClipped","elementCreator","updateStyle","updateRealtimeAnimation","newIndex","oldIndex","createBackgroundShape","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dataSort","mappedValue","_isDataOrderChanged","oldOrder","oldCount","lastValue","isOrderChanged","newOrder","axisId","sortInfo","coordSysBoundingRect","signWidth","signHeight","clipped","__dataIndex","animateProperty","isRadial","ShapeClass","sector","sectorShape","animateTarget","seriesTarget","axisTarget","fixedLineWidth","getLineWidth","signX","signY","isZeroOnPolar","isPolar","labelPositionOutside","rawLayout","LagePathShape","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","setLargeStyle","largePathUpdateDataIndex","largePath","largePathFindDataIndex","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","barBaseVal","barValueVal","ElementClz","createListSimply","dimensionsInfo","LegendVisualProvider","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","containName","dataWithEncodedVisual","PieSeriesModel","legendVisualProvider","_defaultLabelLine","labelLineNormalOpt","labelLineEmphasisOpt","minAngle","minShowLabelAngle","selectedOffset","percentPrecision","stillShowZeroSum","bleedMargin","distanceToLabelLine","avoidLabelOverlap","animationTypeUpdate","RADIAN","adjustSingleSide","viewLeft","viewTop","farthestX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","rA","rA2","recalculateX","items","topSemi","bottomSemi","labelAlignTo","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","rightmostX","isPositionCenter","isAlignToEdge","realTextWidth","targetTextWidth","hasLabelRotate","minShowLabelRadian","setNotShow","labelLineLen","labelLineLen2","midAngle","nx","ny","isLabelInside","notShowLabel","PiePiece","firstCreate","_updateLabel","labelTextEmphasisState","labelHoverModel","PieView","sectorGroup","_sectorGroup","piePiece","itemLayout","PI2$6","RADIAN$1","getViewRect","pieLayout","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","angle_1","layout_1","layout_2","dataFilter","legendModels"],"mappings":"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","sourcesContent":["(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global.echarts = {}));\n}(this, (function (exports) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    var Browser = (function () {\r\n        function Browser() {\r\n            this.firefox = false;\r\n            this.ie = false;\r\n            this.edge = false;\r\n            this.weChat = false;\r\n        }\r\n        return Browser;\r\n    }());\r\n    var Env = (function () {\r\n        function Env() {\r\n            this.browser = new Browser();\r\n            this.node = false;\r\n            this.wxa = false;\r\n            this.worker = false;\r\n            this.canvasSupported = false;\r\n            this.svgSupported = false;\r\n            this.touchEventsSupported = false;\r\n            this.pointerEventsSupported = false;\r\n            this.domSupported = false;\r\n        }\r\n        return Env;\r\n    }());\r\n    var env = new Env();\r\n    if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\r\n        env.wxa = true;\r\n        env.canvasSupported = true;\r\n        env.touchEventsSupported = true;\r\n    }\r\n    else if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n        env.worker = true;\r\n        env.canvasSupported = true;\r\n    }\r\n    else if (typeof navigator === 'undefined') {\r\n        env.node = true;\r\n        env.canvasSupported = true;\r\n        env.svgSupported = true;\r\n    }\r\n    else {\r\n        detect(navigator.userAgent, env);\r\n    }\r\n    function detect(ua, env) {\r\n        var browser = env.browser;\r\n        var firefox = ua.match(/Firefox\\/([\\d.]+)/);\r\n        var ie = ua.match(/MSIE\\s([\\d.]+)/)\r\n            || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\r\n        var edge = ua.match(/Edge\\/([\\d.]+)/);\r\n        var weChat = (/micromessenger/i).test(ua);\r\n        if (firefox) {\r\n            browser.firefox = true;\r\n            browser.version = firefox[1];\r\n        }\r\n        if (ie) {\r\n            browser.ie = true;\r\n            browser.version = ie[1];\r\n        }\r\n        if (edge) {\r\n            browser.edge = true;\r\n            browser.version = edge[1];\r\n        }\r\n        if (weChat) {\r\n            browser.weChat = true;\r\n        }\r\n        env.canvasSupported = !!document.createElement('canvas').getContext;\r\n        env.svgSupported = typeof SVGRect !== 'undefined';\r\n        env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\r\n        env.pointerEventsSupported = 'onpointerdown' in window\r\n            && (browser.edge || (browser.ie && +browser.version >= 11));\r\n        env.domSupported = typeof document !== 'undefined';\r\n    }\n\n    var BUILTIN_OBJECT = {\r\n        '[object Function]': true,\r\n        '[object RegExp]': true,\r\n        '[object Date]': true,\r\n        '[object Error]': true,\r\n        '[object CanvasGradient]': true,\r\n        '[object CanvasPattern]': true,\r\n        '[object Image]': true,\r\n        '[object Canvas]': true\r\n    };\r\n    var TYPED_ARRAY = {\r\n        '[object Int8Array]': true,\r\n        '[object Uint8Array]': true,\r\n        '[object Uint8ClampedArray]': true,\r\n        '[object Int16Array]': true,\r\n        '[object Uint16Array]': true,\r\n        '[object Int32Array]': true,\r\n        '[object Uint32Array]': true,\r\n        '[object Float32Array]': true,\r\n        '[object Float64Array]': true\r\n    };\r\n    var objToString = Object.prototype.toString;\r\n    var arrayProto = Array.prototype;\r\n    var nativeForEach = arrayProto.forEach;\r\n    var nativeFilter = arrayProto.filter;\r\n    var nativeSlice = arrayProto.slice;\r\n    var nativeMap = arrayProto.map;\r\n    var ctorFunction = (function () { }).constructor;\r\n    var protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\n    var methods = {};\r\n    function $override(name, fn) {\r\n        methods[name] = fn;\r\n    }\r\n    var idStart = 0x0907;\r\n    function guid() {\r\n        return idStart++;\r\n    }\r\n    function logError() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (typeof console !== 'undefined') {\r\n            console.error.apply(args);\r\n        }\r\n    }\r\n    function clone(source) {\r\n        if (source == null || typeof source !== 'object') {\r\n            return source;\r\n        }\r\n        var result = source;\r\n        var typeStr = objToString.call(source);\r\n        if (typeStr === '[object Array]') {\r\n            if (!isPrimitive(source)) {\r\n                result = [];\r\n                for (var i = 0, len = source.length; i < len; i++) {\r\n                    result[i] = clone(source[i]);\r\n                }\r\n            }\r\n        }\r\n        else if (TYPED_ARRAY[typeStr]) {\r\n            if (!isPrimitive(source)) {\r\n                var Ctor = source.constructor;\r\n                if (Ctor.from) {\r\n                    result = Ctor.from(source);\r\n                }\r\n                else {\r\n                    result = new Ctor(source.length);\r\n                    for (var i = 0, len = source.length; i < len; i++) {\r\n                        result[i] = clone(source[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\r\n            result = {};\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    result[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function merge(target, source, overwrite) {\r\n        if (!isObject(source) || !isObject(target)) {\r\n            return overwrite ? clone(source) : target;\r\n        }\r\n        for (var key in source) {\r\n            if (source.hasOwnProperty(key)) {\r\n                var targetProp = target[key];\r\n                var sourceProp = source[key];\r\n                if (isObject(sourceProp)\r\n                    && isObject(targetProp)\r\n                    && !isArray(sourceProp)\r\n                    && !isArray(targetProp)\r\n                    && !isDom(sourceProp)\r\n                    && !isDom(targetProp)\r\n                    && !isBuiltInObject(sourceProp)\r\n                    && !isBuiltInObject(targetProp)\r\n                    && !isPrimitive(sourceProp)\r\n                    && !isPrimitive(targetProp)) {\r\n                    merge(targetProp, sourceProp, overwrite);\r\n                }\r\n                else if (overwrite || !(key in target)) {\r\n                    target[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function extend(target, source) {\r\n        if (Object.assign) {\r\n            Object.assign(target, source);\r\n        }\r\n        else {\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    target[key] = source[key];\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function defaults(target, source, overlay) {\r\n        var keysArr = keys(source);\r\n        for (var i = 0; i < keysArr.length; i++) {\r\n            var key = keysArr[i];\r\n            if ((overlay ? source[key] != null : target[key] == null)) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    var createCanvas = function () {\r\n        return methods.createCanvas();\r\n    };\r\n    methods.createCanvas = function () {\r\n        return document.createElement('canvas');\r\n    };\r\n    function indexOf(array, value) {\r\n        if (array) {\r\n            if (array.indexOf) {\r\n                return array.indexOf(value);\r\n            }\r\n            for (var i = 0, len = array.length; i < len; i++) {\r\n                if (array[i] === value) {\r\n                    return i;\r\n                }\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function inherits(clazz, baseClazz) {\r\n        var clazzPrototype = clazz.prototype;\r\n        function F() { }\r\n        F.prototype = baseClazz.prototype;\r\n        clazz.prototype = new F();\r\n        for (var prop in clazzPrototype) {\r\n            if (clazzPrototype.hasOwnProperty(prop)) {\r\n                clazz.prototype[prop] = clazzPrototype[prop];\r\n            }\r\n        }\r\n        clazz.prototype.constructor = clazz;\r\n        clazz.superClass = baseClazz;\r\n    }\r\n    function mixin(target, source, override) {\r\n        target = 'prototype' in target ? target.prototype : target;\r\n        source = 'prototype' in source ? source.prototype : source;\r\n        if (Object.getOwnPropertyNames) {\r\n            var keyList = Object.getOwnPropertyNames(source);\r\n            for (var i = 0; i < keyList.length; i++) {\r\n                var key = keyList[i];\r\n                if (key !== 'constructor') {\r\n                    if ((override ? source[key] != null : target[key] == null)) {\r\n                        target[key] = source[key];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            defaults(target, source, override);\r\n        }\r\n    }\r\n    function isArrayLike(data) {\r\n        if (!data) {\r\n            return false;\r\n        }\r\n        if (typeof data === 'string') {\r\n            return false;\r\n        }\r\n        return typeof data.length === 'number';\r\n    }\r\n    function each(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        if (arr.forEach && arr.forEach === nativeForEach) {\r\n            arr.forEach(cb, context);\r\n        }\r\n        else if (arr.length === +arr.length) {\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                cb.call(context, arr[i], i, arr);\r\n            }\r\n        }\r\n        else {\r\n            for (var key in arr) {\r\n                if (arr.hasOwnProperty(key)) {\r\n                    cb.call(context, arr[key], key, arr);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function map(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.map && arr.map === nativeMap) {\r\n            return arr.map(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                result.push(cb.call(context, arr[i], i, arr));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function reduce(arr, cb, memo, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            memo = cb.call(context, memo, arr[i], i, arr);\r\n        }\r\n        return memo;\r\n    }\r\n    function filter(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.filter && arr.filter === nativeFilter) {\r\n            return arr.filter(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                if (cb.call(context, arr[i], i, arr)) {\r\n                    result.push(arr[i]);\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function keys(obj) {\r\n        if (!obj) {\r\n            return [];\r\n        }\r\n        if (Object.keys) {\r\n            return Object.keys(obj);\r\n        }\r\n        var keyList = [];\r\n        for (var key in obj) {\r\n            if (obj.hasOwnProperty(key)) {\r\n                keyList.push(key);\r\n            }\r\n        }\r\n        return keyList;\r\n    }\r\n    function bindPolyfill(func, context) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(context, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    var bind = (protoFunction && isFunction(protoFunction.bind))\r\n        ? protoFunction.call.bind(protoFunction.bind)\r\n        : bindPolyfill;\r\n    function curry(func) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(this, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    function isArray(value) {\r\n        if (Array.isArray) {\r\n            return Array.isArray(value);\r\n        }\r\n        return objToString.call(value) === '[object Array]';\r\n    }\r\n    function isFunction(value) {\r\n        return typeof value === 'function';\r\n    }\r\n    function isString(value) {\r\n        return typeof value === 'string';\r\n    }\r\n    function isStringSafe(value) {\r\n        return objToString.call(value) === '[object String]';\r\n    }\r\n    function isNumber(value) {\r\n        return typeof value === 'number';\r\n    }\r\n    function isObject(value) {\r\n        var type = typeof value;\r\n        return type === 'function' || (!!value && type === 'object');\r\n    }\r\n    function isBuiltInObject(value) {\r\n        return !!BUILTIN_OBJECT[objToString.call(value)];\r\n    }\r\n    function isTypedArray(value) {\r\n        return !!TYPED_ARRAY[objToString.call(value)];\r\n    }\r\n    function isDom(value) {\r\n        return typeof value === 'object'\r\n            && typeof value.nodeType === 'number'\r\n            && typeof value.ownerDocument === 'object';\r\n    }\r\n    function isGradientObject(value) {\r\n        return value.colorStops != null;\r\n    }\r\n    function isPatternObject(value) {\r\n        return value.image != null;\r\n    }\r\n    function isRegExp(value) {\r\n        return objToString.call(value) === '[object RegExp]';\r\n    }\r\n    function eqNaN(value) {\r\n        return value !== value;\r\n    }\r\n    function retrieve() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        for (var i = 0, len = args.length; i < len; i++) {\r\n            if (args[i] != null) {\r\n                return args[i];\r\n            }\r\n        }\r\n    }\r\n    function retrieve2(value0, value1) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1;\r\n    }\r\n    function retrieve3(value0, value1, value2) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1 != null\r\n                ? value1\r\n                : value2;\r\n    }\r\n    function slice(arr) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return nativeSlice.apply(arr, args);\r\n    }\r\n    function normalizeCssArray(val) {\r\n        if (typeof (val) === 'number') {\r\n            return [val, val, val, val];\r\n        }\r\n        var len = val.length;\r\n        if (len === 2) {\r\n            return [val[0], val[1], val[0], val[1]];\r\n        }\r\n        else if (len === 3) {\r\n            return [val[0], val[1], val[2], val[1]];\r\n        }\r\n        return val;\r\n    }\r\n    function assert(condition, message) {\r\n        if (!condition) {\r\n            throw new Error(message);\r\n        }\r\n    }\r\n    function trim(str) {\r\n        if (str == null) {\r\n            return null;\r\n        }\r\n        else if (typeof str.trim === 'function') {\r\n            return str.trim();\r\n        }\r\n        else {\r\n            return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n        }\r\n    }\r\n    var primitiveKey = '__ec_primitive__';\r\n    function setAsPrimitive(obj) {\r\n        obj[primitiveKey] = true;\r\n    }\r\n    function isPrimitive(obj) {\r\n        return obj[primitiveKey];\r\n    }\r\n    var HashMap = (function () {\r\n        function HashMap(obj) {\r\n            this.data = {};\r\n            var isArr = isArray(obj);\r\n            this.data = {};\r\n            var thisMap = this;\r\n            (obj instanceof HashMap)\r\n                ? obj.each(visit)\r\n                : (obj && each(obj, visit));\r\n            function visit(value, key) {\r\n                isArr ? thisMap.set(value, key) : thisMap.set(key, value);\r\n            }\r\n        }\r\n        HashMap.prototype.get = function (key) {\r\n            return this.data.hasOwnProperty(key) ? this.data[key] : null;\r\n        };\r\n        HashMap.prototype.set = function (key, value) {\r\n            return (this.data[key] = value);\r\n        };\r\n        HashMap.prototype.each = function (cb, context) {\r\n            for (var key in this.data) {\r\n                if (this.data.hasOwnProperty(key)) {\r\n                    cb.call(context, this.data[key], key);\r\n                }\r\n            }\r\n        };\r\n        HashMap.prototype.keys = function () {\r\n            return keys(this.data);\r\n        };\r\n        HashMap.prototype.removeKey = function (key) {\r\n            delete this.data[key];\r\n        };\r\n        return HashMap;\r\n    }());\r\n    function createHashMap(obj) {\r\n        return new HashMap(obj);\r\n    }\r\n    function createObject(proto, properties) {\r\n        var obj;\r\n        if (Object.create) {\r\n            obj = Object.create(proto);\r\n        }\r\n        else {\r\n            var StyleCtor = function () { };\r\n            StyleCtor.prototype = proto;\r\n            obj = new StyleCtor();\r\n        }\r\n        if (properties) {\r\n            extend(obj, properties);\r\n        }\r\n        return obj;\r\n    }\r\n    function hasOwn(own, prop) {\r\n        return own.hasOwnProperty(prop);\r\n    }\r\n    function noop() { }\n\n    function create(x, y) {\r\n        if (x == null) {\r\n            x = 0;\r\n        }\r\n        if (y == null) {\r\n            y = 0;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function copy(out, v) {\r\n        out[0] = v[0];\r\n        out[1] = v[1];\r\n        return out;\r\n    }\r\n    function clone$1(v) {\r\n        return [v[0], v[1]];\r\n    }\r\n    function add(out, v1, v2) {\r\n        out[0] = v1[0] + v2[0];\r\n        out[1] = v1[1] + v2[1];\r\n        return out;\r\n    }\r\n    function scaleAndAdd(out, v1, v2, a) {\r\n        out[0] = v1[0] + v2[0] * a;\r\n        out[1] = v1[1] + v2[1] * a;\r\n        return out;\r\n    }\r\n    function sub(out, v1, v2) {\r\n        out[0] = v1[0] - v2[0];\r\n        out[1] = v1[1] - v2[1];\r\n        return out;\r\n    }\r\n    function len(v) {\r\n        return Math.sqrt(lenSquare(v));\r\n    }\r\n    function lenSquare(v) {\r\n        return v[0] * v[0] + v[1] * v[1];\r\n    }\r\n    function scale(out, v, s) {\r\n        out[0] = v[0] * s;\r\n        out[1] = v[1] * s;\r\n        return out;\r\n    }\r\n    function normalize(out, v) {\r\n        var d = len(v);\r\n        if (d === 0) {\r\n            out[0] = 0;\r\n            out[1] = 0;\r\n        }\r\n        else {\r\n            out[0] = v[0] / d;\r\n            out[1] = v[1] / d;\r\n        }\r\n        return out;\r\n    }\r\n    function distance(v1, v2) {\r\n        return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n    }\r\n    var dist = distance;\r\n    function distanceSquare(v1, v2) {\r\n        return (v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]);\r\n    }\r\n    var distSquare = distanceSquare;\r\n    function lerp(out, v1, v2, t) {\r\n        out[0] = v1[0] + t * (v2[0] - v1[0]);\r\n        out[1] = v1[1] + t * (v2[1] - v1[1]);\r\n        return out;\r\n    }\r\n    function applyTransform(out, v, m) {\r\n        var x = v[0];\r\n        var y = v[1];\r\n        out[0] = m[0] * x + m[2] * y + m[4];\r\n        out[1] = m[1] * x + m[3] * y + m[5];\r\n        return out;\r\n    }\r\n    function min(out, v1, v2) {\r\n        out[0] = Math.min(v1[0], v2[0]);\r\n        out[1] = Math.min(v1[1], v2[1]);\r\n        return out;\r\n    }\r\n    function max(out, v1, v2) {\r\n        out[0] = Math.max(v1[0], v2[0]);\r\n        out[1] = Math.max(v1[1], v2[1]);\r\n        return out;\r\n    }\n\n    var Param = (function () {\r\n        function Param(target, e) {\r\n            this.target = target;\r\n            this.topTarget = e && e.topTarget;\r\n        }\r\n        return Param;\r\n    }());\r\n    var Draggable = (function () {\r\n        function Draggable(handler) {\r\n            this.handler = handler;\r\n            handler.on('mousedown', this._dragStart, this);\r\n            handler.on('mousemove', this._drag, this);\r\n            handler.on('mouseup', this._dragEnd, this);\r\n        }\r\n        Draggable.prototype._dragStart = function (e) {\r\n            var draggingTarget = e.target;\r\n            while (draggingTarget && !draggingTarget.draggable) {\r\n                draggingTarget = draggingTarget.parent;\r\n            }\r\n            if (draggingTarget) {\r\n                this._draggingTarget = draggingTarget;\r\n                draggingTarget.dragging = true;\r\n                this._x = e.offsetX;\r\n                this._y = e.offsetY;\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\r\n            }\r\n        };\r\n        Draggable.prototype._drag = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                var x = e.offsetX;\r\n                var y = e.offsetY;\r\n                var dx = x - this._x;\r\n                var dy = y - this._y;\r\n                this._x = x;\r\n                this._y = y;\r\n                draggingTarget.drift(dx, dy, e);\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\r\n                var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\r\n                var lastDropTarget = this._dropTarget;\r\n                this._dropTarget = dropTarget;\r\n                if (draggingTarget !== dropTarget) {\r\n                    if (lastDropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\r\n                    }\r\n                    if (dropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Draggable.prototype._dragEnd = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                draggingTarget.dragging = false;\r\n            }\r\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\r\n            if (this._dropTarget) {\r\n                this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\r\n            }\r\n            this._draggingTarget = null;\r\n            this._dropTarget = null;\r\n        };\r\n        return Draggable;\r\n    }());\n\n    var Eventful = (function () {\r\n        function Eventful(eventProcessors) {\r\n            if (eventProcessors) {\r\n                this._$eventProcessor = eventProcessors;\r\n            }\r\n        }\r\n        Eventful.prototype.on = function (event, query, handler, context) {\r\n            if (!this._$handlers) {\r\n                this._$handlers = {};\r\n            }\r\n            var _h = this._$handlers;\r\n            if (typeof query === 'function') {\r\n                context = handler;\r\n                handler = query;\r\n                query = null;\r\n            }\r\n            if (!handler || !event) {\r\n                return this;\r\n            }\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\r\n                query = eventProcessor.normalizeQuery(query);\r\n            }\r\n            if (!_h[event]) {\r\n                _h[event] = [];\r\n            }\r\n            for (var i = 0; i < _h[event].length; i++) {\r\n                if (_h[event][i].h === handler) {\r\n                    return this;\r\n                }\r\n            }\r\n            var wrap = {\r\n                h: handler,\r\n                query: query,\r\n                ctx: (context || this),\r\n                callAtLast: handler.zrEventfulCallAtLast\r\n            };\r\n            var lastIndex = _h[event].length - 1;\r\n            var lastWrap = _h[event][lastIndex];\r\n            (lastWrap && lastWrap.callAtLast)\r\n                ? _h[event].splice(lastIndex, 0, wrap)\r\n                : _h[event].push(wrap);\r\n            return this;\r\n        };\r\n        Eventful.prototype.isSilent = function (eventName) {\r\n            var _h = this._$handlers;\r\n            return !_h || !_h[eventName] || !_h[eventName].length;\r\n        };\r\n        Eventful.prototype.off = function (eventType, handler) {\r\n            var _h = this._$handlers;\r\n            if (!_h) {\r\n                return this;\r\n            }\r\n            if (!eventType) {\r\n                this._$handlers = {};\r\n                return this;\r\n            }\r\n            if (handler) {\r\n                if (_h[eventType]) {\r\n                    var newList = [];\r\n                    for (var i = 0, l = _h[eventType].length; i < l; i++) {\r\n                        if (_h[eventType][i].h !== handler) {\r\n                            newList.push(_h[eventType][i]);\r\n                        }\r\n                    }\r\n                    _h[eventType] = newList;\r\n                }\r\n                if (_h[eventType] && _h[eventType].length === 0) {\r\n                    delete _h[eventType];\r\n                }\r\n            }\r\n            else {\r\n                delete _h[eventType];\r\n            }\r\n            return this;\r\n        };\r\n        Eventful.prototype.trigger = function (eventType) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[eventType];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var argLen = args.length;\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(eventType, hItem.query)) {\r\n                        i++;\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(hItem.ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(hItem.ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(hItem.ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(hItem.ctx, args);\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(eventType);\r\n            return this;\r\n        };\r\n        Eventful.prototype.triggerWithContext = function (type) {\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[type];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var args = arguments;\r\n                var argLen = args.length;\r\n                var ctx = args[argLen - 1];\r\n                var len = _h.length;\r\n                for (var i = 0; i < len;) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(type, hItem.query)) {\r\n                        i++;\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(ctx, args.slice(1, argLen - 1));\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(type);\r\n            return this;\r\n        };\r\n        return Eventful;\r\n    }());\n\n    var LN2 = Math.log(2);\r\n    function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\r\n        var cacheKey = rowMask + '-' + colMask;\r\n        var fullRank = rows.length;\r\n        if (detCache.hasOwnProperty(cacheKey)) {\r\n            return detCache[cacheKey];\r\n        }\r\n        if (rank === 1) {\r\n            var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\r\n            return rows[rowStart][colStart];\r\n        }\r\n        var subRowMask = rowMask | (1 << rowStart);\r\n        var subRowStart = rowStart + 1;\r\n        while (rowMask & (1 << subRowStart)) {\r\n            subRowStart++;\r\n        }\r\n        var sum = 0;\r\n        for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\r\n            var colTag = 1 << j;\r\n            if (!(colTag & colMask)) {\r\n                sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\r\n                    * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\r\n                colLocalIdx++;\r\n            }\r\n        }\r\n        detCache[cacheKey] = sum;\r\n        return sum;\r\n    }\r\n    function buildTransformer(src, dest) {\r\n        var mA = [\r\n            [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\r\n            [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\r\n            [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\r\n            [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\r\n            [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\r\n            [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\r\n            [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\r\n            [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\r\n        ];\r\n        var detCache = {};\r\n        var det = determinant(mA, 8, 0, 0, 0, detCache);\r\n        if (det === 0) {\r\n            return;\r\n        }\r\n        var vh = [];\r\n        for (var i = 0; i < 8; i++) {\r\n            for (var j = 0; j < 8; j++) {\r\n                vh[j] == null && (vh[j] = 0);\r\n                vh[j] += ((i + j) % 2 ? -1 : 1)\r\n                    * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\r\n                    / det * dest[i];\r\n            }\r\n        }\r\n        return function (out, srcPointX, srcPointY) {\r\n            var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\r\n            out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\r\n            out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\r\n        };\r\n    }\n\n    var EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\n    function transformCoordWithViewport(out, el, inX, inY, inverse) {\r\n        if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\r\n            var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\r\n            var markers = prepareCoordMarkers(el, saved);\r\n            var transformer = preparePointerTransformer(markers, saved, inverse);\r\n            if (transformer) {\r\n                transformer(out, inX, inY);\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function prepareCoordMarkers(el, saved) {\r\n        var markers = saved.markers;\r\n        if (markers) {\r\n            return markers;\r\n        }\r\n        markers = saved.markers = [];\r\n        var propLR = ['left', 'right'];\r\n        var propTB = ['top', 'bottom'];\r\n        for (var i = 0; i < 4; i++) {\r\n            var marker = document.createElement('div');\r\n            var stl = marker.style;\r\n            var idxLR = i % 2;\r\n            var idxTB = (i >> 1) % 2;\r\n            stl.cssText = [\r\n                'position: absolute',\r\n                'visibility: hidden',\r\n                'padding: 0',\r\n                'margin: 0',\r\n                'border-width: 0',\r\n                'user-select: none',\r\n                'width:0',\r\n                'height:0',\r\n                propLR[idxLR] + ':0',\r\n                propTB[idxTB] + ':0',\r\n                propLR[1 - idxLR] + ':auto',\r\n                propTB[1 - idxTB] + ':auto',\r\n                ''\r\n            ].join('!important;');\r\n            el.appendChild(marker);\r\n            markers.push(marker);\r\n        }\r\n        return markers;\r\n    }\r\n    function preparePointerTransformer(markers, saved, inverse) {\r\n        var transformerName = inverse ? 'invTrans' : 'trans';\r\n        var transformer = saved[transformerName];\r\n        var oldSrcCoords = saved.srcCoords;\r\n        var srcCoords = [];\r\n        var destCoords = [];\r\n        var oldCoordTheSame = true;\r\n        for (var i = 0; i < 4; i++) {\r\n            var rect = markers[i].getBoundingClientRect();\r\n            var ii = 2 * i;\r\n            var x = rect.left;\r\n            var y = rect.top;\r\n            srcCoords.push(x, y);\r\n            oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\r\n            destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\r\n        }\r\n        return (oldCoordTheSame && transformer)\r\n            ? transformer\r\n            : (saved.srcCoords = srcCoords,\r\n                saved[transformerName] = inverse\r\n                    ? buildTransformer(destCoords, srcCoords)\r\n                    : buildTransformer(srcCoords, destCoords));\r\n    }\r\n    function isCanvasEl(el) {\r\n        return el.nodeName.toUpperCase() === 'CANVAS';\r\n    }\n\n    var isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\n    var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\n    var _calcOut = [];\r\n    function clientToLocal(el, e, out, calculate) {\r\n        out = out || {};\r\n        if (calculate || !env.canvasSupported) {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        else if (env.browser.firefox\r\n            && e.layerX != null\r\n            && e.layerX !== e.offsetX) {\r\n            out.zrX = e.layerX;\r\n            out.zrY = e.layerY;\r\n        }\r\n        else if (e.offsetX != null) {\r\n            out.zrX = e.offsetX;\r\n            out.zrY = e.offsetY;\r\n        }\r\n        else {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        return out;\r\n    }\r\n    function calculateZrXY(el, e, out) {\r\n        if (env.domSupported && el.getBoundingClientRect) {\r\n            var ex = e.clientX;\r\n            var ey = e.clientY;\r\n            if (isCanvasEl(el)) {\r\n                var box = el.getBoundingClientRect();\r\n                out.zrX = ex - box.left;\r\n                out.zrY = ey - box.top;\r\n                return;\r\n            }\r\n            else {\r\n                if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\r\n                    out.zrX = _calcOut[0];\r\n                    out.zrY = _calcOut[1];\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        out.zrX = out.zrY = 0;\r\n    }\r\n    function getNativeEvent(e) {\r\n        return e\r\n            || window.event;\r\n    }\r\n    function normalizeEvent(el, e, calculate) {\r\n        e = getNativeEvent(e);\r\n        if (e.zrX != null) {\r\n            return e;\r\n        }\r\n        var eventType = e.type;\r\n        var isTouch = eventType && eventType.indexOf('touch') >= 0;\r\n        if (!isTouch) {\r\n            clientToLocal(el, e, e, calculate);\r\n            var wheelDelta = getWheelDeltaMayPolyfill(e);\r\n            e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\r\n        }\r\n        else {\r\n            var touch = eventType !== 'touchend'\r\n                ? e.targetTouches[0]\r\n                : e.changedTouches[0];\r\n            touch && clientToLocal(el, touch, e, calculate);\r\n        }\r\n        var button = e.button;\r\n        if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\r\n            e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n        }\r\n        return e;\r\n    }\r\n    function getWheelDeltaMayPolyfill(e) {\r\n        var rawWheelDelta = e.wheelDelta;\r\n        if (rawWheelDelta) {\r\n            return rawWheelDelta;\r\n        }\r\n        var deltaX = e.deltaX;\r\n        var deltaY = e.deltaY;\r\n        if (deltaX == null || deltaY == null) {\r\n            return rawWheelDelta;\r\n        }\r\n        var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\r\n        var sign = deltaY > 0 ? -1\r\n            : deltaY < 0 ? 1\r\n                : deltaX > 0 ? -1\r\n                    : 1;\r\n        return 3 * delta * sign;\r\n    }\r\n    function addEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.addEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.attachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    function removeEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.removeEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.detachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    var stop = isDomLevel2\r\n        ? function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            e.cancelBubble = true;\r\n        }\r\n        : function (e) {\r\n            e.returnValue = false;\r\n            e.cancelBubble = true;\r\n        };\n\n    var GestureMgr = (function () {\r\n        function GestureMgr() {\r\n            this._track = [];\r\n        }\r\n        GestureMgr.prototype.recognize = function (event, target, root) {\r\n            this._doTrack(event, target, root);\r\n            return this._recognize(event);\r\n        };\r\n        GestureMgr.prototype.clear = function () {\r\n            this._track.length = 0;\r\n            return this;\r\n        };\r\n        GestureMgr.prototype._doTrack = function (event, target, root) {\r\n            var touches = event.touches;\r\n            if (!touches) {\r\n                return;\r\n            }\r\n            var trackItem = {\r\n                points: [],\r\n                touches: [],\r\n                target: target,\r\n                event: event\r\n            };\r\n            for (var i = 0, len = touches.length; i < len; i++) {\r\n                var touch = touches[i];\r\n                var pos = clientToLocal(root, touch, {});\r\n                trackItem.points.push([pos.zrX, pos.zrY]);\r\n                trackItem.touches.push(touch);\r\n            }\r\n            this._track.push(trackItem);\r\n        };\r\n        GestureMgr.prototype._recognize = function (event) {\r\n            for (var eventName in recognizers) {\r\n                if (recognizers.hasOwnProperty(eventName)) {\r\n                    var gestureInfo = recognizers[eventName](this._track, event);\r\n                    if (gestureInfo) {\r\n                        return gestureInfo;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        return GestureMgr;\r\n    }());\r\n    function dist$1(pointPair) {\r\n        var dx = pointPair[1][0] - pointPair[0][0];\r\n        var dy = pointPair[1][1] - pointPair[0][1];\r\n        return Math.sqrt(dx * dx + dy * dy);\r\n    }\r\n    function center(pointPair) {\r\n        return [\r\n            (pointPair[0][0] + pointPair[1][0]) / 2,\r\n            (pointPair[0][1] + pointPair[1][1]) / 2\r\n        ];\r\n    }\r\n    var recognizers = {\r\n        pinch: function (tracks, event) {\r\n            var trackLen = tracks.length;\r\n            if (!trackLen) {\r\n                return;\r\n            }\r\n            var pinchEnd = (tracks[trackLen - 1] || {}).points;\r\n            var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\r\n            if (pinchPre\r\n                && pinchPre.length > 1\r\n                && pinchEnd\r\n                && pinchEnd.length > 1) {\r\n                var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre);\r\n                !isFinite(pinchScale) && (pinchScale = 1);\r\n                event.pinchScale = pinchScale;\r\n                var pinchCenter = center(pinchEnd);\r\n                event.pinchX = pinchCenter[0];\r\n                event.pinchY = pinchCenter[1];\r\n                return {\r\n                    type: 'pinch',\r\n                    target: tracks[0].target,\r\n                    event: event\r\n                };\r\n            }\r\n        }\r\n    };\n\n    var SILENT = 'silent';\r\n    function makeEventPacket(eveType, targetInfo, event) {\r\n        return {\r\n            type: eveType,\r\n            event: event,\r\n            target: targetInfo.target,\r\n            topTarget: targetInfo.topTarget,\r\n            cancelBubble: false,\r\n            offsetX: event.zrX,\r\n            offsetY: event.zrY,\r\n            gestureEvent: event.gestureEvent,\r\n            pinchX: event.pinchX,\r\n            pinchY: event.pinchY,\r\n            pinchScale: event.pinchScale,\r\n            wheelDelta: event.zrDelta,\r\n            zrByTouch: event.zrByTouch,\r\n            which: event.which,\r\n            stop: stopEvent\r\n        };\r\n    }\r\n    function stopEvent() {\r\n        stop(this.event);\r\n    }\r\n    var EmptyProxy = (function (_super) {\r\n        __extends(EmptyProxy, _super);\r\n        function EmptyProxy() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.handler = null;\r\n            return _this;\r\n        }\r\n        EmptyProxy.prototype.dispose = function () { };\r\n        EmptyProxy.prototype.setCursor = function () { };\r\n        return EmptyProxy;\r\n    }(Eventful));\r\n    var HoveredResult = (function () {\r\n        function HoveredResult(x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n        }\r\n        return HoveredResult;\r\n    }());\r\n    var handlerNames = [\r\n        'click', 'dblclick', 'mousewheel', 'mouseout',\r\n        'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n    ];\r\n    var Handler = (function (_super) {\r\n        __extends(Handler, _super);\r\n        function Handler(storage, painter, proxy, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this._hovered = new HoveredResult(0, 0);\r\n            _this.storage = storage;\r\n            _this.painter = painter;\r\n            _this.painterRoot = painterRoot;\r\n            proxy = proxy || new EmptyProxy();\r\n            _this.proxy = null;\r\n            _this.setHandlerProxy(proxy);\r\n            _this._draggingMgr = new Draggable(_this);\r\n            return _this;\r\n        }\r\n        Handler.prototype.setHandlerProxy = function (proxy) {\r\n            if (this.proxy) {\r\n                this.proxy.dispose();\r\n            }\r\n            if (proxy) {\r\n                each(handlerNames, function (name) {\r\n                    proxy.on && proxy.on(name, this[name], this);\r\n                }, this);\r\n                proxy.handler = this;\r\n            }\r\n            this.proxy = proxy;\r\n        };\r\n        Handler.prototype.mousemove = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var lastHovered = this._hovered;\r\n            var lastHoveredTarget = lastHovered.target;\r\n            if (lastHoveredTarget && !lastHoveredTarget.__zr) {\r\n                lastHovered = this.findHover(lastHovered.x, lastHovered.y);\r\n                lastHoveredTarget = lastHovered.target;\r\n            }\r\n            var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\r\n            var hoveredTarget = hovered.target;\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\r\n            if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(lastHovered, 'mouseout', event);\r\n            }\r\n            this.dispatchToElement(hovered, 'mousemove', event);\r\n            if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(hovered, 'mouseover', event);\r\n            }\r\n        };\r\n        Handler.prototype.mouseout = function (event) {\r\n            var eventControl = event.zrEventControl;\r\n            var zrIsToLocalDOM = event.zrIsToLocalDOM;\r\n            if (eventControl !== 'only_globalout') {\r\n                this.dispatchToElement(this._hovered, 'mouseout', event);\r\n            }\r\n            if (eventControl !== 'no_globalout') {\r\n                !zrIsToLocalDOM && this.trigger('globalout', { type: 'globalout', event: event });\r\n            }\r\n        };\r\n        Handler.prototype.resize = function () {\r\n            this._hovered = new HoveredResult(0, 0);\r\n        };\r\n        Handler.prototype.dispatch = function (eventName, eventArgs) {\r\n            var handler = this[eventName];\r\n            handler && handler.call(this, eventArgs);\r\n        };\r\n        Handler.prototype.dispose = function () {\r\n            this.proxy.dispose();\r\n            this.storage = null;\r\n            this.proxy = null;\r\n            this.painter = null;\r\n        };\r\n        Handler.prototype.setCursorStyle = function (cursorStyle) {\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(cursorStyle);\r\n        };\r\n        Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\r\n            targetInfo = targetInfo || {};\r\n            var el = targetInfo.target;\r\n            if (el && el.silent) {\r\n                return;\r\n            }\r\n            var eventKey = ('on' + eventName);\r\n            var eventPacket = makeEventPacket(eventName, targetInfo, event);\r\n            while (el) {\r\n                el[eventKey]\r\n                    && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\r\n                el.trigger(eventName, eventPacket);\r\n                el = el.__hostTarget ? el.__hostTarget : el.parent;\r\n                if (eventPacket.cancelBubble) {\r\n                    break;\r\n                }\r\n            }\r\n            if (!eventPacket.cancelBubble) {\r\n                this.trigger(eventName, eventPacket);\r\n                if (this.painter && this.painter.eachOtherLayer) {\r\n                    this.painter.eachOtherLayer(function (layer) {\r\n                        if (typeof (layer[eventKey]) === 'function') {\r\n                            layer[eventKey].call(layer, eventPacket);\r\n                        }\r\n                        if (layer.trigger) {\r\n                            layer.trigger(eventName, eventPacket);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        Handler.prototype.findHover = function (x, y, exclude) {\r\n            var list = this.storage.getDisplayList();\r\n            var out = new HoveredResult(x, y);\r\n            for (var i = list.length - 1; i >= 0; i--) {\r\n                var hoverCheckResult = void 0;\r\n                if (list[i] !== exclude\r\n                    && !list[i].ignore\r\n                    && (hoverCheckResult = isHover(list[i], x, y))) {\r\n                    !out.topTarget && (out.topTarget = list[i]);\r\n                    if (hoverCheckResult !== SILENT) {\r\n                        out.target = list[i];\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return out;\r\n        };\r\n        Handler.prototype.processGesture = function (event, stage) {\r\n            if (!this._gestureMgr) {\r\n                this._gestureMgr = new GestureMgr();\r\n            }\r\n            var gestureMgr = this._gestureMgr;\r\n            stage === 'start' && gestureMgr.clear();\r\n            var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\r\n            stage === 'end' && gestureMgr.clear();\r\n            if (gestureInfo) {\r\n                var type = gestureInfo.type;\r\n                event.gestureEvent = type;\r\n                var res = new HoveredResult();\r\n                res.target = gestureInfo.target;\r\n                this.dispatchToElement(res, type, gestureInfo.event);\r\n            }\r\n        };\r\n        return Handler;\r\n    }(Eventful));\r\n    each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\r\n        Handler.prototype[name] = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var hovered;\r\n            var hoveredTarget;\r\n            if (name !== 'mouseup' || !isOutside) {\r\n                hovered = this.findHover(x, y);\r\n                hoveredTarget = hovered.target;\r\n            }\r\n            if (name === 'mousedown') {\r\n                this._downEl = hoveredTarget;\r\n                this._downPoint = [event.zrX, event.zrY];\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'mouseup') {\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'click') {\r\n                if (this._downEl !== this._upEl\r\n                    || !this._downPoint\r\n                    || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\r\n                    return;\r\n                }\r\n                this._downPoint = null;\r\n            }\r\n            this.dispatchToElement(hovered, name, event);\r\n        };\r\n    });\r\n    function isHover(displayable, x, y) {\r\n        if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\r\n            var el = displayable;\r\n            var isSilent = void 0;\r\n            while (el) {\r\n                var clipPath = el.getClipPath();\r\n                if (clipPath && !clipPath.contain(x, y)) {\r\n                    return false;\r\n                }\r\n                if (el.silent) {\r\n                    isSilent = true;\r\n                }\r\n                var hostEl = el.__hostTarget;\r\n                el = hostEl ? hostEl : el.parent;\r\n            }\r\n            return isSilent ? SILENT : true;\r\n        }\r\n        return false;\r\n    }\r\n    function isOutsideBoundary(handlerInstance, x, y) {\r\n        var painter = handlerInstance.painter;\r\n        return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\r\n    }\n\n    var DEFAULT_MIN_MERGE = 32;\r\n    var DEFAULT_MIN_GALLOPING = 7;\r\n    function minRunLength(n) {\r\n        var r = 0;\r\n        while (n >= DEFAULT_MIN_MERGE) {\r\n            r |= n & 1;\r\n            n >>= 1;\r\n        }\r\n        return n + r;\r\n    }\r\n    function makeAscendingRun(array, lo, hi, compare) {\r\n        var runHi = lo + 1;\r\n        if (runHi === hi) {\r\n            return 1;\r\n        }\r\n        if (compare(array[runHi++], array[lo]) < 0) {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\r\n                runHi++;\r\n            }\r\n            reverseRun(array, lo, runHi);\r\n        }\r\n        else {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\r\n                runHi++;\r\n            }\r\n        }\r\n        return runHi - lo;\r\n    }\r\n    function reverseRun(array, lo, hi) {\r\n        hi--;\r\n        while (lo < hi) {\r\n            var t = array[lo];\r\n            array[lo++] = array[hi];\r\n            array[hi--] = t;\r\n        }\r\n    }\r\n    function binaryInsertionSort(array, lo, hi, start, compare) {\r\n        if (start === lo) {\r\n            start++;\r\n        }\r\n        for (; start < hi; start++) {\r\n            var pivot = array[start];\r\n            var left = lo;\r\n            var right = start;\r\n            var mid;\r\n            while (left < right) {\r\n                mid = left + right >>> 1;\r\n                if (compare(pivot, array[mid]) < 0) {\r\n                    right = mid;\r\n                }\r\n                else {\r\n                    left = mid + 1;\r\n                }\r\n            }\r\n            var n = start - left;\r\n            switch (n) {\r\n                case 3:\r\n                    array[left + 3] = array[left + 2];\r\n                case 2:\r\n                    array[left + 2] = array[left + 1];\r\n                case 1:\r\n                    array[left + 1] = array[left];\r\n                    break;\r\n                default:\r\n                    while (n > 0) {\r\n                        array[left + n] = array[left + n - 1];\r\n                        n--;\r\n                    }\r\n            }\r\n            array[left] = pivot;\r\n        }\r\n    }\r\n    function gallopLeft(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) > 0) {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        else {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) > 0) {\r\n                lastOffset = m + 1;\r\n            }\r\n            else {\r\n                offset = m;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function gallopRight(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) < 0) {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        else {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) < 0) {\r\n                offset = m;\r\n            }\r\n            else {\r\n                lastOffset = m + 1;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function TimSort(array, compare) {\r\n        var minGallop = DEFAULT_MIN_GALLOPING;\r\n        var length = 0;\r\n        var runStart;\r\n        var runLength;\r\n        var stackSize = 0;\r\n        length = array.length;\r\n        var tmp = [];\r\n        runStart = [];\r\n        runLength = [];\r\n        function pushRun(_runStart, _runLength) {\r\n            runStart[stackSize] = _runStart;\r\n            runLength[stackSize] = _runLength;\r\n            stackSize += 1;\r\n        }\r\n        function mergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\r\n                    || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\r\n                    if (runLength[n - 1] < runLength[n + 1]) {\r\n                        n--;\r\n                    }\r\n                }\r\n                else if (runLength[n] > runLength[n + 1]) {\r\n                    break;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function forceMergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\r\n                    n--;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function mergeAt(i) {\r\n            var start1 = runStart[i];\r\n            var length1 = runLength[i];\r\n            var start2 = runStart[i + 1];\r\n            var length2 = runLength[i + 1];\r\n            runLength[i] = length1 + length2;\r\n            if (i === stackSize - 3) {\r\n                runStart[i + 1] = runStart[i + 2];\r\n                runLength[i + 1] = runLength[i + 2];\r\n            }\r\n            stackSize--;\r\n            var k = gallopRight(array[start2], array, start1, length1, 0, compare);\r\n            start1 += k;\r\n            length1 -= k;\r\n            if (length1 === 0) {\r\n                return;\r\n            }\r\n            length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\r\n            if (length2 === 0) {\r\n                return;\r\n            }\r\n            if (length1 <= length2) {\r\n                mergeLow(start1, length1, start2, length2);\r\n            }\r\n            else {\r\n                mergeHigh(start1, length1, start2, length2);\r\n            }\r\n        }\r\n        function mergeLow(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length1; i++) {\r\n                tmp[i] = array[start1 + i];\r\n            }\r\n            var cursor1 = 0;\r\n            var cursor2 = start2;\r\n            var dest = start1;\r\n            array[dest++] = array[cursor2++];\r\n            if (--length2 === 0) {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n                return;\r\n            }\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            var count1;\r\n            var count2;\r\n            var exit;\r\n            while (1) {\r\n                count1 = 0;\r\n                count2 = 0;\r\n                exit = false;\r\n                do {\r\n                    if (compare(array[cursor2], tmp[cursor1]) < 0) {\r\n                        array[dest++] = array[cursor2++];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest++] = tmp[cursor1++];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\r\n                    if (count1 !== 0) {\r\n                        for (i = 0; i < count1; i++) {\r\n                            array[dest + i] = tmp[cursor1 + i];\r\n                        }\r\n                        dest += count1;\r\n                        cursor1 += count1;\r\n                        length1 -= count1;\r\n                        if (length1 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = array[cursor2++];\r\n                    if (--length2 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\r\n                    if (count2 !== 0) {\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[dest + i] = array[cursor2 + i];\r\n                        }\r\n                        dest += count2;\r\n                        cursor2 += count2;\r\n                        length2 -= count2;\r\n                        if (length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = tmp[cursor1++];\r\n                    if (--length1 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            minGallop < 1 && (minGallop = 1);\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n            }\r\n            else if (length1 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n            }\r\n        }\r\n        function mergeHigh(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length2; i++) {\r\n                tmp[i] = array[start2 + i];\r\n            }\r\n            var cursor1 = start1 + length1 - 1;\r\n            var cursor2 = length2 - 1;\r\n            var dest = start2 + length2 - 1;\r\n            var customCursor = 0;\r\n            var customDest = 0;\r\n            array[dest--] = array[cursor1--];\r\n            if (--length1 === 0) {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n                return;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            while (true) {\r\n                var count1 = 0;\r\n                var count2 = 0;\r\n                var exit = false;\r\n                do {\r\n                    if (compare(tmp[cursor2], array[cursor1]) < 0) {\r\n                        array[dest--] = array[cursor1--];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest--] = tmp[cursor2--];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\r\n                    if (count1 !== 0) {\r\n                        dest -= count1;\r\n                        cursor1 -= count1;\r\n                        length1 -= count1;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor1 + 1;\r\n                        for (i = count1 - 1; i >= 0; i--) {\r\n                            array[customDest + i] = array[customCursor + i];\r\n                        }\r\n                        if (length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = tmp[cursor2--];\r\n                    if (--length2 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\r\n                    if (count2 !== 0) {\r\n                        dest -= count2;\r\n                        cursor2 -= count2;\r\n                        length2 -= count2;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor2 + 1;\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[customDest + i] = tmp[customCursor + i];\r\n                        }\r\n                        if (length2 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = array[cursor1--];\r\n                    if (--length1 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            if (minGallop < 1) {\r\n                minGallop = 1;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n            }\r\n            else if (length2 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            mergeRuns: mergeRuns,\r\n            forceMergeRuns: forceMergeRuns,\r\n            pushRun: pushRun\r\n        };\r\n    }\r\n    function sort(array, compare, lo, hi) {\r\n        if (!lo) {\r\n            lo = 0;\r\n        }\r\n        if (!hi) {\r\n            hi = array.length;\r\n        }\r\n        var remaining = hi - lo;\r\n        if (remaining < 2) {\r\n            return;\r\n        }\r\n        var runLength = 0;\r\n        if (remaining < DEFAULT_MIN_MERGE) {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            binaryInsertionSort(array, lo, hi, lo + runLength, compare);\r\n            return;\r\n        }\r\n        var ts = TimSort(array, compare);\r\n        var minRun = minRunLength(remaining);\r\n        do {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            if (runLength < minRun) {\r\n                var force = remaining;\r\n                if (force > minRun) {\r\n                    force = minRun;\r\n                }\r\n                binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\r\n                runLength = force;\r\n            }\r\n            ts.pushRun(lo, runLength);\r\n            ts.mergeRuns();\r\n            remaining -= runLength;\r\n            lo += runLength;\r\n        } while (remaining !== 0);\r\n        ts.forceMergeRuns();\r\n    }\n\n    var invalidZErrorLogged = false;\r\n    function logInvalidZError() {\r\n        if (invalidZErrorLogged) {\r\n            return;\r\n        }\r\n        invalidZErrorLogged = true;\r\n        console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\r\n    }\r\n    function shapeCompareFunc(a, b) {\r\n        if (a.zlevel === b.zlevel) {\r\n            if (a.z === b.z) {\r\n                return a.z2 - b.z2;\r\n            }\r\n            return a.z - b.z;\r\n        }\r\n        return a.zlevel - b.zlevel;\r\n    }\r\n    var Storage = (function () {\r\n        function Storage() {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            this.displayableSortFunc = shapeCompareFunc;\r\n        }\r\n        Storage.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._roots.length; i++) {\r\n                this._roots[i].traverse(cb, context);\r\n            }\r\n        };\r\n        Storage.prototype.getDisplayList = function (update, includeIgnore) {\r\n            includeIgnore = includeIgnore || false;\r\n            var displayList = this._displayList;\r\n            if (update || !displayList.length) {\r\n                this.updateDisplayList(includeIgnore);\r\n            }\r\n            return displayList;\r\n        };\r\n        Storage.prototype.updateDisplayList = function (includeIgnore) {\r\n            this._displayListLen = 0;\r\n            var roots = this._roots;\r\n            var displayList = this._displayList;\r\n            for (var i = 0, len = roots.length; i < len; i++) {\r\n                this._updateAndAddDisplayable(roots[i], null, includeIgnore);\r\n            }\r\n            displayList.length = this._displayListLen;\r\n            env.canvasSupported && sort(displayList, shapeCompareFunc);\r\n        };\r\n        Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\r\n            if (el.ignore && !includeIgnore) {\r\n                return;\r\n            }\r\n            el.beforeUpdate();\r\n            if (el.__dirty) {\r\n                el.update();\r\n            }\r\n            el.afterUpdate();\r\n            var userSetClipPath = el.getClipPath();\r\n            if (userSetClipPath) {\r\n                if (clipPaths) {\r\n                    clipPaths = clipPaths.slice();\r\n                }\r\n                else {\r\n                    clipPaths = [];\r\n                }\r\n                var currentClipPath = userSetClipPath;\r\n                var parentClipPath = el;\r\n                while (currentClipPath) {\r\n                    currentClipPath.parent = parentClipPath;\r\n                    currentClipPath.updateTransform();\r\n                    clipPaths.push(currentClipPath);\r\n                    parentClipPath = currentClipPath;\r\n                    currentClipPath = currentClipPath.getClipPath();\r\n                }\r\n            }\r\n            if (el.childrenRef) {\r\n                var children = el.childrenRef();\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    if (el.__dirty) {\r\n                        child.markRedraw();\r\n                    }\r\n                    this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\r\n                }\r\n                el.__dirty = 0;\r\n            }\r\n            else {\r\n                var disp = el;\r\n                if (clipPaths && clipPaths.length) {\r\n                    disp.__clipPaths = clipPaths;\r\n                }\r\n                else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\r\n                    disp.__clipPaths = [];\r\n                }\r\n                if (isNaN(disp.z)) {\r\n                    logInvalidZError();\r\n                    disp.z = 0;\r\n                }\r\n                if (isNaN(disp.z2)) {\r\n                    logInvalidZError();\r\n                    disp.z2 = 0;\r\n                }\r\n                if (isNaN(disp.zlevel)) {\r\n                    logInvalidZError();\r\n                    disp.zlevel = 0;\r\n                }\r\n                this._displayList[this._displayListLen++] = disp;\r\n            }\r\n            var textGuide = el.getTextGuideLine();\r\n            if (textGuide) {\r\n                this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\r\n            }\r\n            var textEl = el.getTextContent();\r\n            if (textEl) {\r\n                this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\r\n            }\r\n        };\r\n        Storage.prototype.addRoot = function (el) {\r\n            if (el.__zr && el.__zr.storage === this) {\r\n                return;\r\n            }\r\n            this._roots.push(el);\r\n        };\r\n        Storage.prototype.delRoot = function (el) {\r\n            if (el instanceof Array) {\r\n                for (var i = 0, l = el.length; i < l; i++) {\r\n                    this.delRoot(el[i]);\r\n                }\r\n                return;\r\n            }\r\n            var idx = indexOf(this._roots, el);\r\n            if (idx >= 0) {\r\n                this._roots.splice(idx, 1);\r\n            }\r\n        };\r\n        Storage.prototype.delAllRoots = function () {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            return;\r\n        };\r\n        Storage.prototype.getRoots = function () {\r\n            return this._roots;\r\n        };\r\n        Storage.prototype.dispose = function () {\r\n            this._displayList = null;\r\n            this._roots = null;\r\n        };\r\n        return Storage;\r\n    }());\n\n    var requestAnimationFrame;\r\n    requestAnimationFrame = (typeof window !== 'undefined'\r\n        && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\r\n        || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\r\n        || window.mozRequestAnimationFrame\r\n        || window.webkitRequestAnimationFrame) || function (func) {\r\n        return setTimeout(func, 16);\r\n    };\r\n    var requestAnimationFrame$1 = requestAnimationFrame;\n\n    var easing = {\r\n        linear: function (k) {\r\n            return k;\r\n        },\r\n        quadraticIn: function (k) {\r\n            return k * k;\r\n        },\r\n        quadraticOut: function (k) {\r\n            return k * (2 - k);\r\n        },\r\n        quadraticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k;\r\n            }\r\n            return -0.5 * (--k * (k - 2) - 1);\r\n        },\r\n        cubicIn: function (k) {\r\n            return k * k * k;\r\n        },\r\n        cubicOut: function (k) {\r\n            return --k * k * k + 1;\r\n        },\r\n        cubicInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k + 2);\r\n        },\r\n        quarticIn: function (k) {\r\n            return k * k * k * k;\r\n        },\r\n        quarticOut: function (k) {\r\n            return 1 - (--k * k * k * k);\r\n        },\r\n        quarticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k;\r\n            }\r\n            return -0.5 * ((k -= 2) * k * k * k - 2);\r\n        },\r\n        quinticIn: function (k) {\r\n            return k * k * k * k * k;\r\n        },\r\n        quinticOut: function (k) {\r\n            return --k * k * k * k * k + 1;\r\n        },\r\n        quinticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n        },\r\n        sinusoidalIn: function (k) {\r\n            return 1 - Math.cos(k * Math.PI / 2);\r\n        },\r\n        sinusoidalOut: function (k) {\r\n            return Math.sin(k * Math.PI / 2);\r\n        },\r\n        sinusoidalInOut: function (k) {\r\n            return 0.5 * (1 - Math.cos(Math.PI * k));\r\n        },\r\n        exponentialIn: function (k) {\r\n            return k === 0 ? 0 : Math.pow(1024, k - 1);\r\n        },\r\n        exponentialOut: function (k) {\r\n            return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\r\n        },\r\n        exponentialInOut: function (k) {\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * Math.pow(1024, k - 1);\r\n            }\r\n            return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\r\n        },\r\n        circularIn: function (k) {\r\n            return 1 - Math.sqrt(1 - k * k);\r\n        },\r\n        circularOut: function (k) {\r\n            return Math.sqrt(1 - (--k * k));\r\n        },\r\n        circularInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (Math.sqrt(1 - k * k) - 1);\r\n            }\r\n            return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n        },\r\n        elasticIn: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return -(a * Math.pow(2, 10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p));\r\n        },\r\n        elasticOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return (a * Math.pow(2, -10 * k)\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\r\n        },\r\n        elasticInOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\r\n                    * Math.sin((k - s) * (2 * Math.PI) / p));\r\n            }\r\n            return a * Math.pow(2, -10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n        },\r\n        backIn: function (k) {\r\n            var s = 1.70158;\r\n            return k * k * ((s + 1) * k - s);\r\n        },\r\n        backOut: function (k) {\r\n            var s = 1.70158;\r\n            return --k * k * ((s + 1) * k + s) + 1;\r\n        },\r\n        backInOut: function (k) {\r\n            var s = 1.70158 * 1.525;\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * (k * k * ((s + 1) * k - s));\r\n            }\r\n            return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n        },\r\n        bounceIn: function (k) {\r\n            return 1 - easing.bounceOut(1 - k);\r\n        },\r\n        bounceOut: function (k) {\r\n            if (k < (1 / 2.75)) {\r\n                return 7.5625 * k * k;\r\n            }\r\n            else if (k < (2 / 2.75)) {\r\n                return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n            }\r\n            else if (k < (2.5 / 2.75)) {\r\n                return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n            }\r\n            else {\r\n                return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n            }\r\n        },\r\n        bounceInOut: function (k) {\r\n            if (k < 0.5) {\r\n                return easing.bounceIn(k * 2) * 0.5;\r\n            }\r\n            return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\r\n        }\r\n    };\n\n    var Clip = (function () {\r\n        function Clip(opts) {\r\n            this._initialized = false;\r\n            this._startTime = 0;\r\n            this._pausedTime = 0;\r\n            this._paused = false;\r\n            this._life = opts.life || 1000;\r\n            this._delay = opts.delay || 0;\r\n            this.loop = opts.loop == null ? false : opts.loop;\r\n            this.gap = opts.gap || 0;\r\n            this.easing = opts.easing || 'linear';\r\n            this.onframe = opts.onframe;\r\n            this.ondestroy = opts.ondestroy;\r\n            this.onrestart = opts.onrestart;\r\n        }\r\n        Clip.prototype.step = function (globalTime, deltaTime) {\r\n            if (!this._initialized) {\r\n                this._startTime = globalTime + this._delay;\r\n                this._initialized = true;\r\n            }\r\n            if (this._paused) {\r\n                this._pausedTime += deltaTime;\r\n                return;\r\n            }\r\n            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\r\n            if (percent < 0) {\r\n                percent = 0;\r\n            }\r\n            percent = Math.min(percent, 1);\r\n            var easing$1 = this.easing;\r\n            var easingFunc = typeof easing$1 === 'string'\r\n                ? easing[easing$1] : easing$1;\r\n            var schedule = typeof easingFunc === 'function'\r\n                ? easingFunc(percent)\r\n                : percent;\r\n            this.onframe && this.onframe(schedule);\r\n            if (percent === 1) {\r\n                if (this.loop) {\r\n                    this._restart(globalTime);\r\n                    this.onrestart && this.onrestart();\r\n                }\r\n                else {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Clip.prototype._restart = function (globalTime) {\r\n            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\r\n            this._startTime = globalTime - remainder + this.gap;\r\n            this._pausedTime = 0;\r\n        };\r\n        Clip.prototype.pause = function () {\r\n            this._paused = true;\r\n        };\r\n        Clip.prototype.resume = function () {\r\n            this._paused = false;\r\n        };\r\n        return Clip;\r\n    }());\n\n    var Entry = (function () {\r\n        function Entry(val) {\r\n            this.value = val;\r\n        }\r\n        return Entry;\r\n    }());\r\n    var LinkedList = (function () {\r\n        function LinkedList() {\r\n            this._len = 0;\r\n        }\r\n        LinkedList.prototype.insert = function (val) {\r\n            var entry = new Entry(val);\r\n            this.insertEntry(entry);\r\n            return entry;\r\n        };\r\n        LinkedList.prototype.insertEntry = function (entry) {\r\n            if (!this.head) {\r\n                this.head = this.tail = entry;\r\n            }\r\n            else {\r\n                this.tail.next = entry;\r\n                entry.prev = this.tail;\r\n                entry.next = null;\r\n                this.tail = entry;\r\n            }\r\n            this._len++;\r\n        };\r\n        LinkedList.prototype.remove = function (entry) {\r\n            var prev = entry.prev;\r\n            var next = entry.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this.head = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this.tail = prev;\r\n            }\r\n            entry.next = entry.prev = null;\r\n            this._len--;\r\n        };\r\n        LinkedList.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        LinkedList.prototype.clear = function () {\r\n            this.head = this.tail = null;\r\n            this._len = 0;\r\n        };\r\n        return LinkedList;\r\n    }());\r\n    var LRU = (function () {\r\n        function LRU(maxSize) {\r\n            this._list = new LinkedList();\r\n            this._maxSize = 10;\r\n            this._map = {};\r\n            this._maxSize = maxSize;\r\n        }\r\n        LRU.prototype.put = function (key, value) {\r\n            var list = this._list;\r\n            var map = this._map;\r\n            var removed = null;\r\n            if (map[key] == null) {\r\n                var len = list.len();\r\n                var entry = this._lastRemovedEntry;\r\n                if (len >= this._maxSize && len > 0) {\r\n                    var leastUsedEntry = list.head;\r\n                    list.remove(leastUsedEntry);\r\n                    delete map[leastUsedEntry.key];\r\n                    removed = leastUsedEntry.value;\r\n                    this._lastRemovedEntry = leastUsedEntry;\r\n                }\r\n                if (entry) {\r\n                    entry.value = value;\r\n                }\r\n                else {\r\n                    entry = new Entry(value);\r\n                }\r\n                entry.key = key;\r\n                list.insertEntry(entry);\r\n                map[key] = entry;\r\n            }\r\n            return removed;\r\n        };\r\n        LRU.prototype.get = function (key) {\r\n            var entry = this._map[key];\r\n            var list = this._list;\r\n            if (entry != null) {\r\n                if (entry !== list.tail) {\r\n                    list.remove(entry);\r\n                    list.insertEntry(entry);\r\n                }\r\n                return entry.value;\r\n            }\r\n        };\r\n        LRU.prototype.clear = function () {\r\n            this._list.clear();\r\n            this._map = {};\r\n        };\r\n        LRU.prototype.len = function () {\r\n            return this._list.len();\r\n        };\r\n        return LRU;\r\n    }());\n\n    var kCSSColorTable = {\r\n        'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\r\n        'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\r\n        'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\r\n        'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\r\n        'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\r\n        'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\r\n        'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\r\n        'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\r\n        'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\r\n        'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\r\n        'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\r\n        'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\r\n        'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\r\n        'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\r\n        'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\r\n        'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\r\n        'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\r\n        'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\r\n        'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\r\n        'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\r\n        'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\r\n        'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\r\n        'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\r\n        'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\r\n        'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\r\n        'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\r\n        'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\r\n        'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\r\n        'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\r\n        'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\r\n        'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\r\n        'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\r\n        'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\r\n        'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\r\n        'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\r\n        'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\r\n        'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\r\n        'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\r\n        'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\r\n        'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\r\n        'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\r\n        'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\r\n        'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\r\n        'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\r\n        'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\r\n        'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\r\n        'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\r\n        'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\r\n        'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\r\n        'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\r\n        'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\r\n        'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\r\n        'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\r\n        'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\r\n        'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\r\n        'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\r\n        'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\r\n        'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\r\n        'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\r\n        'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\r\n        'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\r\n        'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\r\n        'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\r\n        'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\r\n        'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\r\n        'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\r\n        'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\r\n        'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\r\n        'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\r\n        'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\r\n        'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\r\n        'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\r\n        'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\r\n        'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\r\n    };\r\n    function clampCssByte(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 255 ? 255 : i;\r\n    }\r\n    function clampCssFloat(f) {\r\n        return f < 0 ? 0 : f > 1 ? 1 : f;\r\n    }\r\n    function parseCssInt(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssByte(parseFloat(str) / 100 * 255);\r\n        }\r\n        return clampCssByte(parseInt(str, 10));\r\n    }\r\n    function parseCssFloat(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssFloat(parseFloat(str) / 100);\r\n        }\r\n        return clampCssFloat(parseFloat(str));\r\n    }\r\n    function cssHueToRgb(m1, m2, h) {\r\n        if (h < 0) {\r\n            h += 1;\r\n        }\r\n        else if (h > 1) {\r\n            h -= 1;\r\n        }\r\n        if (h * 6 < 1) {\r\n            return m1 + (m2 - m1) * h * 6;\r\n        }\r\n        if (h * 2 < 1) {\r\n            return m2;\r\n        }\r\n        if (h * 3 < 2) {\r\n            return m1 + (m2 - m1) * (2 / 3 - h) * 6;\r\n        }\r\n        return m1;\r\n    }\r\n    function setRgba(out, r, g, b, a) {\r\n        out[0] = r;\r\n        out[1] = g;\r\n        out[2] = b;\r\n        out[3] = a;\r\n        return out;\r\n    }\r\n    function copyRgba(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    var colorCache = new LRU(20);\r\n    var lastRemovedArr = null;\r\n    function putToCache(colorStr, rgbaArr) {\r\n        if (lastRemovedArr) {\r\n            copyRgba(lastRemovedArr, rgbaArr);\r\n        }\r\n        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\r\n    }\r\n    function parse(colorStr, rgbaArr) {\r\n        if (!colorStr) {\r\n            return;\r\n        }\r\n        rgbaArr = rgbaArr || [];\r\n        var cached = colorCache.get(colorStr);\r\n        if (cached) {\r\n            return copyRgba(rgbaArr, cached);\r\n        }\r\n        colorStr = colorStr + '';\r\n        var str = colorStr.replace(/ /g, '').toLowerCase();\r\n        if (str in kCSSColorTable) {\r\n            copyRgba(rgbaArr, kCSSColorTable[str]);\r\n            putToCache(colorStr, rgbaArr);\r\n            return rgbaArr;\r\n        }\r\n        if (str.charAt(0) === '#') {\r\n            if (str.length === 4) {\r\n                var iv = parseInt(str.substr(1), 16);\r\n                if (!(iv >= 0 && iv <= 0xfff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            else if (str.length === 7) {\r\n                var iv = parseInt(str.substr(1), 16);\r\n                if (!(iv >= 0 && iv <= 0xffffff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            return;\r\n        }\r\n        var op = str.indexOf('(');\r\n        var ep = str.indexOf(')');\r\n        if (op !== -1 && ep + 1 === str.length) {\r\n            var fname = str.substr(0, op);\r\n            var params = str.substr(op + 1, ep - (op + 1)).split(',');\r\n            var alpha = 1;\r\n            switch (fname) {\r\n                case 'rgba':\r\n                    if (params.length !== 4) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    alpha = parseCssFloat(params.pop());\r\n                case 'rgb':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsla':\r\n                    if (params.length !== 4) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    params[3] = parseCssFloat(params[3]);\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsl':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                default:\r\n                    return;\r\n            }\r\n        }\r\n        setRgba(rgbaArr, 0, 0, 0, 1);\r\n        return;\r\n    }\r\n    function hsla2rgba(hsla, rgba) {\r\n        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\r\n        var s = parseCssFloat(hsla[1]);\r\n        var l = parseCssFloat(hsla[2]);\r\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n        var m1 = l * 2 - m2;\r\n        rgba = rgba || [];\r\n        setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\r\n        if (hsla.length === 4) {\r\n            rgba[3] = hsla[3];\r\n        }\r\n        return rgba;\r\n    }\r\n    function lift(color, level) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            for (var i = 0; i < 3; i++) {\r\n                if (level < 0) {\r\n                    colorArr[i] = colorArr[i] * (1 - level) | 0;\r\n                }\r\n                else {\r\n                    colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\r\n                }\r\n                if (colorArr[i] > 255) {\r\n                    colorArr[i] = 255;\r\n                }\r\n                else if (colorArr[i] < 0) {\r\n                    colorArr[i] = 0;\r\n                }\r\n            }\r\n            return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\r\n        }\r\n    }\r\n    function stringify(arrColor, type) {\r\n        if (!arrColor || !arrColor.length) {\r\n            return;\r\n        }\r\n        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\r\n        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\r\n            colorStr += ',' + arrColor[3];\r\n        }\r\n        return type + '(' + colorStr + ')';\r\n    }\r\n    function lum(color, backgroundLum) {\r\n        var arr = parse(color);\r\n        return arr\r\n            ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\r\n                + (1 - arr[3]) * backgroundLum\r\n            : 0;\r\n    }\n\n    var arraySlice = Array.prototype.slice;\r\n    function interpolateNumber(p0, p1, percent) {\r\n        return (p1 - p0) * percent + p0;\r\n    }\r\n    function step(p0, p1, percent) {\r\n        return percent > 0.5 ? p1 : p0;\r\n    }\r\n    function interpolate1DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = interpolateNumber(p0[i], p1[i], percent);\r\n        }\r\n    }\r\n    function interpolate2DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\r\n            }\r\n        }\r\n    }\r\n    function add1DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = p0[i] + p1[i] * sign;\r\n        }\r\n        return out;\r\n    }\r\n    function add2DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = p0[i][j] + p1[i][j] * sign;\r\n            }\r\n        }\r\n        return out;\r\n    }\r\n    function fillArray(val0, val1, arrDim) {\r\n        var arr0 = val0;\r\n        var arr1 = val1;\r\n        if (!arr0.push || !arr1.push) {\r\n            return;\r\n        }\r\n        var arr0Len = arr0.length;\r\n        var arr1Len = arr1.length;\r\n        if (arr0Len !== arr1Len) {\r\n            var isPreviousLarger = arr0Len > arr1Len;\r\n            if (isPreviousLarger) {\r\n                arr0.length = arr1Len;\r\n            }\r\n            else {\r\n                for (var i = arr0Len; i < arr1Len; i++) {\r\n                    arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\r\n                }\r\n            }\r\n        }\r\n        var len2 = arr0[0] && arr0[0].length;\r\n        for (var i = 0; i < arr0.length; i++) {\r\n            if (arrDim === 1) {\r\n                if (isNaN(arr0[i])) {\r\n                    arr0[i] = arr1[i];\r\n                }\r\n            }\r\n            else {\r\n                for (var j = 0; j < len2; j++) {\r\n                    if (isNaN(arr0[i][j])) {\r\n                        arr0[i][j] = arr1[i][j];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function is1DArraySame(arr0, arr1) {\r\n        var len = arr0.length;\r\n        if (len !== arr1.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < len; i++) {\r\n            if (arr0[i] !== arr1[i]) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\r\n        }\r\n    }\r\n    function catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        var len2 = p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[1] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\r\n            }\r\n        }\r\n    }\r\n    function cloneValue(value) {\r\n        if (isArrayLike(value)) {\r\n            var len = value.length;\r\n            if (isArrayLike(value[0])) {\r\n                var ret = [];\r\n                for (var i = 0; i < len; i++) {\r\n                    ret.push(arraySlice.call(value[i]));\r\n                }\r\n                return ret;\r\n            }\r\n            return arraySlice.call(value);\r\n        }\r\n        return value;\r\n    }\r\n    function rgba2String(rgba) {\r\n        rgba[0] = Math.floor(rgba[0]);\r\n        rgba[1] = Math.floor(rgba[1]);\r\n        rgba[2] = Math.floor(rgba[2]);\r\n        return 'rgba(' + rgba.join(',') + ')';\r\n    }\r\n    function guessArrayDim(value) {\r\n        return isArrayLike(value && value[0]) ? 2 : 1;\r\n    }\r\n    var tmpRgba = [0, 0, 0, 0];\r\n    var Track = (function () {\r\n        function Track(propName) {\r\n            this.keyframes = [];\r\n            this.maxTime = 0;\r\n            this.arrDim = 0;\r\n            this.interpolable = true;\r\n            this._needsSort = false;\r\n            this._isAllValueEqual = true;\r\n            this._lastFrame = 0;\r\n            this._lastFramePercent = 0;\r\n            this.propName = propName;\r\n        }\r\n        Track.prototype.isFinished = function () {\r\n            return this._finished;\r\n        };\r\n        Track.prototype.setFinished = function () {\r\n            this._finished = true;\r\n        };\r\n        Track.prototype.needsAnimate = function () {\r\n            return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\r\n        };\r\n        Track.prototype.getAdditiveTrack = function () {\r\n            return this._additiveTrack;\r\n        };\r\n        Track.prototype.addKeyframe = function (time, value) {\r\n            if (time >= this.maxTime) {\r\n                this.maxTime = time;\r\n            }\r\n            else {\r\n                this._needsSort = true;\r\n            }\r\n            var keyframes = this.keyframes;\r\n            var len = keyframes.length;\r\n            if (this.interpolable) {\r\n                if (isArrayLike(value)) {\r\n                    var arrayDim = guessArrayDim(value);\r\n                    if (len > 0 && this.arrDim !== arrayDim) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (arrayDim === 1 && typeof value[0] !== 'number'\r\n                        || arrayDim === 2 && typeof value[0][0] !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this._isAllValueEqual) {\r\n                            if (arrayDim === 1) {\r\n                                if (!is1DArraySame(value, lastFrame.value)) {\r\n                                    this._isAllValueEqual = false;\r\n                                }\r\n                            }\r\n                            else {\r\n                                this._isAllValueEqual = false;\r\n                            }\r\n                        }\r\n                    }\r\n                    this.arrDim = arrayDim;\r\n                }\r\n                else {\r\n                    if (this.arrDim > 0) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (typeof value === 'string') {\r\n                        var colorArray = parse(value);\r\n                        if (colorArray) {\r\n                            value = colorArray;\r\n                            this.isValueColor = true;\r\n                        }\r\n                        else {\r\n                            this.interpolable = false;\r\n                        }\r\n                    }\r\n                    else if (typeof value !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (this._isAllValueEqual && len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                        else if (lastFrame.value !== value) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            var kf = {\r\n                time: time,\r\n                value: value,\r\n                percent: 0\r\n            };\r\n            this.keyframes.push(kf);\r\n            return kf;\r\n        };\r\n        Track.prototype.prepare = function (additiveTrack) {\r\n            var kfs = this.keyframes;\r\n            if (this._needsSort) {\r\n                kfs.sort(function (a, b) {\r\n                    return a.time - b.time;\r\n                });\r\n            }\r\n            var arrDim = this.arrDim;\r\n            var kfsLen = kfs.length;\r\n            var lastKf = kfs[kfsLen - 1];\r\n            for (var i = 0; i < kfsLen; i++) {\r\n                kfs[i].percent = kfs[i].time / this.maxTime;\r\n                if (arrDim > 0 && i !== kfsLen - 1) {\r\n                    fillArray(kfs[i].value, lastKf.value, arrDim);\r\n                }\r\n            }\r\n            if (additiveTrack\r\n                && this.interpolable\r\n                && arrDim === additiveTrack.arrDim\r\n                && this.isValueColor === additiveTrack.isValueColor\r\n                && !additiveTrack._finished) {\r\n                this._additiveTrack = additiveTrack;\r\n                var startValue = kfs[0].value;\r\n                for (var i = 0; i < kfsLen; i++) {\r\n                    if (arrDim === 0) {\r\n                        if (this.isValueColor) {\r\n                            kfs[i].additiveValue\r\n                                = add1DArray([], kfs[i].value, startValue, -1);\r\n                        }\r\n                        else {\r\n                            kfs[i].additiveValue = kfs[i].value - startValue;\r\n                        }\r\n                    }\r\n                    else if (arrDim === 1) {\r\n                        kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                    else if (arrDim === 2) {\r\n                        kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Track.prototype.step = function (target, percent) {\r\n            if (this._finished) {\r\n                return;\r\n            }\r\n            if (this._additiveTrack && this._additiveTrack._finished) {\r\n                this._additiveTrack = null;\r\n            }\r\n            var isAdditive = this._additiveTrack != null;\r\n            var valueKey = isAdditive ? 'additiveValue' : 'value';\r\n            var keyframes = this.keyframes;\r\n            var kfsNum = this.keyframes.length;\r\n            var propName = this.propName;\r\n            var arrDim = this.arrDim;\r\n            var isValueColor = this.isValueColor;\r\n            var frameIdx;\r\n            if (percent < 0) {\r\n                frameIdx = 0;\r\n            }\r\n            else if (percent < this._lastFramePercent) {\r\n                var start = Math.min(this._lastFrame + 1, kfsNum - 1);\r\n                for (frameIdx = start; frameIdx >= 0; frameIdx--) {\r\n                    if (keyframes[frameIdx].percent <= percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx, kfsNum - 2);\r\n            }\r\n            else {\r\n                for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\r\n                    if (keyframes[frameIdx].percent > percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\r\n            }\r\n            var nextFrame = keyframes[frameIdx + 1];\r\n            var frame = keyframes[frameIdx];\r\n            if (!(frame && nextFrame)) {\r\n                return;\r\n            }\r\n            this._lastFrame = frameIdx;\r\n            this._lastFramePercent = percent;\r\n            var range = (nextFrame.percent - frame.percent);\r\n            if (range === 0) {\r\n                return;\r\n            }\r\n            var w = (percent - frame.percent) / range;\r\n            var targetArr = isAdditive ? this._additiveValue\r\n                : (isValueColor ? tmpRgba : target[propName]);\r\n            if ((arrDim > 0 || isValueColor) && !targetArr) {\r\n                targetArr = this._additiveValue = [];\r\n            }\r\n            if (this.useSpline) {\r\n                var p1 = keyframes[frameIdx][valueKey];\r\n                var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\r\n                var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\r\n                var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\r\n                        : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                }\r\n                else if (isValueColor) {\r\n                    catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = p2;\r\n                    }\r\n                    else {\r\n                        value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\r\n                        : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                }\r\n                else if (isValueColor) {\r\n                    interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = step(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    else {\r\n                        value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            if (isAdditive) {\r\n                this._addToTarget(target);\r\n            }\r\n        };\r\n        Track.prototype._addToTarget = function (target) {\r\n            var arrDim = this.arrDim;\r\n            var propName = this.propName;\r\n            if (arrDim === 0) {\r\n                if (this.isValueColor) {\r\n                    parse(target[propName], tmpRgba);\r\n                    add1DArray(tmpRgba, tmpRgba, this._additiveValue, 1);\r\n                    target[propName] = rgba2String(tmpRgba);\r\n                }\r\n                else {\r\n                    target[propName] = target[propName] + this._additiveValue;\r\n                }\r\n            }\r\n            else if (arrDim === 1) {\r\n                add1DArray(target[propName], target[propName], this._additiveValue, 1);\r\n            }\r\n            else if (arrDim === 2) {\r\n                add2DArray(target[propName], target[propName], this._additiveValue, 1);\r\n            }\r\n        };\r\n        return Track;\r\n    }());\r\n    var Animator = (function () {\r\n        function Animator(target, loop, additiveTo) {\r\n            this._tracks = {};\r\n            this._trackKeys = [];\r\n            this._delay = 0;\r\n            this._maxTime = 0;\r\n            this._paused = false;\r\n            this._started = 0;\r\n            this._doneList = [];\r\n            this._onframeList = [];\r\n            this._clip = null;\r\n            this._target = target;\r\n            this._loop = loop;\r\n            if (loop) {\r\n                logError('Can\\' use additive animation on looped animation.');\r\n                return;\r\n            }\r\n            this._additiveAnimators = additiveTo;\r\n        }\r\n        Animator.prototype.getTarget = function () {\r\n            return this._target;\r\n        };\r\n        Animator.prototype.changeTarget = function (target) {\r\n            this._target = target;\r\n        };\r\n        Animator.prototype.when = function (time, props) {\r\n            return this.whenWithKeys(time, props, keys(props));\r\n        };\r\n        Animator.prototype.whenWithKeys = function (time, props, propNames) {\r\n            var tracks = this._tracks;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var propName = propNames[i];\r\n                var track = tracks[propName];\r\n                if (!track) {\r\n                    track = tracks[propName] = new Track(propName);\r\n                    var initialValue = void 0;\r\n                    var additiveTrack = this._getAdditiveTrack(propName);\r\n                    if (additiveTrack) {\r\n                        var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\r\n                        initialValue = lastFinalKf && lastFinalKf.value;\r\n                        if (additiveTrack.isValueColor && initialValue) {\r\n                            initialValue = rgba2String(initialValue);\r\n                        }\r\n                    }\r\n                    else {\r\n                        initialValue = this._target[propName];\r\n                    }\r\n                    if (initialValue == null) {\r\n                        continue;\r\n                    }\r\n                    if (time !== 0) {\r\n                        track.addKeyframe(0, cloneValue(initialValue));\r\n                    }\r\n                    this._trackKeys.push(propName);\r\n                }\r\n                track.addKeyframe(time, cloneValue(props[propName]));\r\n            }\r\n            this._maxTime = Math.max(this._maxTime, time);\r\n            return this;\r\n        };\r\n        Animator.prototype.during = function (callback) {\r\n            this._onframeList.push(callback);\r\n            return this;\r\n        };\r\n        Animator.prototype.pause = function () {\r\n            this._clip.pause();\r\n            this._paused = true;\r\n        };\r\n        Animator.prototype.resume = function () {\r\n            this._clip.resume();\r\n            this._paused = false;\r\n        };\r\n        Animator.prototype.isPaused = function () {\r\n            return !!this._paused;\r\n        };\r\n        Animator.prototype._doneCallback = function () {\r\n            this._tracks = null;\r\n            this._clip = null;\r\n            var doneList = this._doneList;\r\n            var len = doneList.length;\r\n            for (var i = 0; i < len; i++) {\r\n                doneList[i].call(this);\r\n            }\r\n        };\r\n        Animator.prototype._getAdditiveTrack = function (trackName) {\r\n            var additiveTrack;\r\n            var additiveAnimators = this._additiveAnimators;\r\n            if (additiveAnimators) {\r\n                for (var i = 0; i < additiveAnimators.length; i++) {\r\n                    var track = additiveAnimators[i].getTrack(trackName);\r\n                    if (track) {\r\n                        additiveTrack = track;\r\n                    }\r\n                }\r\n            }\r\n            return additiveTrack;\r\n        };\r\n        Animator.prototype.start = function (easing, forceAnimate) {\r\n            if (this._started > 0) {\r\n                return;\r\n            }\r\n            this._started = 1;\r\n            var self = this;\r\n            var tracks = [];\r\n            for (var i = 0; i < this._trackKeys.length; i++) {\r\n                var propName = this._trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                var additiveTrack = this._getAdditiveTrack(propName);\r\n                var kfs = track.keyframes;\r\n                track.prepare(additiveTrack);\r\n                if (track.needsAnimate()) {\r\n                    tracks.push(track);\r\n                }\r\n                else if (!track.interpolable) {\r\n                    var lastKf = kfs[kfs.length - 1];\r\n                    if (lastKf) {\r\n                        self._target[track.propName] = lastKf.value;\r\n                    }\r\n                }\r\n            }\r\n            if (tracks.length || forceAnimate) {\r\n                var clip = new Clip({\r\n                    life: this._maxTime,\r\n                    loop: this._loop,\r\n                    delay: this._delay,\r\n                    onframe: function (percent) {\r\n                        self._started = 2;\r\n                        var additiveAnimators = self._additiveAnimators;\r\n                        if (additiveAnimators) {\r\n                            var stillHasAdditiveAnimator = false;\r\n                            for (var i = 0; i < additiveAnimators.length; i++) {\r\n                                if (additiveAnimators[i]._clip) {\r\n                                    stillHasAdditiveAnimator = true;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (!stillHasAdditiveAnimator) {\r\n                                self._additiveAnimators = null;\r\n                            }\r\n                        }\r\n                        for (var i = 0; i < tracks.length; i++) {\r\n                            tracks[i].step(self._target, percent);\r\n                        }\r\n                        for (var i = 0; i < self._onframeList.length; i++) {\r\n                            self._onframeList[i](self._target, percent);\r\n                        }\r\n                    },\r\n                    ondestroy: function () {\r\n                        for (var i = 0; i < tracks.length; i++) {\r\n                            tracks[i].setFinished();\r\n                        }\r\n                        self._doneCallback();\r\n                    }\r\n                });\r\n                this._clip = clip;\r\n                if (this.animation) {\r\n                    this.animation.addClip(clip);\r\n                }\r\n                if (easing && easing !== 'spline') {\r\n                    clip.easing = easing;\r\n                }\r\n            }\r\n            else {\r\n                this._doneCallback();\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.stop = function (forwardToLast) {\r\n            if (!this._clip) {\r\n                return;\r\n            }\r\n            var clip = this._clip;\r\n            var animation = this.animation;\r\n            if (forwardToLast) {\r\n                clip.onframe(1);\r\n            }\r\n            if (animation) {\r\n                animation.removeClip(clip);\r\n            }\r\n            this._clip = null;\r\n        };\r\n        Animator.prototype.delay = function (time) {\r\n            this._delay = time;\r\n            return this;\r\n        };\r\n        Animator.prototype.done = function (cb) {\r\n            if (cb) {\r\n                this._doneList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.getClip = function () {\r\n            return this._clip;\r\n        };\r\n        Animator.prototype.getTrack = function (propName) {\r\n            return this._tracks[propName];\r\n        };\r\n        Animator.prototype.stopTracks = function (propNames, forwardToLast) {\r\n            if (!propNames.length || !this._clip) {\r\n                return true;\r\n            }\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var track = tracks[propNames[i]];\r\n                if (track) {\r\n                    if (forwardToLast) {\r\n                        track.step(this._target, 1);\r\n                    }\r\n                    else if (this._started === 1) {\r\n                        track.step(this._target, 0);\r\n                    }\r\n                    track.setFinished();\r\n                }\r\n            }\r\n            var allAborted = true;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                if (!tracks[tracksKeys[i]].isFinished()) {\r\n                    allAborted = false;\r\n                    break;\r\n                }\r\n            }\r\n            if (allAborted && this.animation) {\r\n                this.animation.removeClip(this._clip);\r\n                this._clip = null;\r\n            }\r\n            return allAborted;\r\n        };\r\n        Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            trackKeys = trackKeys || this._trackKeys;\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track || track.isFinished()) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                var lastKf = kfs[kfs.length - 1];\r\n                if (lastKf) {\r\n                    var val = cloneValue(lastKf.value);\r\n                    if (track.isValueColor) {\r\n                        val = rgba2String(val);\r\n                    }\r\n                    target[propName] = val;\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\r\n            trackKeys = trackKeys || keys(finalProps);\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                if (kfs.length > 1) {\r\n                    var lastKf = kfs.pop();\r\n                    track.addKeyframe(lastKf.time, finalProps[propName]);\r\n                    track.prepare(track.getAdditiveTrack());\r\n                }\r\n            }\r\n        };\r\n        return Animator;\r\n    }());\n\n    var Animation = (function (_super) {\r\n        __extends(Animation, _super);\r\n        function Animation(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this._running = false;\r\n            _this._time = 0;\r\n            _this._pausedTime = 0;\r\n            _this._pauseStart = 0;\r\n            _this._paused = false;\r\n            opts = opts || {};\r\n            _this.stage = opts.stage || {};\r\n            _this.onframe = opts.onframe || function () { };\r\n            return _this;\r\n        }\r\n        Animation.prototype.addClip = function (clip) {\r\n            if (clip.animation) {\r\n                this.removeClip(clip);\r\n            }\r\n            if (!this._clipsHead) {\r\n                this._clipsHead = this._clipsTail = clip;\r\n            }\r\n            else {\r\n                this._clipsTail.next = clip;\r\n                clip.prev = this._clipsTail;\r\n                clip.next = null;\r\n                this._clipsTail = clip;\r\n            }\r\n            clip.animation = this;\r\n        };\r\n        Animation.prototype.addAnimator = function (animator) {\r\n            animator.animation = this;\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.addClip(clip);\r\n            }\r\n        };\r\n        Animation.prototype.removeClip = function (clip) {\r\n            if (!clip.animation) {\r\n                return;\r\n            }\r\n            var prev = clip.prev;\r\n            var next = clip.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this._clipsHead = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this._clipsTail = prev;\r\n            }\r\n            clip.next = clip.prev = clip.animation = null;\r\n        };\r\n        Animation.prototype.removeAnimator = function (animator) {\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.removeClip(clip);\r\n            }\r\n            animator.animation = null;\r\n        };\r\n        Animation.prototype.update = function () {\r\n            var time = new Date().getTime() - this._pausedTime;\r\n            var delta = time - this._time;\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                var finished = clip.step(time, delta);\r\n                if (finished) {\r\n                    clip.ondestroy && clip.ondestroy();\r\n                    this.removeClip(clip);\r\n                    clip = nextClip;\r\n                }\r\n                else {\r\n                    clip = nextClip;\r\n                }\r\n            }\r\n            this._time = time;\r\n            this.onframe(delta);\r\n            this.trigger('frame', delta);\r\n            if (this.stage.update) {\r\n                this.stage.update();\r\n            }\r\n        };\r\n        Animation.prototype._startLoop = function () {\r\n            var self = this;\r\n            this._running = true;\r\n            function step() {\r\n                if (self._running) {\r\n                    requestAnimationFrame$1(step);\r\n                    !self._paused && self.update();\r\n                }\r\n            }\r\n            requestAnimationFrame$1(step);\r\n        };\r\n        Animation.prototype.start = function () {\r\n            if (this._running) {\r\n                return;\r\n            }\r\n            this._time = new Date().getTime();\r\n            this._pausedTime = 0;\r\n            this._startLoop();\r\n        };\r\n        Animation.prototype.stop = function () {\r\n            this._running = false;\r\n        };\r\n        Animation.prototype.pause = function () {\r\n            if (!this._paused) {\r\n                this._pauseStart = new Date().getTime();\r\n                this._paused = true;\r\n            }\r\n        };\r\n        Animation.prototype.resume = function () {\r\n            if (this._paused) {\r\n                this._pausedTime += (new Date().getTime()) - this._pauseStart;\r\n                this._paused = false;\r\n            }\r\n        };\r\n        Animation.prototype.clear = function () {\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                clip.prev = clip.next = clip.animation = null;\r\n                clip = nextClip;\r\n            }\r\n            this._clipsHead = this._clipsTail = null;\r\n        };\r\n        Animation.prototype.isFinished = function () {\r\n            return this._clipsHead == null;\r\n        };\r\n        Animation.prototype.animate = function (target, options) {\r\n            options = options || {};\r\n            this.start();\r\n            var animator = new Animator(target, options.loop);\r\n            this.addAnimator(animator);\r\n            return animator;\r\n        };\r\n        return Animation;\r\n    }(Eventful));\n\n    var TOUCH_CLICK_DELAY = 300;\r\n    var globalEventSupported = env.domSupported;\r\n    var localNativeListenerNames = (function () {\r\n        var mouseHandlerNames = [\r\n            'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\r\n            'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n        ];\r\n        var touchHandlerNames = [\r\n            'touchstart', 'touchend', 'touchmove'\r\n        ];\r\n        var pointerEventNameMap = {\r\n            pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\r\n        };\r\n        var pointerHandlerNames = map(mouseHandlerNames, function (name) {\r\n            var nm = name.replace('mouse', 'pointer');\r\n            return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\r\n        });\r\n        return {\r\n            mouse: mouseHandlerNames,\r\n            touch: touchHandlerNames,\r\n            pointer: pointerHandlerNames\r\n        };\r\n    })();\r\n    var globalNativeListenerNames = {\r\n        mouse: ['mousemove', 'mouseup'],\r\n        pointer: ['pointermove', 'pointerup']\r\n    };\r\n    var wheelEventSupported = false;\r\n    function isPointerFromTouch(event) {\r\n        var pointerType = event.pointerType;\r\n        return pointerType === 'pen' || pointerType === 'touch';\r\n    }\r\n    function setTouchTimer(scope) {\r\n        scope.touching = true;\r\n        if (scope.touchTimer != null) {\r\n            clearTimeout(scope.touchTimer);\r\n            scope.touchTimer = null;\r\n        }\r\n        scope.touchTimer = setTimeout(function () {\r\n            scope.touching = false;\r\n            scope.touchTimer = null;\r\n        }, 700);\r\n    }\r\n    function markTouch(event) {\r\n        event && (event.zrByTouch = true);\r\n    }\r\n    function normalizeGlobalEvent(instance, event) {\r\n        return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n    }\r\n    function isLocalEl(instance, el) {\r\n        var elTmp = el;\r\n        var isLocal = false;\r\n        while (elTmp && elTmp.nodeType !== 9\r\n            && !(isLocal = elTmp.domBelongToZr\r\n                || (elTmp !== el && elTmp === instance.painterRoot))) {\r\n            elTmp = elTmp.parentNode;\r\n        }\r\n        return isLocal;\r\n    }\r\n    var FakeGlobalEvent = (function () {\r\n        function FakeGlobalEvent(instance, event) {\r\n            this.stopPropagation = noop;\r\n            this.stopImmediatePropagation = noop;\r\n            this.preventDefault = noop;\r\n            this.type = event.type;\r\n            this.target = this.currentTarget = instance.dom;\r\n            this.pointerType = event.pointerType;\r\n            this.clientX = event.clientX;\r\n            this.clientY = event.clientY;\r\n        }\r\n        return FakeGlobalEvent;\r\n    }());\r\n    var localDOMHandlers = {\r\n        mousedown: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__mayPointerCapture = [event.zrX, event.zrY];\r\n            this.trigger('mousedown', event);\r\n        },\r\n        mousemove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            var downPoint = this.__mayPointerCapture;\r\n            if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\r\n                this.__togglePointerCapture(true);\r\n            }\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n        },\r\n        mouseout: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            if (this.__pointerCapturing) {\r\n                event.zrEventControl = 'no_globalout';\r\n            }\r\n            var element = event.toElement || event.relatedTarget;\r\n            event.zrIsToLocalDOM = isLocalEl(this, element);\r\n            this.trigger('mouseout', event);\r\n        },\r\n        wheel: function (event) {\r\n            wheelEventSupported = true;\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        mousewheel: function (event) {\r\n            if (wheelEventSupported) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        touchstart: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.__lastTouchMoment = new Date();\r\n            this.handler.processGesture(event, 'start');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        touchmove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'change');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n        },\r\n        touchend: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'end');\r\n            localDOMHandlers.mouseup.call(this, event);\r\n            if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\r\n                localDOMHandlers.click.call(this, event);\r\n            }\r\n        },\r\n        pointerdown: function (event) {\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            localDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        pointerout: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mouseout.call(this, event);\r\n            }\r\n        }\r\n    };\r\n    each(['click', 'dblclick', 'contextmenu'], function (name) {\r\n        localDOMHandlers[name] = function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger(name, event);\r\n        };\r\n    });\r\n    var globalDOMHandlers = {\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                globalDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            globalDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        mousemove: function (event) {\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            var pointerCaptureReleasing = this.__pointerCapturing;\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n            if (pointerCaptureReleasing) {\r\n                event.zrEventControl = 'only_globalout';\r\n                this.trigger('mouseout', event);\r\n            }\r\n        }\r\n    };\r\n    function mountLocalDOMEventListeners(instance, scope) {\r\n        var domHandlers = scope.domHandlers;\r\n        if (env.pointerEventsSupported) {\r\n            each(localNativeListenerNames.pointer, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    domHandlers[nativeEventName].call(instance, event);\r\n                });\r\n            });\r\n        }\r\n        else {\r\n            if (env.touchEventsSupported) {\r\n                each(localNativeListenerNames.touch, function (nativeEventName) {\r\n                    mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                        setTouchTimer(scope);\r\n                    });\r\n                });\r\n            }\r\n            each(localNativeListenerNames.mouse, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    event = getNativeEvent(event);\r\n                    if (!scope.touching) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n    function mountGlobalDOMEventListeners(instance, scope) {\r\n        if (env.pointerEventsSupported) {\r\n            each(globalNativeListenerNames.pointer, mount);\r\n        }\r\n        else if (!env.touchEventsSupported) {\r\n            each(globalNativeListenerNames.mouse, mount);\r\n        }\r\n        function mount(nativeEventName) {\r\n            function nativeEventListener(event) {\r\n                event = getNativeEvent(event);\r\n                if (!isLocalEl(instance, event.target)) {\r\n                    event = normalizeGlobalEvent(instance, event);\r\n                    scope.domHandlers[nativeEventName].call(instance, event);\r\n                }\r\n            }\r\n            mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\r\n        }\r\n    }\r\n    function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\r\n        scope.mounted[nativeEventName] = listener;\r\n        scope.listenerOpts[nativeEventName] = opt;\r\n        addEventListener(scope.domTarget, nativeEventName, listener, opt);\r\n    }\r\n    function unmountDOMEventListeners(scope) {\r\n        var mounted = scope.mounted;\r\n        for (var nativeEventName in mounted) {\r\n            if (mounted.hasOwnProperty(nativeEventName)) {\r\n                removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\r\n            }\r\n        }\r\n        scope.mounted = {};\r\n    }\r\n    var DOMHandlerScope = (function () {\r\n        function DOMHandlerScope(domTarget, domHandlers) {\r\n            this.mounted = {};\r\n            this.listenerOpts = {};\r\n            this.touching = false;\r\n            this.domTarget = domTarget;\r\n            this.domHandlers = domHandlers;\r\n        }\r\n        return DOMHandlerScope;\r\n    }());\r\n    var HandlerDomProxy = (function (_super) {\r\n        __extends(HandlerDomProxy, _super);\r\n        function HandlerDomProxy(dom, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this.__pointerCapturing = false;\r\n            _this.dom = dom;\r\n            _this.painterRoot = painterRoot;\r\n            _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\r\n            if (globalEventSupported) {\r\n                _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\r\n            }\r\n            mountLocalDOMEventListeners(_this, _this._localHandlerScope);\r\n            return _this;\r\n        }\r\n        HandlerDomProxy.prototype.dispose = function () {\r\n            unmountDOMEventListeners(this._localHandlerScope);\r\n            if (globalEventSupported) {\r\n                unmountDOMEventListeners(this._globalHandlerScope);\r\n            }\r\n        };\r\n        HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\r\n            this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\r\n        };\r\n        HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\r\n            this.__mayPointerCapture = null;\r\n            if (globalEventSupported\r\n                && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\r\n                this.__pointerCapturing = isPointerCapturing;\r\n                var globalHandlerScope = this._globalHandlerScope;\r\n                isPointerCapturing\r\n                    ? mountGlobalDOMEventListeners(this, globalHandlerScope)\r\n                    : unmountDOMEventListeners(globalHandlerScope);\r\n            }\r\n        };\r\n        return HandlerDomProxy;\r\n    }(Eventful));\n\n    function create$1() {\r\n        return [1, 0, 0, 1, 0, 0];\r\n    }\r\n    function identity(out) {\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 1;\r\n        out[4] = 0;\r\n        out[5] = 0;\r\n        return out;\r\n    }\r\n    function copy$1(out, m) {\r\n        out[0] = m[0];\r\n        out[1] = m[1];\r\n        out[2] = m[2];\r\n        out[3] = m[3];\r\n        out[4] = m[4];\r\n        out[5] = m[5];\r\n        return out;\r\n    }\r\n    function mul(out, m1, m2) {\r\n        var out0 = m1[0] * m2[0] + m1[2] * m2[1];\r\n        var out1 = m1[1] * m2[0] + m1[3] * m2[1];\r\n        var out2 = m1[0] * m2[2] + m1[2] * m2[3];\r\n        var out3 = m1[1] * m2[2] + m1[3] * m2[3];\r\n        var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\r\n        var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\r\n        out[0] = out0;\r\n        out[1] = out1;\r\n        out[2] = out2;\r\n        out[3] = out3;\r\n        out[4] = out4;\r\n        out[5] = out5;\r\n        return out;\r\n    }\r\n    function translate(out, a, v) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4] + v[0];\r\n        out[5] = a[5] + v[1];\r\n        return out;\r\n    }\r\n    function rotate(out, a, rad) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var st = Math.sin(rad);\r\n        var ct = Math.cos(rad);\r\n        out[0] = aa * ct + ab * st;\r\n        out[1] = -aa * st + ab * ct;\r\n        out[2] = ac * ct + ad * st;\r\n        out[3] = -ac * st + ct * ad;\r\n        out[4] = ct * atx + st * aty;\r\n        out[5] = ct * aty - st * atx;\r\n        return out;\r\n    }\r\n    function scale$1(out, a, v) {\r\n        var vx = v[0];\r\n        var vy = v[1];\r\n        out[0] = a[0] * vx;\r\n        out[1] = a[1] * vy;\r\n        out[2] = a[2] * vx;\r\n        out[3] = a[3] * vy;\r\n        out[4] = a[4] * vx;\r\n        out[5] = a[5] * vy;\r\n        return out;\r\n    }\r\n    function invert(out, a) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var det = aa * ad - ab * ac;\r\n        if (!det) {\r\n            return null;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = ad * det;\r\n        out[1] = -ab * det;\r\n        out[2] = -ac * det;\r\n        out[3] = aa * det;\r\n        out[4] = (ac * aty - ad * atx) * det;\r\n        out[5] = (ab * atx - aa * aty) * det;\r\n        return out;\r\n    }\n\n    var mIdentity = identity;\r\n    var EPSILON = 5e-5;\r\n    function isNotAroundZero(val) {\r\n        return val > EPSILON || val < -EPSILON;\r\n    }\r\n    var scaleTmp = [];\r\n    var tmpTransform = [];\r\n    var originTransform = create$1();\r\n    var abs = Math.abs;\r\n    var Transformable = (function () {\r\n        function Transformable() {\r\n        }\r\n        Transformable.prototype.setPosition = function (arr) {\r\n            this.x = arr[0];\r\n            this.y = arr[1];\r\n        };\r\n        Transformable.prototype.setScale = function (arr) {\r\n            this.scaleX = arr[0];\r\n            this.scaleY = arr[1];\r\n        };\r\n        Transformable.prototype.setOrigin = function (arr) {\r\n            this.originX = arr[0];\r\n            this.originY = arr[1];\r\n        };\r\n        Transformable.prototype.needLocalTransform = function () {\r\n            return isNotAroundZero(this.rotation)\r\n                || isNotAroundZero(this.x)\r\n                || isNotAroundZero(this.y)\r\n                || isNotAroundZero(this.scaleX - 1)\r\n                || isNotAroundZero(this.scaleY - 1);\r\n        };\r\n        Transformable.prototype.updateTransform = function () {\r\n            var parent = this.parent;\r\n            var parentHasTransform = parent && parent.transform;\r\n            var needLocalTransform = this.needLocalTransform();\r\n            var m = this.transform;\r\n            if (!(needLocalTransform || parentHasTransform)) {\r\n                m && mIdentity(m);\r\n                return;\r\n            }\r\n            m = m || create$1();\r\n            if (needLocalTransform) {\r\n                this.getLocalTransform(m);\r\n            }\r\n            else {\r\n                mIdentity(m);\r\n            }\r\n            if (parentHasTransform) {\r\n                if (needLocalTransform) {\r\n                    mul(m, parent.transform, m);\r\n                }\r\n                else {\r\n                    copy$1(m, parent.transform);\r\n                }\r\n            }\r\n            this.transform = m;\r\n            this._resolveGlobalScaleRatio(m);\r\n        };\r\n        Transformable.prototype._resolveGlobalScaleRatio = function (m) {\r\n            var globalScaleRatio = this.globalScaleRatio;\r\n            if (globalScaleRatio != null && globalScaleRatio !== 1) {\r\n                this.getGlobalScale(scaleTmp);\r\n                var relX = scaleTmp[0] < 0 ? -1 : 1;\r\n                var relY = scaleTmp[1] < 0 ? -1 : 1;\r\n                var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\r\n                var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\r\n                m[0] *= sx;\r\n                m[1] *= sx;\r\n                m[2] *= sy;\r\n                m[3] *= sy;\r\n            }\r\n            this.invTransform = this.invTransform || create$1();\r\n            invert(this.invTransform, m);\r\n        };\r\n        Transformable.prototype.getLocalTransform = function (m) {\r\n            return Transformable.getLocalTransform(this, m);\r\n        };\r\n        Transformable.prototype.getComputedTransform = function () {\r\n            var transformNode = this;\r\n            var ancestors = [];\r\n            while (transformNode) {\r\n                ancestors.push(transformNode);\r\n                transformNode = transformNode.parent;\r\n            }\r\n            while (transformNode = ancestors.pop()) {\r\n                transformNode.updateTransform();\r\n            }\r\n            return this.transform;\r\n        };\r\n        Transformable.prototype.setLocalTransform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var sx = m[0] * m[0] + m[1] * m[1];\r\n            var sy = m[2] * m[2] + m[3] * m[3];\r\n            if (isNotAroundZero(sx - 1)) {\r\n                sx = Math.sqrt(sx);\r\n            }\r\n            if (isNotAroundZero(sy - 1)) {\r\n                sy = Math.sqrt(sy);\r\n            }\r\n            this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\r\n            if (m[0] < 0) {\r\n                sx = -sx;\r\n            }\r\n            if (m[3] < 0) {\r\n                sy = -sy;\r\n            }\r\n            if (sx < 0 && sy < 0) {\r\n                this.rotation += Math.PI;\r\n                sx = -sx;\r\n                sy = -sy;\r\n            }\r\n            this.x = m[4];\r\n            this.y = m[5];\r\n            this.scaleX = sx;\r\n            this.scaleY = sy;\r\n        };\r\n        Transformable.prototype.decomposeTransform = function () {\r\n            if (!this.transform) {\r\n                return;\r\n            }\r\n            var parent = this.parent;\r\n            var m = this.transform;\r\n            if (parent && parent.transform) {\r\n                mul(tmpTransform, parent.invTransform, m);\r\n                m = tmpTransform;\r\n            }\r\n            var ox = this.originX;\r\n            var oy = this.originY;\r\n            if (ox || oy) {\r\n                originTransform[4] = ox;\r\n                originTransform[5] = oy;\r\n                mul(tmpTransform, m, originTransform);\r\n                tmpTransform[4] -= ox;\r\n                tmpTransform[5] -= oy;\r\n                m = tmpTransform;\r\n            }\r\n            this.setLocalTransform(m);\r\n        };\r\n        Transformable.prototype.getGlobalScale = function (out) {\r\n            var m = this.transform;\r\n            out = out || [];\r\n            if (!m) {\r\n                out[0] = 1;\r\n                out[1] = 1;\r\n                return out;\r\n            }\r\n            out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\r\n            out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\r\n            if (m[0] < 0) {\r\n                out[0] = -out[0];\r\n            }\r\n            if (m[3] < 0) {\r\n                out[1] = -out[1];\r\n            }\r\n            return out;\r\n        };\r\n        Transformable.prototype.transformCoordToLocal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var invTransform = this.invTransform;\r\n            if (invTransform) {\r\n                applyTransform(v2, v2, invTransform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.transformCoordToGlobal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var transform = this.transform;\r\n            if (transform) {\r\n                applyTransform(v2, v2, transform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.getLineScale = function () {\r\n            var m = this.transform;\r\n            return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\r\n                ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\r\n                : 1;\r\n        };\r\n        Transformable.getLocalTransform = function (target, m) {\r\n            m = m || [];\r\n            mIdentity(m);\r\n            var ox = target.originX || 0;\r\n            var oy = target.originY || 0;\r\n            var sx = target.scaleX;\r\n            var sy = target.scaleY;\r\n            var rotation = target.rotation || 0;\r\n            var x = target.x;\r\n            var y = target.y;\r\n            m[4] -= ox;\r\n            m[5] -= oy;\r\n            m[0] *= sx;\r\n            m[1] *= sy;\r\n            m[2] *= sx;\r\n            m[3] *= sy;\r\n            m[4] *= sx;\r\n            m[5] *= sy;\r\n            if (rotation) {\r\n                rotate(m, m, rotation);\r\n            }\r\n            m[4] += ox;\r\n            m[5] += oy;\r\n            m[4] += x;\r\n            m[5] += y;\r\n            return m;\r\n        };\r\n        Transformable.initDefaultProps = (function () {\r\n            var proto = Transformable.prototype;\r\n            proto.x = 0;\r\n            proto.y = 0;\r\n            proto.scaleX = 1;\r\n            proto.scaleY = 1;\r\n            proto.originX = 0;\r\n            proto.originY = 0;\r\n            proto.rotation = 0;\r\n            proto.globalScaleRatio = 1;\r\n        })();\r\n        return Transformable;\r\n    }());\n\n    var Point = (function () {\r\n        function Point(x, y) {\r\n            this.x = x || 0;\r\n            this.y = y || 0;\r\n        }\r\n        Point.prototype.copy = function (other) {\r\n            this.x = other.x;\r\n            this.y = other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.clone = function () {\r\n            return new Point(this.x, this.y);\r\n        };\r\n        Point.prototype.set = function (x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n            return this;\r\n        };\r\n        Point.prototype.equal = function (other) {\r\n            return other.x === this.x && other.y === this.y;\r\n        };\r\n        Point.prototype.add = function (other) {\r\n            this.x += other.x;\r\n            this.y += other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.scale = function (scalar) {\r\n            this.x *= scalar;\r\n            this.y *= scalar;\r\n        };\r\n        Point.prototype.scaleAndAdd = function (other, scalar) {\r\n            this.x += other.x * scalar;\r\n            this.y += other.y * scalar;\r\n        };\r\n        Point.prototype.sub = function (other) {\r\n            this.x -= other.x;\r\n            this.y -= other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.dot = function (other) {\r\n            return this.x * other.x + this.y * other.y;\r\n        };\r\n        Point.prototype.len = function () {\r\n            return Math.sqrt(this.x * this.x + this.y * this.y);\r\n        };\r\n        Point.prototype.lenSquare = function () {\r\n            return this.x * this.x + this.y * this.y;\r\n        };\r\n        Point.prototype.normalize = function () {\r\n            var len = this.len();\r\n            this.x /= len;\r\n            this.y /= len;\r\n            return this;\r\n        };\r\n        Point.prototype.distance = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return Math.sqrt(dx * dx + dy * dy);\r\n        };\r\n        Point.prototype.distanceSquare = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return dx * dx + dy * dy;\r\n        };\r\n        Point.prototype.negate = function () {\r\n            this.x = -this.x;\r\n            this.y = -this.y;\r\n            return this;\r\n        };\r\n        Point.prototype.transform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var x = this.x;\r\n            var y = this.y;\r\n            this.x = m[0] * x + m[2] * y + m[4];\r\n            this.y = m[1] * x + m[3] * y + m[5];\r\n            return this;\r\n        };\r\n        Point.prototype.toArray = function (out) {\r\n            out[0] = this.x;\r\n            out[1] = this.y;\r\n            return out;\r\n        };\r\n        Point.prototype.fromArray = function (input) {\r\n            this.x = input[0];\r\n            this.y = input[1];\r\n        };\r\n        Point.set = function (p, x, y) {\r\n            p.x = x;\r\n            p.y = y;\r\n        };\r\n        Point.copy = function (p, p2) {\r\n            p.x = p2.x;\r\n            p.y = p2.y;\r\n        };\r\n        Point.len = function (p) {\r\n            return Math.sqrt(p.x * p.x + p.y * p.y);\r\n        };\r\n        Point.lenSquare = function (p) {\r\n            return p.x * p.x + p.y * p.y;\r\n        };\r\n        Point.dot = function (p0, p1) {\r\n            return p0.x * p1.x + p0.y * p1.y;\r\n        };\r\n        Point.add = function (out, p0, p1) {\r\n            out.x = p0.x + p1.x;\r\n            out.y = p0.y + p1.y;\r\n        };\r\n        Point.sub = function (out, p0, p1) {\r\n            out.x = p0.x - p1.x;\r\n            out.y = p0.y - p1.y;\r\n        };\r\n        Point.scale = function (out, p0, scalar) {\r\n            out.x = p0.x * scalar;\r\n            out.y = p0.y * scalar;\r\n        };\r\n        Point.scaleAndAdd = function (out, p0, p1, scalar) {\r\n            out.x = p0.x + p1.x * scalar;\r\n            out.y = p0.y + p1.y * scalar;\r\n        };\r\n        Point.lerp = function (out, p0, p1, t) {\r\n            var onet = 1 - t;\r\n            out.x = onet * p0.x + t * p1.x;\r\n            out.y = onet * p0.y + t * p1.y;\r\n        };\r\n        return Point;\r\n    }());\n\n    var mathMin = Math.min;\r\n    var mathMax = Math.max;\r\n    var lt = new Point();\r\n    var rb = new Point();\r\n    var lb = new Point();\r\n    var rt = new Point();\r\n    var minTv = new Point();\r\n    var maxTv = new Point();\r\n    var BoundingRect = (function () {\r\n        function BoundingRect(x, y, width, height) {\r\n            if (width < 0) {\r\n                x = x + width;\r\n                width = -width;\r\n            }\r\n            if (height < 0) {\r\n                y = y + height;\r\n                height = -height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n            this.width = width;\r\n            this.height = height;\r\n        }\r\n        BoundingRect.prototype.union = function (other) {\r\n            var x = mathMin(other.x, this.x);\r\n            var y = mathMin(other.y, this.y);\r\n            this.width = mathMax(other.x + other.width, this.x + this.width) - x;\r\n            this.height = mathMax(other.y + other.height, this.y + this.height) - y;\r\n            this.x = x;\r\n            this.y = y;\r\n        };\r\n        BoundingRect.prototype.applyTransform = function (m) {\r\n            BoundingRect.applyTransform(this, this, m);\r\n        };\r\n        BoundingRect.prototype.calculateTransform = function (b) {\r\n            var a = this;\r\n            var sx = b.width / a.width;\r\n            var sy = b.height / a.height;\r\n            var m = create$1();\r\n            translate(m, m, [-a.x, -a.y]);\r\n            scale$1(m, m, [sx, sy]);\r\n            translate(m, m, [b.x, b.y]);\r\n            return m;\r\n        };\r\n        BoundingRect.prototype.intersect = function (b, mtv) {\r\n            if (!b) {\r\n                return false;\r\n            }\r\n            if (!(b instanceof BoundingRect)) {\r\n                b = BoundingRect.create(b);\r\n            }\r\n            var a = this;\r\n            var ax0 = a.x;\r\n            var ax1 = a.x + a.width;\r\n            var ay0 = a.y;\r\n            var ay1 = a.y + a.height;\r\n            var bx0 = b.x;\r\n            var bx1 = b.x + b.width;\r\n            var by0 = b.y;\r\n            var by1 = b.y + b.height;\r\n            var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\r\n            if (mtv) {\r\n                var dMin = Infinity;\r\n                var dMax = 0;\r\n                var d0 = Math.abs(ax1 - bx0);\r\n                var d1 = Math.abs(bx1 - ax0);\r\n                var d2 = Math.abs(ay1 - by0);\r\n                var d3 = Math.abs(by1 - ay0);\r\n                var dx = Math.min(d0, d1);\r\n                var dy = Math.min(d2, d3);\r\n                if (ax1 < bx0 || bx1 < ax0) {\r\n                    if (dx > dMax) {\r\n                        dMax = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(maxTv, -d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(minTv, d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, -d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                if (ay1 < by0 || by1 < ay0) {\r\n                    if (dy > dMax) {\r\n                        dMax = dy;\r\n                        if (d2 < d3) {\r\n                            Point.set(maxTv, 0, -d2);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, 0, d3);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d2 < d3) {\r\n                            Point.set(minTv, 0, d2);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, 0, -d3);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (mtv) {\r\n                Point.copy(mtv, overlap ? minTv : maxTv);\r\n            }\r\n            return overlap;\r\n        };\r\n        BoundingRect.prototype.contain = function (x, y) {\r\n            var rect = this;\r\n            return x >= rect.x\r\n                && x <= (rect.x + rect.width)\r\n                && y >= rect.y\r\n                && y <= (rect.y + rect.height);\r\n        };\r\n        BoundingRect.prototype.clone = function () {\r\n            return new BoundingRect(this.x, this.y, this.width, this.height);\r\n        };\r\n        BoundingRect.prototype.copy = function (other) {\r\n            BoundingRect.copy(this, other);\r\n        };\r\n        BoundingRect.prototype.plain = function () {\r\n            return {\r\n                x: this.x,\r\n                y: this.y,\r\n                width: this.width,\r\n                height: this.height\r\n            };\r\n        };\r\n        BoundingRect.create = function (rect) {\r\n            return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\r\n        };\r\n        BoundingRect.copy = function (target, source) {\r\n            target.x = source.x;\r\n            target.y = source.y;\r\n            target.width = source.width;\r\n            target.height = source.height;\r\n        };\r\n        BoundingRect.applyTransform = function (target, source, m) {\r\n            if (!m) {\r\n                if (target !== source) {\r\n                    BoundingRect.copy(target, source);\r\n                }\r\n                return;\r\n            }\r\n            if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\r\n                var sx = m[0];\r\n                var sy = m[3];\r\n                var tx = m[4];\r\n                var ty = m[5];\r\n                target.x = source.x * sx + tx;\r\n                target.y = source.y * sy + ty;\r\n                target.width = source.width * sx;\r\n                target.height = source.height * sy;\r\n                if (target.width < 0) {\r\n                    target.x += target.width;\r\n                    target.width = -target.width;\r\n                }\r\n                if (target.height < 0) {\r\n                    target.y += target.height;\r\n                    target.height = -target.height;\r\n                }\r\n                return;\r\n            }\r\n            lt.x = lb.x = source.x;\r\n            lt.y = rt.y = source.y;\r\n            rb.x = rt.x = source.x + source.width;\r\n            rb.y = lb.y = source.y + source.height;\r\n            lt.transform(m);\r\n            rt.transform(m);\r\n            rb.transform(m);\r\n            lb.transform(m);\r\n            target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\r\n            target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\r\n            var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\r\n            var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\r\n            target.width = maxX - target.x;\r\n            target.height = maxY - target.y;\r\n        };\r\n        return BoundingRect;\r\n    }());\n\n    var textWidthCache = {};\r\n    var DEFAULT_FONT = '12px sans-serif';\r\n    var _ctx;\r\n    var _cachedFont;\r\n    function defaultMeasureText(text, font) {\r\n        if (!_ctx) {\r\n            _ctx = createCanvas().getContext('2d');\r\n        }\r\n        if (_cachedFont !== font) {\r\n            _cachedFont = _ctx.font = font || DEFAULT_FONT;\r\n        }\r\n        return _ctx.measureText(text);\r\n    }\r\n    var methods$1 = {\r\n        measureText: defaultMeasureText\r\n    };\r\n    function getWidth(text, font) {\r\n        font = font || DEFAULT_FONT;\r\n        var cacheOfFont = textWidthCache[font];\r\n        if (!cacheOfFont) {\r\n            cacheOfFont = textWidthCache[font] = new LRU(500);\r\n        }\r\n        var width = cacheOfFont.get(text);\r\n        if (width == null) {\r\n            width = methods$1.measureText(text, font).width;\r\n            cacheOfFont.put(text, width);\r\n        }\r\n        return width;\r\n    }\r\n    function innerGetBoundingRect(text, font, textAlign, textBaseline) {\r\n        var width = getWidth(text, font);\r\n        var height = getLineHeight(font);\r\n        var x = adjustTextX(0, width, textAlign);\r\n        var y = adjustTextY(0, height, textBaseline);\r\n        var rect = new BoundingRect(x, y, width, height);\r\n        return rect;\r\n    }\r\n    function getBoundingRect(text, font, textAlign, textBaseline) {\r\n        var textLines = ((text || '') + '').split('\\n');\r\n        var len = textLines.length;\r\n        if (len === 1) {\r\n            return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\r\n        }\r\n        else {\r\n            var uniondRect = new BoundingRect(0, 0, 0, 0);\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\r\n                i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\r\n            }\r\n            return uniondRect;\r\n        }\r\n    }\r\n    function adjustTextX(x, width, textAlign) {\r\n        if (textAlign === 'right') {\r\n            x -= width;\r\n        }\r\n        else if (textAlign === 'center') {\r\n            x -= width / 2;\r\n        }\r\n        return x;\r\n    }\r\n    function adjustTextY(y, height, verticalAlign) {\r\n        if (verticalAlign === 'middle') {\r\n            y -= height / 2;\r\n        }\r\n        else if (verticalAlign === 'bottom') {\r\n            y -= height;\r\n        }\r\n        return y;\r\n    }\r\n    function getLineHeight(font) {\r\n        return getWidth('国', font);\r\n    }\r\n    function parsePercent(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\r\n    function calculateTextPosition(out, opts, rect) {\r\n        var textPosition = opts.position || 'inside';\r\n        var distance = opts.distance != null ? opts.distance : 5;\r\n        var height = rect.height;\r\n        var width = rect.width;\r\n        var halfHeight = height / 2;\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var textAlign = 'left';\r\n        var textVerticalAlign = 'top';\r\n        if (textPosition instanceof Array) {\r\n            x += parsePercent(textPosition[0], rect.width);\r\n            y += parsePercent(textPosition[1], rect.height);\r\n            textAlign = null;\r\n            textVerticalAlign = null;\r\n        }\r\n        else {\r\n            switch (textPosition) {\r\n                case 'left':\r\n                    x -= distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'right':\r\n                    x += distance + width;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'top':\r\n                    x += width / 2;\r\n                    y -= distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'bottom':\r\n                    x += width / 2;\r\n                    y += height + distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'inside':\r\n                    x += width / 2;\r\n                    y += halfHeight;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideLeft':\r\n                    x += distance;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideRight':\r\n                    x += width - distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideTop':\r\n                    x += width / 2;\r\n                    y += distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'insideBottom':\r\n                    x += width / 2;\r\n                    y += height - distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideTopLeft':\r\n                    x += distance;\r\n                    y += distance;\r\n                    break;\r\n                case 'insideTopRight':\r\n                    x += width - distance;\r\n                    y += distance;\r\n                    textAlign = 'right';\r\n                    break;\r\n                case 'insideBottomLeft':\r\n                    x += distance;\r\n                    y += height - distance;\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideBottomRight':\r\n                    x += width - distance;\r\n                    y += height - distance;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n            }\r\n        }\r\n        out = out || {};\r\n        out.x = x;\r\n        out.y = y;\r\n        out.align = textAlign;\r\n        out.verticalAlign = textVerticalAlign;\r\n        return out;\r\n    }\n\n    var dpr = 1;\r\n    if (typeof window !== 'undefined') {\r\n        dpr = Math.max(window.devicePixelRatio\r\n            || (window.screen.deviceXDPI / window.screen.logicalXDPI)\r\n            || 1, 1);\r\n    }\r\n    var devicePixelRatio = dpr;\r\n    var DARK_MODE_THRESHOLD = 0.4;\r\n    var DARK_LABEL_COLOR = '#333';\r\n    var LIGHT_LABEL_COLOR = '#ccc';\r\n    var LIGHTER_LABEL_COLOR = '#eee';\n\n    var PRESERVED_NORMAL_STATE = '__zr_normal__';\r\n    var PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\n    var DEFAULT_ANIMATABLE_MAP = {\r\n        x: true,\r\n        y: true,\r\n        scaleX: true,\r\n        scaleY: true,\r\n        originX: true,\r\n        originY: true,\r\n        rotation: true,\r\n        ignore: false\r\n    };\r\n    var tmpTextPosCalcRes = {};\r\n    var tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\n    var Element = (function () {\r\n        function Element(props) {\r\n            this.id = guid();\r\n            this.animators = [];\r\n            this.currentStates = [];\r\n            this.states = {};\r\n            this._init(props);\r\n        }\r\n        Element.prototype._init = function (props) {\r\n            this.attr(props);\r\n        };\r\n        Element.prototype.drift = function (dx, dy, e) {\r\n            switch (this.draggable) {\r\n                case 'horizontal':\r\n                    dy = 0;\r\n                    break;\r\n                case 'vertical':\r\n                    dx = 0;\r\n                    break;\r\n            }\r\n            var m = this.transform;\r\n            if (!m) {\r\n                m = this.transform = [1, 0, 0, 1, 0, 0];\r\n            }\r\n            m[4] += dx;\r\n            m[5] += dy;\r\n            this.decomposeTransform();\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.beforeUpdate = function () { };\r\n        Element.prototype.afterUpdate = function () { };\r\n        Element.prototype.update = function () {\r\n            this.updateTransform();\r\n            this.updateInnerText();\r\n        };\r\n        Element.prototype.updateInnerText = function (forceUpdate) {\r\n            var textEl = this._textContent;\r\n            if (textEl && (!textEl.ignore || forceUpdate)) {\r\n                if (!this.textConfig) {\r\n                    this.textConfig = {};\r\n                }\r\n                var textConfig = this.textConfig;\r\n                var isLocal = textConfig.local;\r\n                var attachedTransform = textEl.attachedTransform;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var textStyleChanged = false;\r\n                if (isLocal) {\r\n                    attachedTransform.parent = this;\r\n                }\r\n                else {\r\n                    attachedTransform.parent = null;\r\n                }\r\n                var innerOrigin = false;\r\n                attachedTransform.x = textEl.x;\r\n                attachedTransform.y = textEl.y;\r\n                attachedTransform.originX = textEl.originX;\r\n                attachedTransform.originY = textEl.originY;\r\n                attachedTransform.rotation = textEl.rotation;\r\n                attachedTransform.scaleX = textEl.scaleX;\r\n                attachedTransform.scaleY = textEl.scaleY;\r\n                if (textConfig.position != null) {\r\n                    var layoutRect = tmpBoundingRect;\r\n                    if (textConfig.layoutRect) {\r\n                        layoutRect.copy(textConfig.layoutRect);\r\n                    }\r\n                    else {\r\n                        layoutRect.copy(this.getBoundingRect());\r\n                    }\r\n                    if (!isLocal) {\r\n                        layoutRect.applyTransform(this.transform);\r\n                    }\r\n                    if (this.calculateTextPosition) {\r\n                        this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    else {\r\n                        calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    attachedTransform.x = tmpTextPosCalcRes.x;\r\n                    attachedTransform.y = tmpTextPosCalcRes.y;\r\n                    textAlign = tmpTextPosCalcRes.align;\r\n                    textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\r\n                    var textOrigin = textConfig.origin;\r\n                    if (textOrigin && textConfig.rotation != null) {\r\n                        var relOriginX = void 0;\r\n                        var relOriginY = void 0;\r\n                        if (textOrigin === 'center') {\r\n                            relOriginX = layoutRect.width * 0.5;\r\n                            relOriginY = layoutRect.height * 0.5;\r\n                        }\r\n                        else {\r\n                            relOriginX = parsePercent(textOrigin[0], layoutRect.width);\r\n                            relOriginY = parsePercent(textOrigin[1], layoutRect.height);\r\n                        }\r\n                        innerOrigin = true;\r\n                        attachedTransform.originX = -attachedTransform.x + relOriginX + (isLocal ? 0 : layoutRect.x);\r\n                        attachedTransform.originY = -attachedTransform.y + relOriginY + (isLocal ? 0 : layoutRect.y);\r\n                    }\r\n                }\r\n                if (textConfig.rotation != null) {\r\n                    attachedTransform.rotation = textConfig.rotation;\r\n                }\r\n                var textOffset = textConfig.offset;\r\n                if (textOffset) {\r\n                    attachedTransform.x += textOffset[0];\r\n                    attachedTransform.y += textOffset[1];\r\n                    if (!innerOrigin) {\r\n                        attachedTransform.originX = -textOffset[0];\r\n                        attachedTransform.originY = -textOffset[1];\r\n                    }\r\n                }\r\n                var isInside = textConfig.inside == null\r\n                    ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\r\n                    : textConfig.inside;\r\n                var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\r\n                var textFill = void 0;\r\n                var textStroke = void 0;\r\n                var autoStroke = void 0;\r\n                if (isInside && this.canBeInsideText()) {\r\n                    textFill = textConfig.insideFill;\r\n                    textStroke = textConfig.insideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getInsideTextFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getInsideTextStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                else {\r\n                    textFill = textConfig.outsideFill;\r\n                    textStroke = textConfig.outsideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getOutsideFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getOutsideStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                textFill = textFill || '#000';\r\n                if (textFill !== innerTextDefaultStyle.fill\r\n                    || textStroke !== innerTextDefaultStyle.stroke\r\n                    || autoStroke !== innerTextDefaultStyle.autoStroke\r\n                    || textAlign !== innerTextDefaultStyle.align\r\n                    || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\r\n                    textStyleChanged = true;\r\n                    innerTextDefaultStyle.fill = textFill;\r\n                    innerTextDefaultStyle.stroke = textStroke;\r\n                    innerTextDefaultStyle.autoStroke = autoStroke;\r\n                    innerTextDefaultStyle.align = textAlign;\r\n                    innerTextDefaultStyle.verticalAlign = textVerticalAlign;\r\n                    textEl.setDefaultTextStyle(innerTextDefaultStyle);\r\n                }\r\n                if (textStyleChanged) {\r\n                    textEl.dirtyStyle();\r\n                }\r\n                textEl.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.canBeInsideText = function () {\r\n            return true;\r\n        };\r\n        Element.prototype.getInsideTextFill = function () {\r\n            return '#fff';\r\n        };\r\n        Element.prototype.getInsideTextStroke = function (textFill) {\r\n            return '#000';\r\n        };\r\n        Element.prototype.getOutsideFill = function () {\r\n            return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\r\n        };\r\n        Element.prototype.getOutsideStroke = function (textFill) {\r\n            var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\r\n            var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\r\n            if (!colorArr) {\r\n                colorArr = [255, 255, 255, 1];\r\n            }\r\n            var alpha = colorArr[3];\r\n            for (var i = 0; i < 3; i++) {\r\n                colorArr[i] = colorArr[i] * alpha + 255 * (1 - alpha);\r\n            }\r\n            colorArr[3] = 1;\r\n            return stringify(colorArr, 'rgba');\r\n        };\r\n        Element.prototype.traverse = function (cb, context) { };\r\n        Element.prototype.attrKV = function (key, value) {\r\n            if (key === 'textConfig') {\r\n                this.setTextConfig(value);\r\n            }\r\n            else if (key === 'textContent') {\r\n                this.setTextContent(value);\r\n            }\r\n            else if (key === 'clipPath') {\r\n                this.setClipPath(value);\r\n            }\r\n            else if (key === 'extra') {\r\n                this.extra = this.extra || {};\r\n                extend(this.extra, value);\r\n            }\r\n            else {\r\n                this[key] = value;\r\n            }\r\n        };\r\n        Element.prototype.hide = function () {\r\n            this.ignore = true;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.show = function () {\r\n            this.ignore = false;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.attr = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.attrKV(keyOrObj, value);\r\n            }\r\n            else if (isObject(keyOrObj)) {\r\n                var obj = keyOrObj;\r\n                var keysArr = keys(obj);\r\n                for (var i = 0; i < keysArr.length; i++) {\r\n                    var key = keysArr[i];\r\n                    this.attrKV(key, keyOrObj[key]);\r\n                }\r\n            }\r\n            this.markRedraw();\r\n            return this;\r\n        };\r\n        Element.prototype.saveCurrentToNormalState = function (toState) {\r\n            this._innerSaveToNormal(toState);\r\n            var normalState = this._normalState;\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                var fromStateTransition = animator.__fromStateTransition;\r\n                if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\r\n                    continue;\r\n                }\r\n                var targetName = animator.targetName;\r\n                var target = targetName\r\n                    ? normalState[targetName] : normalState;\r\n                animator.saveFinalToTarget(target);\r\n            }\r\n        };\r\n        Element.prototype._innerSaveToNormal = function (toState) {\r\n            var normalState = this._normalState;\r\n            if (!normalState) {\r\n                normalState = this._normalState = {};\r\n            }\r\n            if (toState.textConfig && !normalState.textConfig) {\r\n                normalState.textConfig = this.textConfig;\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\r\n        };\r\n        Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\r\n            for (var i = 0; i < primaryKeys.length; i++) {\r\n                var key = primaryKeys[i];\r\n                if (toState[key] != null && !(key in normalState)) {\r\n                    normalState[key] = this[key];\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.hasState = function () {\r\n            return this.currentStates.length > 0;\r\n        };\r\n        Element.prototype.getState = function (name) {\r\n            return this.states[name];\r\n        };\r\n        Element.prototype.ensureState = function (name) {\r\n            var states = this.states;\r\n            if (!states[name]) {\r\n                states[name] = {};\r\n            }\r\n            return states[name];\r\n        };\r\n        Element.prototype.clearStates = function () {\r\n            this.useState(PRESERVED_NORMAL_STATE, false);\r\n        };\r\n        Element.prototype.useState = function (stateName, keepCurrentStates) {\r\n            var toNormalState = stateName === PRESERVED_NORMAL_STATE;\r\n            var hasStates = this.hasState();\r\n            if (!hasStates && toNormalState) {\r\n                return;\r\n            }\r\n            var currentStates = this.currentStates;\r\n            var animationCfg = this.stateTransition;\r\n            if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\r\n                return;\r\n            }\r\n            var state;\r\n            if (this.stateProxy && !toNormalState) {\r\n                state = this.stateProxy(stateName);\r\n            }\r\n            if (!state) {\r\n                state = (this.states && this.states[stateName]);\r\n            }\r\n            if (!state && !toNormalState) {\r\n                logError(\"State \" + stateName + \" not exists.\");\r\n                return;\r\n            }\r\n            if (!toNormalState) {\r\n                this.saveCurrentToNormalState(state);\r\n            }\r\n            var useHoverLayer = !!(state && state.hoverLayer);\r\n            if (useHoverLayer) {\r\n                this._toggleHoverLayerFlag(true);\r\n            }\r\n            this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n            if (this._textContent) {\r\n                this._textContent.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (toNormalState) {\r\n                this.currentStates = [];\r\n                this._normalState = {};\r\n            }\r\n            else {\r\n                if (!keepCurrentStates) {\r\n                    this.currentStates = [stateName];\r\n                }\r\n                else {\r\n                    this.currentStates.push(stateName);\r\n                }\r\n            }\r\n            this._updateAnimationTargets();\r\n            this.markRedraw();\r\n            if (!useHoverLayer && this.__inHover) {\r\n                this._toggleHoverLayerFlag(false);\r\n                this.__dirty &= ~Element.REDARAW_BIT;\r\n            }\r\n            return state;\r\n        };\r\n        Element.prototype.useStates = function (states) {\r\n            if (!states.length) {\r\n                this.clearStates();\r\n            }\r\n            else {\r\n                var stateObjects = [];\r\n                var currentStates = this.currentStates;\r\n                var len = states.length;\r\n                var notChange = len === currentStates.length;\r\n                if (notChange) {\r\n                    for (var i = 0; i < len; i++) {\r\n                        if (states[i] !== currentStates[i]) {\r\n                            notChange = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (notChange) {\r\n                    return;\r\n                }\r\n                for (var i = 0; i < len; i++) {\r\n                    var stateName = states[i];\r\n                    var stateObj = void 0;\r\n                    if (this.stateProxy) {\r\n                        stateObj = this.stateProxy(stateName, states);\r\n                    }\r\n                    if (!stateObj) {\r\n                        stateObj = this.states[stateName];\r\n                    }\r\n                    if (stateObj) {\r\n                        stateObjects.push(stateObj);\r\n                    }\r\n                }\r\n                var useHoverLayer = !!(stateObjects[len - 1] && stateObjects[len - 1].hoverLayer);\r\n                if (useHoverLayer) {\r\n                    this._toggleHoverLayerFlag(true);\r\n                }\r\n                var mergedState = this._mergeStates(stateObjects);\r\n                var animationCfg = this.stateTransition;\r\n                this.saveCurrentToNormalState(mergedState);\r\n                this._applyStateObj(states.join(','), mergedState, this._normalState, false, !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n                if (this._textContent) {\r\n                    this._textContent.useStates(states);\r\n                }\r\n                if (this._textGuide) {\r\n                    this._textGuide.useStates(states);\r\n                }\r\n                this._updateAnimationTargets();\r\n                this.currentStates = states.slice();\r\n                this.markRedraw();\r\n                if (!useHoverLayer) {\r\n                    this._toggleHoverLayerFlag(false);\r\n                    this.__dirty &= ~Element.REDARAW_BIT;\r\n                }\r\n            }\r\n        };\r\n        Element.prototype._updateAnimationTargets = function () {\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                if (animator.targetName) {\r\n                    animator.changeTarget(this[animator.targetName]);\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.removeState = function (state) {\r\n            var idx = indexOf(this.currentStates, state);\r\n            if (idx >= 0) {\r\n                var currentStates = this.currentStates.slice();\r\n                currentStates.splice(idx, 1);\r\n                this.useStates(currentStates);\r\n            }\r\n        };\r\n        Element.prototype.replaceState = function (oldState, newState, forceAdd) {\r\n            var currentStates = this.currentStates.slice();\r\n            var idx = indexOf(currentStates, oldState);\r\n            var newStateExists = indexOf(currentStates, newState) >= 0;\r\n            if (idx >= 0) {\r\n                if (!newStateExists) {\r\n                    currentStates[idx] = newState;\r\n                }\r\n                else {\r\n                    currentStates.splice(idx, 1);\r\n                }\r\n            }\r\n            else if (forceAdd && !newStateExists) {\r\n                currentStates.push(newState);\r\n            }\r\n            this.useStates(currentStates);\r\n        };\r\n        Element.prototype.toggleState = function (state, enable) {\r\n            if (enable) {\r\n                this.useState(state, true);\r\n            }\r\n            else {\r\n                this.removeState(state);\r\n            }\r\n        };\r\n        Element.prototype._mergeStates = function (states) {\r\n            var mergedState = {};\r\n            var mergedTextConfig;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                extend(mergedState, state);\r\n                if (state.textConfig) {\r\n                    mergedTextConfig = mergedTextConfig || {};\r\n                    extend(mergedTextConfig, state.textConfig);\r\n                }\r\n            }\r\n            if (mergedTextConfig) {\r\n                mergedState.textConfig = mergedTextConfig;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            if (state && state.textConfig) {\r\n                this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\r\n                extend(this.textConfig, state.textConfig);\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                if (normalState.textConfig) {\r\n                    this.textConfig = normalState.textConfig;\r\n                }\r\n            }\r\n            var transitionTarget = {};\r\n            var hasTransition = false;\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS[i];\r\n                var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\r\n                if (state && state[key] != null) {\r\n                    if (propNeedsTransition) {\r\n                        hasTransition = true;\r\n                        transitionTarget[key] = state[key];\r\n                    }\r\n                    else {\r\n                        this[key] = state[key];\r\n                    }\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        if (propNeedsTransition) {\r\n                            hasTransition = true;\r\n                            transitionTarget[key] = normalState[key];\r\n                        }\r\n                        else {\r\n                            this[key] = normalState[key];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!transition) {\r\n                for (var i = 0; i < this.animators.length; i++) {\r\n                    var animator = this.animators[i];\r\n                    var targetName = animator.targetName;\r\n                    animator.__changeFinalValue(targetName\r\n                        ? (state || normalState)[targetName]\r\n                        : (state || normalState));\r\n                }\r\n            }\r\n            if (hasTransition) {\r\n                this._transitionState(stateName, transitionTarget, animationCfg);\r\n            }\r\n        };\r\n        Element.prototype._attachComponent = function (componentEl) {\r\n            if (componentEl.__zr && !componentEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            if (componentEl === this) {\r\n                throw new Error('Recursive component attachment.');\r\n            }\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                componentEl.addSelfToZr(zr);\r\n            }\r\n            componentEl.__zr = zr;\r\n            componentEl.__hostTarget = this;\r\n        };\r\n        Element.prototype._detachComponent = function (componentEl) {\r\n            if (componentEl.__zr) {\r\n                componentEl.removeSelfFromZr(componentEl.__zr);\r\n            }\r\n            componentEl.__zr = null;\r\n            componentEl.__hostTarget = null;\r\n        };\r\n        Element.prototype.getClipPath = function () {\r\n            return this._clipPath;\r\n        };\r\n        Element.prototype.setClipPath = function (clipPath) {\r\n            if (this._clipPath && this._clipPath !== clipPath) {\r\n                this.removeClipPath();\r\n            }\r\n            this._attachComponent(clipPath);\r\n            this._clipPath = clipPath;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeClipPath = function () {\r\n            var clipPath = this._clipPath;\r\n            if (clipPath) {\r\n                this._detachComponent(clipPath);\r\n                this._clipPath = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextContent = function () {\r\n            return this._textContent;\r\n        };\r\n        Element.prototype.setTextContent = function (textEl) {\r\n            var previousTextContent = this._textContent;\r\n            if (previousTextContent === textEl) {\r\n                return;\r\n            }\r\n            if (previousTextContent && previousTextContent !== textEl) {\r\n                this.removeTextContent();\r\n            }\r\n            if (textEl.__zr && !textEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            textEl.attachedTransform = new Transformable();\r\n            this._attachComponent(textEl);\r\n            this._textContent = textEl;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.setTextConfig = function (cfg) {\r\n            if (!this.textConfig) {\r\n                this.textConfig = {};\r\n            }\r\n            extend(this.textConfig, cfg);\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextContent = function () {\r\n            var textEl = this._textContent;\r\n            if (textEl) {\r\n                textEl.attachedTransform = null;\r\n                this._detachComponent(textEl);\r\n                this._textContent = null;\r\n                this._innerTextDefaultStyle = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextGuideLine = function () {\r\n            return this._textGuide;\r\n        };\r\n        Element.prototype.setTextGuideLine = function (guideLine) {\r\n            if (this._textGuide && this._textGuide !== guideLine) {\r\n                this.removeTextGuideLine();\r\n            }\r\n            this._attachComponent(guideLine);\r\n            this._textGuide = guideLine;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextGuideLine = function () {\r\n            var textGuide = this._textGuide;\r\n            if (textGuide) {\r\n                this._detachComponent(textGuide);\r\n                this._textGuide = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.markRedraw = function () {\r\n            this.__dirty |= Element.REDARAW_BIT;\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                if (this.__inHover) {\r\n                    zr.refreshHover();\r\n                }\r\n                else {\r\n                    zr.refresh();\r\n                }\r\n            }\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.dirty = function () {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype._toggleHoverLayerFlag = function (inHover) {\r\n            this.__inHover = inHover;\r\n            var textContent = this._textContent;\r\n            var textGuide = this._textGuide;\r\n            if (textContent) {\r\n                textContent.__inHover = inHover;\r\n            }\r\n            if (textGuide) {\r\n                textGuide.__inHover = inHover;\r\n            }\r\n        };\r\n        Element.prototype.addSelfToZr = function (zr) {\r\n            this.__zr = zr;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.addAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.addSelfToZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.addSelfToZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.removeSelfFromZr = function (zr) {\r\n            this.__zr = null;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.removeAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.animate = function (key, loop) {\r\n            var target = key ? this[key] : this;\r\n            if (!target) {\r\n                logError('Property \"'\r\n                    + key\r\n                    + '\" is not existed in element '\r\n                    + this.id);\r\n                return;\r\n            }\r\n            var animator = new Animator(target, loop);\r\n            this.addAnimator(animator, key);\r\n            return animator;\r\n        };\r\n        Element.prototype.addAnimator = function (animator, key) {\r\n            var zr = this.__zr;\r\n            var el = this;\r\n            animator.during(function () {\r\n                el.updateDuringAnimation(key);\r\n            }).done(function () {\r\n                var animators = el.animators;\r\n                var idx = indexOf(animators, animator);\r\n                if (idx >= 0) {\r\n                    animators.splice(idx, 1);\r\n                }\r\n            });\r\n            this.animators.push(animator);\r\n            if (zr) {\r\n                zr.animation.addAnimator(animator);\r\n            }\r\n            zr && zr.wakeUp();\r\n        };\r\n        Element.prototype.updateDuringAnimation = function (key) {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.stopAnimation = function (scope, forwardToLast) {\r\n            var animators = this.animators;\r\n            var len = animators.length;\r\n            var leftAnimators = [];\r\n            for (var i = 0; i < len; i++) {\r\n                var animator = animators[i];\r\n                if (!scope || scope === animator.scope) {\r\n                    animator.stop(forwardToLast);\r\n                }\r\n                else {\r\n                    leftAnimators.push(animator);\r\n                }\r\n            }\r\n            this.animators = leftAnimators;\r\n            return this;\r\n        };\r\n        Element.prototype.animateTo = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps);\r\n        };\r\n        Element.prototype.animateFrom = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps, true);\r\n        };\r\n        Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\r\n            var animators = animateTo(this, target, cfg, animationProps);\r\n            for (var i = 0; i < animators.length; i++) {\r\n                animators[i].__fromStateTransition = stateName;\r\n            }\r\n        };\r\n        Element.prototype.getBoundingRect = function () {\r\n            return null;\r\n        };\r\n        Element.REDARAW_BIT = 1;\r\n        Element.initDefaultProps = (function () {\r\n            var elProto = Element.prototype;\r\n            elProto.type = 'element';\r\n            elProto.name = '';\r\n            elProto.ignore = false;\r\n            elProto.silent = false;\r\n            elProto.isGroup = false;\r\n            elProto.draggable = false;\r\n            elProto.dragging = false;\r\n            elProto.__inHover = false;\r\n            elProto.__dirty = Element.REDARAW_BIT;\r\n            var logs = {};\r\n            function logDeprecatedError(key, xKey, yKey) {\r\n                if (!logs[key + xKey + yKey]) {\r\n                    console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\r\n                    logs[key + xKey + yKey] = true;\r\n                }\r\n            }\r\n            function createLegacyProperty(key, privateKey, xKey, yKey) {\r\n                Object.defineProperty(elProto, key, {\r\n                    get: function () {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        if (!this[privateKey]) {\r\n                            var pos = this[privateKey] = [];\r\n                            enhanceArray(this, pos);\r\n                        }\r\n                        return this[privateKey];\r\n                    },\r\n                    set: function (pos) {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        this[xKey] = pos[0];\r\n                        this[yKey] = pos[1];\r\n                        this[privateKey] = pos;\r\n                        enhanceArray(this, pos);\r\n                    }\r\n                });\r\n                function enhanceArray(self, pos) {\r\n                    Object.defineProperty(pos, 0, {\r\n                        get: function () {\r\n                            return self[xKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[xKey] = val;\r\n                        }\r\n                    });\r\n                    Object.defineProperty(pos, 1, {\r\n                        get: function () {\r\n                            return self[yKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[yKey] = val;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (Object.defineProperty && (!env.browser.ie || env.browser.version > 8)) {\r\n                createLegacyProperty('position', '_legacyPos', 'x', 'y');\r\n                createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\r\n                createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\r\n            }\r\n        })();\r\n        return Element;\r\n    }());\r\n    mixin(Element, Eventful);\r\n    mixin(Element, Transformable);\r\n    function animateTo(animatable, target, cfg, animationProps, reverse) {\r\n        cfg = cfg || {};\r\n        var animators = [];\r\n        animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\r\n        var count = animators.length;\r\n        function done() {\r\n            count--;\r\n            if (!count) {\r\n                cfg.done && cfg.done();\r\n            }\r\n        }\r\n        if (!count) {\r\n            cfg.done && cfg.done();\r\n        }\r\n        if (animators.length > 0 && typeof cfg.during === 'function') {\r\n            animators[0].during(function (target, percent) {\r\n                cfg.during(percent);\r\n            });\r\n        }\r\n        for (var i = 0; i < animators.length; i++) {\r\n            animators[i]\r\n                .done(done)\r\n                .start(cfg.easing, cfg.force);\r\n        }\r\n        return animators;\r\n    }\r\n    function copyArrShallow(source, target, len) {\r\n        for (var i = 0; i < len; i++) {\r\n            source[i] = target[i];\r\n        }\r\n    }\r\n    function is2DArray(value) {\r\n        return isArrayLike(value[0]);\r\n    }\r\n    function copyValue(target, source, key) {\r\n        if (isArrayLike(source[key])) {\r\n            if (!isArrayLike(target[key])) {\r\n                target[key] = [];\r\n            }\r\n            var sourceArr = source[key];\r\n            var targetArr = target[key];\r\n            var len0 = sourceArr.length;\r\n            if (is2DArray(sourceArr)) {\r\n                var len1 = sourceArr[0].length;\r\n                for (var i = 0; i < len0; i++) {\r\n                    if (!targetArr[i]) {\r\n                        targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\r\n                    }\r\n                    else {\r\n                        copyArrShallow(targetArr[i], sourceArr[i], len1);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                copyArrShallow(targetArr, sourceArr, len0);\r\n            }\r\n            targetArr.length = sourceArr.length;\r\n        }\r\n        else {\r\n            target[key] = source[key];\r\n        }\r\n    }\r\n    function animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse) {\r\n        var animatableKeys = [];\r\n        var changedKeys = [];\r\n        var targetKeys = keys(target);\r\n        var duration = cfg.duration;\r\n        var delay = cfg.delay;\r\n        var additive = cfg.additive;\r\n        var setToFinal = cfg.setToFinal;\r\n        var animateAll = !isObject(animationProps);\r\n        for (var k = 0; k < targetKeys.length; k++) {\r\n            var innerKey = targetKeys[k];\r\n            if (source[innerKey] != null\r\n                && target[innerKey] != null\r\n                && (animateAll || animationProps[innerKey])) {\r\n                if (isObject(target[innerKey]) && !isArrayLike(target[innerKey])) {\r\n                    if (topKey) {\r\n                        if (!reverse) {\r\n                            source[innerKey] = target[innerKey];\r\n                            animatable.updateDuringAnimation(topKey);\r\n                        }\r\n                        continue;\r\n                    }\r\n                    animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse);\r\n                }\r\n                else {\r\n                    animatableKeys.push(innerKey);\r\n                    changedKeys.push(innerKey);\r\n                }\r\n            }\r\n            else if (!reverse) {\r\n                source[innerKey] = target[innerKey];\r\n                animatable.updateDuringAnimation(topKey);\r\n                changedKeys.push(innerKey);\r\n            }\r\n        }\r\n        var keyLen = animatableKeys.length;\r\n        if (keyLen > 0 || cfg.force) {\r\n            var existsAnimators = animatable.animators;\r\n            var existsAnimatorsOnSameTarget = [];\r\n            for (var i = 0; i < existsAnimators.length; i++) {\r\n                if (existsAnimators[i].targetName === topKey) {\r\n                    existsAnimatorsOnSameTarget.push(existsAnimators[i]);\r\n                }\r\n            }\r\n            if (!additive && existsAnimatorsOnSameTarget.length) {\r\n                for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) {\r\n                    var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys);\r\n                    if (allAborted) {\r\n                        var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]);\r\n                        existsAnimators.splice(idx, 1);\r\n                    }\r\n                }\r\n            }\r\n            var revertedSource = void 0;\r\n            var reversedTarget = void 0;\r\n            var sourceClone = void 0;\r\n            if (reverse) {\r\n                reversedTarget = {};\r\n                if (setToFinal) {\r\n                    revertedSource = {};\r\n                }\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    reversedTarget[innerKey] = source[innerKey];\r\n                    if (setToFinal) {\r\n                        revertedSource[innerKey] = target[innerKey];\r\n                    }\r\n                    else {\r\n                        source[innerKey] = target[innerKey];\r\n                    }\r\n                }\r\n            }\r\n            else if (setToFinal) {\r\n                sourceClone = {};\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    sourceClone[innerKey] = cloneValue(source[innerKey]);\r\n                    copyValue(source, target, innerKey);\r\n                }\r\n            }\r\n            var animator = new Animator(source, false, additive ? existsAnimatorsOnSameTarget : null);\r\n            animator.targetName = topKey;\r\n            if (cfg.scope) {\r\n                animator.scope = cfg.scope;\r\n            }\r\n            if (setToFinal && revertedSource) {\r\n                animator.whenWithKeys(0, revertedSource, animatableKeys);\r\n            }\r\n            if (sourceClone) {\r\n                animator.whenWithKeys(0, sourceClone, animatableKeys);\r\n            }\r\n            animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animatableKeys).delay(delay || 0);\r\n            animatable.addAnimator(animator, topKey);\r\n            animators.push(animator);\r\n        }\r\n    }\n\n    var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\n    var DEFAULT_COMMON_STYLE = {\r\n        shadowBlur: 0,\r\n        shadowOffsetX: 0,\r\n        shadowOffsetY: 0,\r\n        shadowColor: '#000',\r\n        opacity: 1,\r\n        blend: 'source-over'\r\n    };\r\n    var DEFAULT_COMMON_ANIMATION_PROPS = {\r\n        style: {\r\n            shadowBlur: true,\r\n            shadowOffsetX: true,\r\n            shadowOffsetY: true,\r\n            shadowColor: true,\r\n            opacity: true\r\n        }\r\n    };\r\n    DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\n    var PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\n    var Displayable = (function (_super) {\r\n        __extends(Displayable, _super);\r\n        function Displayable(props) {\r\n            return _super.call(this, props) || this;\r\n        }\r\n        Displayable.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                if (key === 'style') {\r\n                    this.useStyle(props[key]);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, props[key]);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Displayable.prototype.beforeBrush = function () { };\r\n        Displayable.prototype.afterBrush = function () { };\r\n        Displayable.prototype.innerBeforeBrush = function () { };\r\n        Displayable.prototype.innerAfterBrush = function () { };\r\n        Displayable.prototype.contain = function (x, y) {\r\n            return this.rectContain(x, y);\r\n        };\r\n        Displayable.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        Displayable.prototype.rectContain = function (x, y) {\r\n            var coord = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            return rect.contain(coord[0], coord[1]);\r\n        };\r\n        Displayable.prototype.animateStyle = function (loop) {\r\n            return this.animate('style', loop);\r\n        };\r\n        Displayable.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Displayable.prototype.attrKV = function (key, value) {\r\n            if (key !== 'style') {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n            else {\r\n                if (!this.style) {\r\n                    this.useStyle(value);\r\n                }\r\n                else {\r\n                    this.setStyle(value);\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype.setStyle = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.style[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(this.style, keyOrObj);\r\n            }\r\n            this.dirtyStyle();\r\n            return this;\r\n        };\r\n        Displayable.prototype.dirtyStyle = function () {\r\n            this.markRedraw();\r\n            this.__dirty |= Displayable.STYLE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.styleChanged = function () {\r\n            return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\r\n        };\r\n        Displayable.prototype.styleUpdated = function () {\r\n            this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\r\n        };\r\n        Displayable.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_COMMON_STYLE, obj);\r\n        };\r\n        Displayable.prototype.useStyle = function (obj) {\r\n            if (!obj[STYLE_MAGIC_KEY]) {\r\n                obj = this.createStyle(obj);\r\n            }\r\n            if (this.__inHover) {\r\n                this.__hoverStyle = obj;\r\n            }\r\n            else {\r\n                this.style = obj;\r\n            }\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.isStyleObject = function (obj) {\r\n            return obj[STYLE_MAGIC_KEY];\r\n        };\r\n        Displayable.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.style && !normalState.style) {\r\n                normalState.style = this._mergeStyle(this.createStyle(), this.style);\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);\r\n        };\r\n        Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetStyle;\r\n            if (state && state.style) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetStyle = state.style;\r\n                    }\r\n                    else {\r\n                        targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\r\n                        this._mergeStyle(targetStyle, state.style);\r\n                    }\r\n                }\r\n                else {\r\n                    targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\r\n                    this._mergeStyle(targetStyle, state.style);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetStyle = normalState.style;\r\n            }\r\n            if (targetStyle) {\r\n                if (transition) {\r\n                    var sourceStyle = this.style;\r\n                    this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\r\n                    if (needsRestoreToNormal) {\r\n                        var changedKeys = keys(sourceStyle);\r\n                        for (var i = 0; i < changedKeys.length; i++) {\r\n                            var key = changedKeys[i];\r\n                            if (key in targetStyle) {\r\n                                targetStyle[key] = targetStyle[key];\r\n                                this.style[key] = sourceStyle[key];\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetKeys = keys(targetStyle);\r\n                    for (var i = 0; i < targetKeys.length; i++) {\r\n                        var key = targetKeys[i];\r\n                        this.style[key] = this.style[key];\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        style: targetStyle\r\n                    }, animationCfg, this._getAnimationStyleProps());\r\n                }\r\n                else {\r\n                    this.useStyle(targetStyle);\r\n                }\r\n            }\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS$1[i];\r\n                if (state && state[key] != null) {\r\n                    this[key] = state[key];\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        this[key] = normalState[key];\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedStyle;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.style) {\r\n                    mergedStyle = mergedStyle || {};\r\n                    this._mergeStyle(mergedStyle, state.style);\r\n                }\r\n            }\r\n            if (mergedStyle) {\r\n                mergedState.style = mergedStyle;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            extend(targetStyle, sourceStyle);\r\n            return targetStyle;\r\n        };\r\n        Displayable.prototype._getAnimationStyleProps = function () {\r\n            return DEFAULT_COMMON_ANIMATION_PROPS;\r\n        };\r\n        Displayable.STYLE_CHANGED_BIT = 2;\r\n        Displayable.initDefaultProps = (function () {\r\n            var dispProto = Displayable.prototype;\r\n            dispProto.type = 'displayable';\r\n            dispProto.invisible = false;\r\n            dispProto.z = 0;\r\n            dispProto.z2 = 0;\r\n            dispProto.zlevel = 0;\r\n            dispProto.culling = false;\r\n            dispProto.cursor = 'pointer';\r\n            dispProto.rectHover = false;\r\n            dispProto.incremental = false;\r\n            dispProto._rect = null;\r\n            dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\r\n        })();\r\n        return Displayable;\r\n    }(Element));\n\n    var mathPow = Math.pow;\r\n    var mathSqrt = Math.sqrt;\r\n    var EPSILON$1 = 1e-8;\r\n    var EPSILON_NUMERIC = 1e-4;\r\n    var THREE_SQRT = mathSqrt(3);\r\n    var ONE_THIRD = 1 / 3;\r\n    var _v0 = create();\r\n    var _v1 = create();\r\n    var _v2 = create();\r\n    function isAroundZero(val) {\r\n        return val > -EPSILON$1 && val < EPSILON$1;\r\n    }\r\n    function isNotAroundZero$1(val) {\r\n        return val > EPSILON$1 || val < -EPSILON$1;\r\n    }\r\n    function cubicAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return onet * onet * (onet * p0 + 3 * t * p1)\r\n            + t * t * (t * p3 + 3 * onet * p2);\r\n    }\r\n    function cubicDerivativeAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\r\n            + (p3 - p2) * t * t);\r\n    }\r\n    function cubicRootAt(p0, p1, p2, p3, val, roots) {\r\n        var a = p3 + 3 * (p1 - p2) - p0;\r\n        var b = 3 * (p2 - p1 * 2 + p0);\r\n        var c = 3 * (p1 - p0);\r\n        var d = p0 - val;\r\n        var A = b * b - 3 * a * c;\r\n        var B = b * c - 9 * a * d;\r\n        var C = c * c - 3 * b * d;\r\n        var n = 0;\r\n        if (isAroundZero(A) && isAroundZero(B)) {\r\n            if (isAroundZero(b)) {\r\n                roots[0] = 0;\r\n            }\r\n            else {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = B * B - 4 * A * C;\r\n            if (isAroundZero(disc)) {\r\n                var K = B / A;\r\n                var t1 = -b / a + K;\r\n                var t2 = -K / 2;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var Y1 = A * b + 1.5 * a * (-B + discSqrt);\r\n                var Y2 = A * b + 1.5 * a * (-B - discSqrt);\r\n                if (Y1 < 0) {\r\n                    Y1 = -mathPow(-Y1, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y1 = mathPow(Y1, ONE_THIRD);\r\n                }\r\n                if (Y2 < 0) {\r\n                    Y2 = -mathPow(-Y2, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y2 = mathPow(Y2, ONE_THIRD);\r\n                }\r\n                var t1 = (-b - (Y1 + Y2)) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else {\r\n                var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\r\n                var theta = Math.acos(T) / 3;\r\n                var ASqrt = mathSqrt(A);\r\n                var tmp = Math.cos(theta);\r\n                var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\r\n                var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n                if (t3 >= 0 && t3 <= 1) {\r\n                    roots[n++] = t3;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicExtrema(p0, p1, p2, p3, extrema) {\r\n        var b = 6 * p2 - 12 * p1 + 6 * p0;\r\n        var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\r\n        var c = 3 * p1 - 3 * p0;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                extrema[0] = -b / (2 * a);\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    extrema[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicSubdivide(p0, p1, p2, p3, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p23 = (p3 - p2) * t + p2;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        var p123 = (p23 - p12) * t + p12;\r\n        var p0123 = (p123 - p012) * t + p012;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p0123;\r\n        out[4] = p0123;\r\n        out[5] = p123;\r\n        out[6] = p23;\r\n        out[7] = p3;\r\n    }\r\n    function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        var prev;\r\n        var next;\r\n        var d1;\r\n        var d2;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, _t);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, _t);\r\n            d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            prev = t - interval;\r\n            next = t + interval;\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, prev);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, prev);\r\n            d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = cubicAt(x0, x1, x2, x3, next);\r\n                _v2[1] = cubicAt(y0, y1, y2, y3, next);\r\n                d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = cubicAt(x0, x1, x2, x3, t);\r\n            out[1] = cubicAt(y0, y1, y2, y3, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = cubicAt(x0, x1, x2, x3, t);\r\n            var y = cubicAt(y0, y1, y2, y3, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\r\n    function quadraticAt(p0, p1, p2, t) {\r\n        var onet = 1 - t;\r\n        return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\r\n    }\r\n    function quadraticDerivativeAt(p0, p1, p2, t) {\r\n        return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n    }\r\n    function quadraticRootAt(p0, p1, p2, val, roots) {\r\n        var a = p0 - 2 * p1 + p2;\r\n        var b = 2 * (p1 - p0);\r\n        var c = p0 - val;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                var t1 = -b / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function quadraticExtremum(p0, p1, p2) {\r\n        var divider = p0 + p2 - 2 * p1;\r\n        if (divider === 0) {\r\n            return 0.5;\r\n        }\r\n        else {\r\n            return (p0 - p1) / divider;\r\n        }\r\n    }\r\n    function quadraticSubdivide(p0, p1, p2, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p012;\r\n        out[4] = p12;\r\n        out[5] = p2;\r\n    }\r\n    function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = quadraticAt(x0, x1, x2, _t);\r\n            _v1[1] = quadraticAt(y0, y1, y2, _t);\r\n            var d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            var prev = t - interval;\r\n            var next = t + interval;\r\n            _v1[0] = quadraticAt(x0, x1, x2, prev);\r\n            _v1[1] = quadraticAt(y0, y1, y2, prev);\r\n            var d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = quadraticAt(x0, x1, x2, next);\r\n                _v2[1] = quadraticAt(y0, y1, y2, next);\r\n                var d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = quadraticAt(x0, x1, x2, t);\r\n            out[1] = quadraticAt(y0, y1, y2, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = quadraticAt(x0, x1, x2, t);\r\n            var y = quadraticAt(y0, y1, y2, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\n\n    var mathMin$1 = Math.min;\r\n    var mathMax$1 = Math.max;\r\n    var mathSin = Math.sin;\r\n    var mathCos = Math.cos;\r\n    var PI2 = Math.PI * 2;\r\n    var start = create();\r\n    var end = create();\r\n    var extremity = create();\r\n    function fromPoints(points, min, max) {\r\n        if (points.length === 0) {\r\n            return;\r\n        }\r\n        var p = points[0];\r\n        var left = p[0];\r\n        var right = p[0];\r\n        var top = p[1];\r\n        var bottom = p[1];\r\n        for (var i = 1; i < points.length; i++) {\r\n            p = points[i];\r\n            left = mathMin$1(left, p[0]);\r\n            right = mathMax$1(right, p[0]);\r\n            top = mathMin$1(top, p[1]);\r\n            bottom = mathMax$1(bottom, p[1]);\r\n        }\r\n        min[0] = left;\r\n        min[1] = top;\r\n        max[0] = right;\r\n        max[1] = bottom;\r\n    }\r\n    function fromLine(x0, y0, x1, y1, min, max) {\r\n        min[0] = mathMin$1(x0, x1);\r\n        min[1] = mathMin$1(y0, y1);\r\n        max[0] = mathMax$1(x0, x1);\r\n        max[1] = mathMax$1(y0, y1);\r\n    }\r\n    var xDim = [];\r\n    var yDim = [];\r\n    function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\r\n        var cubicExtrema$1 = cubicExtrema;\r\n        var cubicAt$1 = cubicAt;\r\n        var n = cubicExtrema$1(x0, x1, x2, x3, xDim);\r\n        min[0] = Infinity;\r\n        min[1] = Infinity;\r\n        max[0] = -Infinity;\r\n        max[1] = -Infinity;\r\n        for (var i = 0; i < n; i++) {\r\n            var x = cubicAt$1(x0, x1, x2, x3, xDim[i]);\r\n            min[0] = mathMin$1(x, min[0]);\r\n            max[0] = mathMax$1(x, max[0]);\r\n        }\r\n        n = cubicExtrema$1(y0, y1, y2, y3, yDim);\r\n        for (var i = 0; i < n; i++) {\r\n            var y = cubicAt$1(y0, y1, y2, y3, yDim[i]);\r\n            min[1] = mathMin$1(y, min[1]);\r\n            max[1] = mathMax$1(y, max[1]);\r\n        }\r\n        min[0] = mathMin$1(x0, min[0]);\r\n        max[0] = mathMax$1(x0, max[0]);\r\n        min[0] = mathMin$1(x3, min[0]);\r\n        max[0] = mathMax$1(x3, max[0]);\r\n        min[1] = mathMin$1(y0, min[1]);\r\n        max[1] = mathMax$1(y0, max[1]);\r\n        min[1] = mathMin$1(y3, min[1]);\r\n        max[1] = mathMax$1(y3, max[1]);\r\n    }\r\n    function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\r\n        var quadraticExtremum$1 = quadraticExtremum;\r\n        var quadraticAt$1 = quadraticAt;\r\n        var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0);\r\n        var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0);\r\n        var x = quadraticAt$1(x0, x1, x2, tx);\r\n        var y = quadraticAt$1(y0, y1, y2, ty);\r\n        min[0] = mathMin$1(x0, x2, x);\r\n        min[1] = mathMin$1(y0, y2, y);\r\n        max[0] = mathMax$1(x0, x2, x);\r\n        max[1] = mathMax$1(y0, y2, y);\r\n    }\r\n    function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) {\r\n        var vec2Min = min;\r\n        var vec2Max = max;\r\n        var diff = Math.abs(startAngle - endAngle);\r\n        if (diff % PI2 < 1e-4 && diff > 1e-4) {\r\n            min$1[0] = x - rx;\r\n            min$1[1] = y - ry;\r\n            max$1[0] = x + rx;\r\n            max$1[1] = y + ry;\r\n            return;\r\n        }\r\n        start[0] = mathCos(startAngle) * rx + x;\r\n        start[1] = mathSin(startAngle) * ry + y;\r\n        end[0] = mathCos(endAngle) * rx + x;\r\n        end[1] = mathSin(endAngle) * ry + y;\r\n        vec2Min(min$1, start, end);\r\n        vec2Max(max$1, start, end);\r\n        startAngle = startAngle % (PI2);\r\n        if (startAngle < 0) {\r\n            startAngle = startAngle + PI2;\r\n        }\r\n        endAngle = endAngle % (PI2);\r\n        if (endAngle < 0) {\r\n            endAngle = endAngle + PI2;\r\n        }\r\n        if (startAngle > endAngle && !anticlockwise) {\r\n            endAngle += PI2;\r\n        }\r\n        else if (startAngle < endAngle && anticlockwise) {\r\n            startAngle += PI2;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = endAngle;\r\n            endAngle = startAngle;\r\n            startAngle = tmp;\r\n        }\r\n        for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\r\n            if (angle > startAngle) {\r\n                extremity[0] = mathCos(angle) * rx + x;\r\n                extremity[1] = mathSin(angle) * ry + y;\r\n                vec2Min(min$1, extremity, min$1);\r\n                vec2Max(max$1, extremity, max$1);\r\n            }\r\n        }\r\n    }\n\n    var CMD = {\r\n        M: 1,\r\n        L: 2,\r\n        C: 3,\r\n        Q: 4,\r\n        A: 5,\r\n        Z: 6,\r\n        R: 7\r\n    };\r\n    var tmpOutX = [];\r\n    var tmpOutY = [];\r\n    var min$1 = [];\r\n    var max$1 = [];\r\n    var min2 = [];\r\n    var max2 = [];\r\n    var mathMin$2 = Math.min;\r\n    var mathMax$2 = Math.max;\r\n    var mathCos$1 = Math.cos;\r\n    var mathSin$1 = Math.sin;\r\n    var mathSqrt$1 = Math.sqrt;\r\n    var mathAbs = Math.abs;\r\n    var PI = Math.PI;\r\n    var PI2$1 = PI * 2;\r\n    var hasTypedArray = typeof Float32Array !== 'undefined';\r\n    var PathProxy = (function () {\r\n        function PathProxy(notSaveData) {\r\n            this.dpr = 1;\r\n            this._xi = 0;\r\n            this._yi = 0;\r\n            this._x0 = 0;\r\n            this._y0 = 0;\r\n            this._len = 0;\r\n            if (notSaveData) {\r\n                this._saveData = false;\r\n            }\r\n            if (this._saveData) {\r\n                this.data = [];\r\n            }\r\n        }\r\n        PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\r\n            segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\r\n            if (segmentIgnoreThreshold > 0) {\r\n                this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;\r\n                this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;\r\n            }\r\n        };\r\n        PathProxy.prototype.setDPR = function (dpr) {\r\n            this.dpr = dpr;\r\n        };\r\n        PathProxy.prototype.setContext = function (ctx) {\r\n            this._ctx = ctx;\r\n        };\r\n        PathProxy.prototype.getContext = function () {\r\n            return this._ctx;\r\n        };\r\n        PathProxy.prototype.beginPath = function () {\r\n            this._ctx && this._ctx.beginPath();\r\n            this.reset();\r\n            return this;\r\n        };\r\n        PathProxy.prototype.reset = function () {\r\n            if (this._saveData) {\r\n                this._len = 0;\r\n            }\r\n            if (this._lineDash) {\r\n                this._lineDash = null;\r\n                this._dashOffset = 0;\r\n            }\r\n            if (this._pathSegLen) {\r\n                this._pathSegLen = null;\r\n                this._pathLen = 0;\r\n            }\r\n        };\r\n        PathProxy.prototype.moveTo = function (x, y) {\r\n            this.addData(CMD.M, x, y);\r\n            this._ctx && this._ctx.moveTo(x, y);\r\n            this._x0 = x;\r\n            this._y0 = y;\r\n            this._xi = x;\r\n            this._yi = y;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.lineTo = function (x, y) {\r\n            var exceedUnit = mathAbs(x - this._xi) > this._ux\r\n                || mathAbs(y - this._yi) > this._uy\r\n                || this._len < 5;\r\n            this.addData(CMD.L, x, y);\r\n            if (this._ctx && exceedUnit) {\r\n                this._needsDash ? this._dashedLineTo(x, y)\r\n                    : this._ctx.lineTo(x, y);\r\n            }\r\n            if (exceedUnit) {\r\n                this._xi = x;\r\n                this._yi = y;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\r\n            this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\r\n                    : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n            }\r\n            this._xi = x3;\r\n            this._yi = y3;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\r\n            this.addData(CMD.Q, x1, y1, x2, y2);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\r\n                    : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n            }\r\n            this._xi = x2;\r\n            this._yi = y2;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            var delta = endAngle - startAngle;\r\n            endAngle = startAngle + delta;\r\n            this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\r\n            this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n            this._xi = mathCos$1(endAngle) * r + cx;\r\n            this._yi = mathSin$1(endAngle) * r + cy;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n            if (this._ctx) {\r\n                this._ctx.arcTo(x1, y1, x2, y2, radius);\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.rect = function (x, y, w, h) {\r\n            this._ctx && this._ctx.rect(x, y, w, h);\r\n            this.addData(CMD.R, x, y, w, h);\r\n            return this;\r\n        };\r\n        PathProxy.prototype.closePath = function () {\r\n            this.addData(CMD.Z);\r\n            var ctx = this._ctx;\r\n            var x0 = this._x0;\r\n            var y0 = this._y0;\r\n            if (ctx) {\r\n                this._needsDash && this._dashedLineTo(x0, y0);\r\n                ctx.closePath();\r\n            }\r\n            this._xi = x0;\r\n            this._yi = y0;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.fill = function (ctx) {\r\n            ctx && ctx.fill();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.stroke = function (ctx) {\r\n            ctx && ctx.stroke();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.setLineDash = function (lineDash) {\r\n            if (lineDash instanceof Array) {\r\n                this._lineDash = lineDash;\r\n                this._dashIdx = 0;\r\n                var lineDashSum = 0;\r\n                for (var i = 0; i < lineDash.length; i++) {\r\n                    lineDashSum += lineDash[i];\r\n                }\r\n                this._dashSum = lineDashSum;\r\n                this._needsDash = true;\r\n            }\r\n            else {\r\n                this._lineDash = null;\r\n                this._needsDash = false;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.setLineDashOffset = function (offset) {\r\n            this._dashOffset = offset;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        PathProxy.prototype.setData = function (data) {\r\n            var len = data.length;\r\n            if (!(this.data && this.data.length === len) && hasTypedArray) {\r\n                this.data = new Float32Array(len);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                this.data[i] = data[i];\r\n            }\r\n            this._len = len;\r\n        };\r\n        PathProxy.prototype.appendPath = function (path) {\r\n            if (!(path instanceof Array)) {\r\n                path = [path];\r\n            }\r\n            var len = path.length;\r\n            var appendSize = 0;\r\n            var offset = this._len;\r\n            for (var i = 0; i < len; i++) {\r\n                appendSize += path[i].len();\r\n            }\r\n            if (hasTypedArray && (this.data instanceof Float32Array)) {\r\n                this.data = new Float32Array(offset + appendSize);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                var appendPathData = path[i].data;\r\n                for (var k = 0; k < appendPathData.length; k++) {\r\n                    this.data[offset++] = appendPathData[k];\r\n                }\r\n            }\r\n            this._len = offset;\r\n        };\r\n        PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (this._len + arguments.length > data.length) {\r\n                this._expandData();\r\n                data = this.data;\r\n            }\r\n            for (var i = 0; i < arguments.length; i++) {\r\n                data[this._len++] = arguments[i];\r\n            }\r\n        };\r\n        PathProxy.prototype._expandData = function () {\r\n            if (!(this.data instanceof Array)) {\r\n                var newData = [];\r\n                for (var i = 0; i < this._len; i++) {\r\n                    newData[i] = this.data[i];\r\n                }\r\n                this.data = newData;\r\n            }\r\n        };\r\n        PathProxy.prototype._dashedLineTo = function (x1, y1) {\r\n            var dashSum = this._dashSum;\r\n            var lineDash = this._lineDash;\r\n            var ctx = this._ctx;\r\n            var offset = this._dashOffset;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var dx = x1 - x0;\r\n            var dy = y1 - y0;\r\n            var dist = mathSqrt$1(dx * dx + dy * dy);\r\n            var x = x0;\r\n            var y = y0;\r\n            var nDash = lineDash.length;\r\n            var dash;\r\n            var idx;\r\n            dx /= dist;\r\n            dy /= dist;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            x -= offset * dx;\r\n            y -= offset * dy;\r\n            while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\r\n                || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\r\n                idx = this._dashIdx;\r\n                dash = lineDash[idx];\r\n                x += dx * dash;\r\n                y += dy * dash;\r\n                this._dashIdx = (idx + 1) % nDash;\r\n                if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\r\n                    continue;\r\n                }\r\n                ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin$2(x, x1) : mathMax$2(x, x1), dy >= 0 ? mathMin$2(y, y1) : mathMax$2(y, y1));\r\n            }\r\n            dx = x - x1;\r\n            dy = y - y1;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\r\n            var ctx = this._ctx;\r\n            var dashSum = this._dashSum;\r\n            var offset = this._dashOffset;\r\n            var lineDash = this._lineDash;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var bezierLen = 0;\r\n            var idx = this._dashIdx;\r\n            var nDash = lineDash.length;\r\n            var t;\r\n            var dx;\r\n            var dy;\r\n            var x;\r\n            var y;\r\n            var tmpLen = 0;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            for (t = 0; t < 1; t += 0.1) {\r\n                dx = cubicAt(x0, x1, x2, x3, t + 0.1)\r\n                    - cubicAt(x0, x1, x2, x3, t);\r\n                dy = cubicAt(y0, y1, y2, y3, t + 0.1)\r\n                    - cubicAt(y0, y1, y2, y3, t);\r\n                bezierLen += mathSqrt$1(dx * dx + dy * dy);\r\n            }\r\n            for (; idx < nDash; idx++) {\r\n                tmpLen += lineDash[idx];\r\n                if (tmpLen > offset) {\r\n                    break;\r\n                }\r\n            }\r\n            t = (tmpLen - offset) / bezierLen;\r\n            while (t <= 1) {\r\n                x = cubicAt(x0, x1, x2, x3, t);\r\n                y = cubicAt(y0, y1, y2, y3, t);\r\n                idx % 2 ? ctx.moveTo(x, y)\r\n                    : ctx.lineTo(x, y);\r\n                t += lineDash[idx] / bezierLen;\r\n                idx = (idx + 1) % nDash;\r\n            }\r\n            (idx % 2 !== 0) && ctx.lineTo(x3, y3);\r\n            dx = x3 - x;\r\n            dy = y3 - y;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\r\n            var x3 = x2;\r\n            var y3 = y2;\r\n            x2 = (x2 + 2 * x1) / 3;\r\n            y2 = (y2 + 2 * y1) / 3;\r\n            x1 = (this._xi + 2 * x1) / 3;\r\n            y1 = (this._yi + 2 * y1) / 3;\r\n            this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\r\n        };\r\n        PathProxy.prototype.toStatic = function () {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (data instanceof Array) {\r\n                data.length = this._len;\r\n                if (hasTypedArray && this._len > 11) {\r\n                    this.data = new Float32Array(data);\r\n                }\r\n            }\r\n        };\r\n        PathProxy.prototype.getBoundingRect = function () {\r\n            min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE;\r\n            max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\r\n            var data = this.data;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            var i;\r\n            for (i = 0; i < data.length;) {\r\n                var cmd = data[i++];\r\n                if (i === 1) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        min2[0] = x0;\r\n                        min2[1] = y0;\r\n                        max2[0] = x0;\r\n                        max2[1] = y0;\r\n                        break;\r\n                    case CMD.L:\r\n                        fromLine(xi, yi, data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.C:\r\n                        fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.Q:\r\n                        fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var endAngle = data[i++] + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = 1 - data[i++];\r\n                        if (i === 1) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        fromArc(cx, cy, rx, ry, startAngle, endAngle, !!anticlockwise, min2, max2);\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\r\n                        break;\r\n                    case CMD.Z:\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                }\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]);\r\n        };\r\n        PathProxy.prototype._calculateLength = function () {\r\n            var data = this.data;\r\n            var len = this._len;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            if (!this._pathSegLen) {\r\n                this._pathSegLen = [];\r\n            }\r\n            var pathSegLen = this._pathSegLen;\r\n            var pathTotalLen = 0;\r\n            var segCount = 0;\r\n            for (var i = 0; i < len;) {\r\n                var cmd = data[i++];\r\n                if (i === 1) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                var l = -1;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        break;\r\n                    case CMD.L: {\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var dx = x2 - xi;\r\n                        var dy = y2 - yi;\r\n                        if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\r\n                            l = Math.sqrt(dx * dx + dy * dy);\r\n                            xi = x2;\r\n                            yi = y2;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var x3 = data[i++];\r\n                        var y3 = data[i++];\r\n                        l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var delta = data[i++];\r\n                        var endAngle = delta + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (i === 1) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta));\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R: {\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        l = width * 2 + height * 2;\r\n                        break;\r\n                    }\r\n                    case CMD.Z: {\r\n                        var dx = x0 - xi;\r\n                        var dy = y0 - yi;\r\n                        l = Math.sqrt(dx * dx + dy * dy);\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                    }\r\n                }\r\n                if (l >= 0) {\r\n                    pathSegLen[segCount++] = l;\r\n                    pathTotalLen += l;\r\n                }\r\n            }\r\n            this._pathLen = pathTotalLen;\r\n            return pathTotalLen;\r\n        };\r\n        PathProxy.prototype.rebuildPath = function (ctx, percent) {\r\n            var d = this.data;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var len = this._len;\r\n            var x0;\r\n            var y0;\r\n            var xi;\r\n            var yi;\r\n            var x;\r\n            var y;\r\n            var drawPart = percent < 1;\r\n            var pathSegLen;\r\n            var pathTotalLen;\r\n            var accumLength = 0;\r\n            var segCount = 0;\r\n            var displayedLength;\r\n            if (drawPart) {\r\n                if (!this._pathSegLen) {\r\n                    this._calculateLength();\r\n                }\r\n                pathSegLen = this._pathSegLen;\r\n                pathTotalLen = this._pathLen;\r\n                displayedLength = percent * pathTotalLen;\r\n                if (!displayedLength) {\r\n                    return;\r\n                }\r\n            }\r\n            lo: for (var i = 0; i < len;) {\r\n                var cmd = d[i++];\r\n                if (i === 1) {\r\n                    xi = d[i];\r\n                    yi = d[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = xi = d[i++];\r\n                        y0 = yi = d[i++];\r\n                        ctx.moveTo(xi, yi);\r\n                        break;\r\n                    case CMD.L: {\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\r\n                            if (drawPart) {\r\n                                var l = pathSegLen[segCount++];\r\n                                if (accumLength + l > displayedLength) {\r\n                                    var t = (displayedLength - accumLength) / l;\r\n                                    ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\r\n                                    break lo;\r\n                                }\r\n                                accumLength += l;\r\n                            }\r\n                            ctx.lineTo(x, y);\r\n                            xi = x;\r\n                            yi = y;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        var x3 = d[i++];\r\n                        var y3 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\r\n                                cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\r\n                                ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                quadraticSubdivide(xi, x1, x2, t, tmpOutX);\r\n                                quadraticSubdivide(yi, y1, y2, t, tmpOutY);\r\n                                ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = d[i++];\r\n                        var cy = d[i++];\r\n                        var rx = d[i++];\r\n                        var ry = d[i++];\r\n                        var startAngle = d[i++];\r\n                        var delta = d[i++];\r\n                        var psi = d[i++];\r\n                        var anticlockwise = !d[i++];\r\n                        var r = (rx > ry) ? rx : ry;\r\n                        var scaleX = (rx > ry) ? 1 : rx / ry;\r\n                        var scaleY = (rx > ry) ? ry / rx : 1;\r\n                        var isEllipse = mathAbs(rx - ry) > 1e-3;\r\n                        var endAngle = startAngle + delta;\r\n                        var breakBuild = false;\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                endAngle = startAngle + delta * (displayedLength - accumLength) / l;\r\n                                breakBuild = true;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        if (isEllipse) {\r\n                            ctx.translate(cx, cy);\r\n                            ctx.rotate(psi);\r\n                            ctx.scale(scaleX, scaleY);\r\n                            ctx.arc(0, 0, r, startAngle, endAngle, anticlockwise);\r\n                            ctx.scale(1 / scaleX, 1 / scaleY);\r\n                            ctx.rotate(-psi);\r\n                            ctx.translate(-cx, -cy);\r\n                        }\r\n                        else {\r\n                            ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        if (breakBuild) {\r\n                            break lo;\r\n                        }\r\n                        if (i === 1) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = d[i];\r\n                        y0 = yi = d[i + 1];\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        var width = d[i++];\r\n                        var height = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var d_1 = displayedLength - accumLength;\r\n                                ctx.moveTo(x, y);\r\n                                ctx.lineTo(x + mathMin$2(d_1, width), y);\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + width, y + mathMin$2(d_1, height));\r\n                                }\r\n                                d_1 -= height;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height);\r\n                                }\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x, y + mathMax$2(height - d_1, 0));\r\n                                }\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.rect(x, y, width, height);\r\n                        break;\r\n                    case CMD.Z:\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.closePath();\r\n                        xi = x0;\r\n                        yi = y0;\r\n                }\r\n            }\r\n        };\r\n        PathProxy.CMD = CMD;\r\n        PathProxy.initDefaultProps = (function () {\r\n            var proto = PathProxy.prototype;\r\n            proto._saveData = true;\r\n            proto._needsDash = false;\r\n            proto._dashOffset = 0;\r\n            proto._dashIdx = 0;\r\n            proto._dashSum = 0;\r\n            proto._ux = 0;\r\n            proto._uy = 0;\r\n        })();\r\n        return PathProxy;\r\n    }());\n\n    function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        var _a = 0;\r\n        var _b = x0;\r\n        if ((y > y0 + _l && y > y1 + _l)\r\n            || (y < y0 - _l && y < y1 - _l)\r\n            || (x > x0 + _l && x > x1 + _l)\r\n            || (x < x0 - _l && x < x1 - _l)) {\r\n            return false;\r\n        }\r\n        if (x0 !== x1) {\r\n            _a = (y0 - y1) / (x0 - x1);\r\n            _b = (x0 * y1 - x1 * y0) / (x0 - x1);\r\n        }\r\n        else {\r\n            return Math.abs(x - x0) <= _l / 2;\r\n        }\r\n        var tmp = _a * x - y + _b;\r\n        var _s = tmp * tmp / (_a * _a + 1);\r\n        return _s <= _l / 2 * _l / 2;\r\n    }\n\n    function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\r\n            return false;\r\n        }\r\n        var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\r\n            return false;\r\n        }\r\n        var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    var PI2$2 = Math.PI * 2;\r\n    function normalizeRadian(angle) {\r\n        angle %= PI2$2;\r\n        if (angle < 0) {\r\n            angle += PI2$2;\r\n        }\r\n        return angle;\r\n    }\n\n    var PI2$3 = Math.PI * 2;\r\n    function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        if ((d - _l > r) || (d + _l < r)) {\r\n            return false;\r\n        }\r\n        if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) {\r\n            return true;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$3;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$3;\r\n        }\r\n        return (angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle);\r\n    }\n\n    function windingLine(x0, y0, x1, y1, x, y) {\r\n        if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\r\n            return 0;\r\n        }\r\n        if (y1 === y0) {\r\n            return 0;\r\n        }\r\n        var t = (y - y0) / (y1 - y0);\r\n        var dir = y1 < y0 ? 1 : -1;\r\n        if (t === 1 || t === 0) {\r\n            dir = y1 < y0 ? 0.5 : -0.5;\r\n        }\r\n        var x_ = t * (x1 - x0) + x0;\r\n        return x_ === x ? Infinity : x_ > x ? dir : 0;\r\n    }\n\n    var CMD$1 = PathProxy.CMD;\r\n    var PI2$4 = Math.PI * 2;\r\n    var EPSILON$2 = 1e-4;\r\n    function isAroundEqual(a, b) {\r\n        return Math.abs(a - b) < EPSILON$2;\r\n    }\r\n    var roots = [-1, -1, -1];\r\n    var extrema = [-1, -1];\r\n    function swapExtrema() {\r\n        var tmp = extrema[0];\r\n        extrema[0] = extrema[1];\r\n        extrema[1] = tmp;\r\n    }\r\n    function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2 && y > y3)\r\n            || (y < y0 && y < y1 && y < y2 && y < y3)) {\r\n            return 0;\r\n        }\r\n        var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var w = 0;\r\n            var nExtrema = -1;\r\n            var y0_ = void 0;\r\n            var y1_ = void 0;\r\n            for (var i = 0; i < nRoots; i++) {\r\n                var t = roots[i];\r\n                var unit = (t === 0 || t === 1) ? 0.5 : 1;\r\n                var x_ = cubicAt(x0, x1, x2, x3, t);\r\n                if (x_ < x) {\r\n                    continue;\r\n                }\r\n                if (nExtrema < 0) {\r\n                    nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);\r\n                    if (extrema[1] < extrema[0] && nExtrema > 1) {\r\n                        swapExtrema();\r\n                    }\r\n                    y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);\r\n                    if (nExtrema > 1) {\r\n                        y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);\r\n                    }\r\n                }\r\n                if (nExtrema === 2) {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else if (t < extrema[1]) {\r\n                        w += y1_ < y0_ ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y1_ ? unit : -unit;\r\n                    }\r\n                }\r\n                else {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y0_ ? unit : -unit;\r\n                    }\r\n                }\r\n            }\r\n            return w;\r\n        }\r\n    }\r\n    function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2)\r\n            || (y < y0 && y < y1 && y < y2)) {\r\n            return 0;\r\n        }\r\n        var nRoots = quadraticRootAt(y0, y1, y2, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var t = quadraticExtremum(y0, y1, y2);\r\n            if (t >= 0 && t <= 1) {\r\n                var w = 0;\r\n                var y_ = quadraticAt(y0, y1, y2, t);\r\n                for (var i = 0; i < nRoots; i++) {\r\n                    var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\r\n                    var x_ = quadraticAt(x0, x1, x2, roots[i]);\r\n                    if (x_ < x) {\r\n                        continue;\r\n                    }\r\n                    if (roots[i] < t) {\r\n                        w += y_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y2 < y_ ? unit : -unit;\r\n                    }\r\n                }\r\n                return w;\r\n            }\r\n            else {\r\n                var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\r\n                var x_ = quadraticAt(x0, x1, x2, roots[0]);\r\n                if (x_ < x) {\r\n                    return 0;\r\n                }\r\n                return y2 < y0 ? unit : -unit;\r\n            }\r\n        }\r\n    }\r\n    function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\r\n        y -= cy;\r\n        if (y > r || y < -r) {\r\n            return 0;\r\n        }\r\n        var tmp = Math.sqrt(r * r - y * y);\r\n        roots[0] = -tmp;\r\n        roots[1] = tmp;\r\n        var dTheta = Math.abs(startAngle - endAngle);\r\n        if (dTheta < 1e-4) {\r\n            return 0;\r\n        }\r\n        if (dTheta % PI2$4 < 1e-4) {\r\n            startAngle = 0;\r\n            endAngle = PI2$4;\r\n            var dir = anticlockwise ? 1 : -1;\r\n            if (x >= roots[0] + cx && x <= roots[1] + cx) {\r\n                return dir;\r\n            }\r\n            else {\r\n                return 0;\r\n            }\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp_1 = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp_1);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$4;\r\n        }\r\n        var w = 0;\r\n        for (var i = 0; i < 2; i++) {\r\n            var x_ = roots[i];\r\n            if (x_ + cx > x) {\r\n                var angle = Math.atan2(y, x_);\r\n                var dir = anticlockwise ? 1 : -1;\r\n                if (angle < 0) {\r\n                    angle = PI2$4 + angle;\r\n                }\r\n                if ((angle >= startAngle && angle <= endAngle)\r\n                    || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) {\r\n                    if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\r\n                        dir = -dir;\r\n                    }\r\n                    w += dir;\r\n                }\r\n            }\r\n        }\r\n        return w;\r\n    }\r\n    function containPath(data, lineWidth, isStroke, x, y) {\r\n        var w = 0;\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        for (var i = 0; i < data.length;) {\r\n            var cmd = data[i++];\r\n            if (cmd === CMD$1.M && i > 1) {\r\n                if (!isStroke) {\r\n                    w += windingLine(xi, yi, x0, y0, x, y);\r\n                }\r\n            }\r\n            if (i === 1) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            switch (cmd) {\r\n                case CMD$1.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$1.L:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.C:\r\n                    if (isStroke) {\r\n                        if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.Q:\r\n                    if (isStroke) {\r\n                        if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (i > 1) {\r\n                        w += windingLine(xi, yi, x1, y1, x, y);\r\n                    }\r\n                    else {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    if (isStroke) {\r\n                        if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\r\n                    }\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$1.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    x1 = x0 + width;\r\n                    y1 = y0 + height;\r\n                    if (isStroke) {\r\n                        if (containStroke(x0, y0, x1, y0, lineWidth, x, y)\r\n                            || containStroke(x1, y0, x1, y1, lineWidth, x, y)\r\n                            || containStroke(x1, y1, x0, y1, lineWidth, x, y)\r\n                            || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(x1, y0, x1, y1, x, y);\r\n                        w += windingLine(x0, y1, x0, y0, x, y);\r\n                    }\r\n                    break;\r\n                case CMD$1.Z:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, x0, y0, x, y);\r\n                    }\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n        }\r\n        if (!isStroke && !isAroundEqual(yi, y0)) {\r\n            w += windingLine(xi, yi, x0, y0, x, y) || 0;\r\n        }\r\n        return w !== 0;\r\n    }\r\n    function contain(pathData, x, y) {\r\n        return containPath(pathData, 0, false, x, y);\r\n    }\r\n    function containStroke$4(pathData, lineWidth, x, y) {\r\n        return containPath(pathData, lineWidth, true, x, y);\r\n    }\n\n    var DEFAULT_PATH_STYLE = defaults({\r\n        fill: '#000',\r\n        stroke: null,\r\n        strokePercent: 1,\r\n        fillOpacity: 1,\r\n        strokeOpacity: 1,\r\n        lineDashOffset: 0,\r\n        lineWidth: 1,\r\n        lineCap: 'butt',\r\n        miterLimit: 10,\r\n        strokeNoScale: false,\r\n        strokeFirst: false\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_PATH_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            strokePercent: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineDashOffset: true,\r\n            lineWidth: true,\r\n            miterLimit: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var Path = (function (_super) {\r\n        __extends(Path, _super);\r\n        function Path(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Path.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            this.shape = this.getDefaultShape();\r\n            var defaultStyle = this.getDefaultStyle();\r\n            if (defaultStyle) {\r\n                this.useStyle(defaultStyle);\r\n            }\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                var value = props[key];\r\n                if (key === 'style') {\r\n                    if (!this.style) {\r\n                        this.useStyle(value);\r\n                    }\r\n                    else {\r\n                        extend(this.style, value);\r\n                    }\r\n                }\r\n                else if (key === 'shape') {\r\n                    extend(this.shape, value);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, value);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Path.prototype.getDefaultStyle = function () {\r\n            return null;\r\n        };\r\n        Path.prototype.getDefaultShape = function () {\r\n            return {};\r\n        };\r\n        Path.prototype.canBeInsideText = function () {\r\n            return this.hasFill();\r\n        };\r\n        Path.prototype.getInsideTextFill = function () {\r\n            var pathFill = this.style.fill;\r\n            if (pathFill !== 'none') {\r\n                if (isString(pathFill)) {\r\n                    var fillLum = lum(pathFill, 0);\r\n                    if (fillLum > 0.6) {\r\n                        return DARK_LABEL_COLOR;\r\n                    }\r\n                    else if (fillLum > 0.2) {\r\n                        return LIGHTER_LABEL_COLOR;\r\n                    }\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n                else if (pathFill) {\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n            }\r\n            return DARK_LABEL_COLOR;\r\n        };\r\n        Path.prototype.getInsideTextStroke = function (textFill) {\r\n            var pathFill = this.style.fill;\r\n            if (isString(pathFill)) {\r\n                var zr = this.__zr;\r\n                var isDarkMode = !!(zr && zr.isDarkMode());\r\n                var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\r\n                if (isDarkMode === isDarkLabel) {\r\n                    return pathFill;\r\n                }\r\n            }\r\n        };\r\n        Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\r\n        Path.prototype.pathUpdated = function () {\r\n            this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\r\n        };\r\n        Path.prototype.createPathProxy = function () {\r\n            this.path = new PathProxy(false);\r\n        };\r\n        Path.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n        };\r\n        Path.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        Path.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            var style = this.style;\r\n            var needsUpdateRect = !rect;\r\n            if (needsUpdateRect) {\r\n                var firstInvoke = false;\r\n                if (!this.path) {\r\n                    firstInvoke = true;\r\n                    this.createPathProxy();\r\n                }\r\n                var path = this.path;\r\n                if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\r\n                    path.beginPath();\r\n                    this.buildPath(path, this.shape, false);\r\n                    this.pathUpdated();\r\n                }\r\n                rect = path.getBoundingRect();\r\n            }\r\n            this._rect = rect;\r\n            if (this.hasStroke()) {\r\n                var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\r\n                if (this.__dirty || needsUpdateRect) {\r\n                    rectWithStroke.copy(rect);\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    var w = style.lineWidth;\r\n                    if (!this.hasFill()) {\r\n                        w = Math.max(w, this.strokeContainThreshold || 4);\r\n                    }\r\n                    if (lineScale > 1e-10) {\r\n                        rectWithStroke.width += w / lineScale;\r\n                        rectWithStroke.height += w / lineScale;\r\n                        rectWithStroke.x -= w / lineScale / 2;\r\n                        rectWithStroke.y -= w / lineScale / 2;\r\n                    }\r\n                }\r\n                return rectWithStroke;\r\n            }\r\n            return rect;\r\n        };\r\n        Path.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            var style = this.style;\r\n            x = localPos[0];\r\n            y = localPos[1];\r\n            if (rect.contain(x, y)) {\r\n                var pathData = this.path.data;\r\n                if (this.hasStroke()) {\r\n                    var lineWidth = style.lineWidth;\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    if (lineScale > 1e-10) {\r\n                        if (!this.hasFill()) {\r\n                            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\r\n                        }\r\n                        if (containStroke$4(pathData, lineWidth / lineScale, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                }\r\n                if (this.hasFill()) {\r\n                    return contain(pathData, x, y);\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Path.prototype.dirtyShape = function () {\r\n            this.__dirty |= Path.SHAPE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        Path.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n            this.dirtyShape();\r\n        };\r\n        Path.prototype.animateShape = function (loop) {\r\n            return this.animate('shape', loop);\r\n        };\r\n        Path.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else if (targetKey === 'shape') {\r\n                this.dirtyShape();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Path.prototype.attrKV = function (key, value) {\r\n            if (key === 'shape') {\r\n                this.setShape(value);\r\n            }\r\n            else {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n        };\r\n        Path.prototype.setShape = function (keyOrObj, value) {\r\n            var shape = this.shape;\r\n            if (!shape) {\r\n                shape = this.shape = {};\r\n            }\r\n            if (typeof keyOrObj === 'string') {\r\n                shape[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(shape, keyOrObj);\r\n            }\r\n            this.dirtyShape();\r\n            return this;\r\n        };\r\n        Path.prototype.shapeChanged = function () {\r\n            return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\r\n        };\r\n        Path.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_PATH_STYLE, obj);\r\n        };\r\n        Path.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.shape && !normalState.shape) {\r\n                normalState.shape = extend({}, this.shape);\r\n            }\r\n        };\r\n        Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetShape;\r\n            if (state && state.shape) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetShape = state.shape;\r\n                    }\r\n                    else {\r\n                        targetShape = extend({}, normalState.shape);\r\n                        extend(targetShape, state.shape);\r\n                    }\r\n                }\r\n                else {\r\n                    targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\r\n                    extend(targetShape, state.shape);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetShape = normalState.shape;\r\n            }\r\n            if (targetShape) {\r\n                if (transition) {\r\n                    this.shape = extend({}, this.shape);\r\n                    var targetShapePrimaryProps = {};\r\n                    var shapeKeys = keys(targetShape);\r\n                    for (var i = 0; i < shapeKeys.length; i++) {\r\n                        var key = shapeKeys[i];\r\n                        if (typeof targetShape[key] === 'object') {\r\n                            this.shape[key] = targetShape[key];\r\n                        }\r\n                        else {\r\n                            targetShapePrimaryProps[key] = targetShape[key];\r\n                        }\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        shape: targetShapePrimaryProps\r\n                    }, animationCfg);\r\n                }\r\n                else {\r\n                    this.shape = targetShape;\r\n                    this.dirtyShape();\r\n                }\r\n            }\r\n        };\r\n        Path.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedShape;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.shape) {\r\n                    mergedShape = mergedShape || {};\r\n                    this._mergeStyle(mergedShape, state.shape);\r\n                }\r\n            }\r\n            if (mergedShape) {\r\n                mergedState.shape = mergedShape;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Path.prototype._getAnimationStyleProps = function () {\r\n            return DEFAULT_PATH_ANIMATION_PROPS;\r\n        };\r\n        Path.prototype.isZeroArea = function () {\r\n            return false;\r\n        };\r\n        Path.extend = function (defaultProps) {\r\n            var Sub = (function (_super) {\r\n                __extends(Sub, _super);\r\n                function Sub(opts) {\r\n                    var _this = _super.call(this, opts) || this;\r\n                    defaultProps.init && defaultProps.init.call(_this, opts);\r\n                    return _this;\r\n                }\r\n                Sub.prototype.getDefaultStyle = function () {\r\n                    return clone(defaultProps.style);\r\n                };\r\n                Sub.prototype.getDefaultShape = function () {\r\n                    return clone(defaultProps.shape);\r\n                };\r\n                return Sub;\r\n            }(Path));\r\n            for (var key in defaultProps) {\r\n                if (typeof defaultProps[key] === 'function') {\r\n                    Sub.prototype[key] = defaultProps[key];\r\n                }\r\n            }\r\n            return Sub;\r\n        };\r\n        Path.SHAPE_CHANGED_BIT = 4;\r\n        Path.initDefaultProps = (function () {\r\n            var pathProto = Path.prototype;\r\n            pathProto.type = 'path';\r\n            pathProto.strokeContainThreshold = 5;\r\n            pathProto.segmentIgnoreThreshold = 0;\r\n            pathProto.subPixelOptimize = false;\r\n            pathProto.autoBatch = false;\r\n            pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\r\n        })();\r\n        return Path;\r\n    }(Displayable));\n\n    var CMD$2 = PathProxy.CMD;\r\n    var points = [[], [], []];\r\n    var mathSqrt$2 = Math.sqrt;\r\n    var mathAtan2 = Math.atan2;\r\n    function transformPath (path, m) {\r\n        var data = path.data;\r\n        var cmd;\r\n        var nPoint;\r\n        var i;\r\n        var j;\r\n        var k;\r\n        var p;\r\n        var M = CMD$2.M;\r\n        var C = CMD$2.C;\r\n        var L = CMD$2.L;\r\n        var R = CMD$2.R;\r\n        var A = CMD$2.A;\r\n        var Q = CMD$2.Q;\r\n        for (i = 0, j = 0; i < data.length;) {\r\n            cmd = data[i++];\r\n            j = i;\r\n            nPoint = 0;\r\n            switch (cmd) {\r\n                case M:\r\n                    nPoint = 1;\r\n                    break;\r\n                case L:\r\n                    nPoint = 1;\r\n                    break;\r\n                case C:\r\n                    nPoint = 3;\r\n                    break;\r\n                case Q:\r\n                    nPoint = 2;\r\n                    break;\r\n                case A:\r\n                    var x = m[4];\r\n                    var y = m[5];\r\n                    var sx = mathSqrt$2(m[0] * m[0] + m[1] * m[1]);\r\n                    var sy = mathSqrt$2(m[2] * m[2] + m[3] * m[3]);\r\n                    var angle = mathAtan2(-m[1] / sy, m[0] / sx);\r\n                    data[i] *= sx;\r\n                    data[i++] += x;\r\n                    data[i] *= sy;\r\n                    data[i++] += y;\r\n                    data[i++] *= sx;\r\n                    data[i++] *= sy;\r\n                    data[i++] += angle;\r\n                    data[i++] += angle;\r\n                    i += 2;\r\n                    j = i;\r\n                    break;\r\n                case R:\r\n                    p[0] = data[i++];\r\n                    p[1] = data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n                    p[0] += data[i++];\r\n                    p[1] += data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n            }\r\n            for (k = 0; k < nPoint; k++) {\r\n                var p_1 = points[k];\r\n                p_1[0] = data[i++];\r\n                p_1[1] = data[i++];\r\n                applyTransform(p_1, p_1, m);\r\n                data[j++] = p_1[0];\r\n                data[j++] = p_1[1];\r\n            }\r\n        }\r\n    }\n\n    var mathSqrt$3 = Math.sqrt;\r\n    var mathSin$2 = Math.sin;\r\n    var mathCos$2 = Math.cos;\r\n    var PI$1 = Math.PI;\r\n    function vMag(v) {\r\n        return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n    }\r\n    function vRatio(u, v) {\r\n        return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n    }\r\n    function vAngle(u, v) {\r\n        return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\r\n            * Math.acos(vRatio(u, v));\r\n    }\r\n    function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\r\n        var psi = psiDeg * (PI$1 / 180.0);\r\n        var xp = mathCos$2(psi) * (x1 - x2) / 2.0\r\n            + mathSin$2(psi) * (y1 - y2) / 2.0;\r\n        var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0\r\n            + mathCos$2(psi) * (y1 - y2) / 2.0;\r\n        var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n        if (lambda > 1) {\r\n            rx *= mathSqrt$3(lambda);\r\n            ry *= mathSqrt$3(lambda);\r\n        }\r\n        var f = (fa === fs ? -1 : 1)\r\n            * mathSqrt$3((((rx * rx) * (ry * ry))\r\n                - ((rx * rx) * (yp * yp))\r\n                - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\r\n                + (ry * ry) * (xp * xp))) || 0;\r\n        var cxp = f * rx * yp / ry;\r\n        var cyp = f * -ry * xp / rx;\r\n        var cx = (x1 + x2) / 2.0\r\n            + mathCos$2(psi) * cxp\r\n            - mathSin$2(psi) * cyp;\r\n        var cy = (y1 + y2) / 2.0\r\n            + mathSin$2(psi) * cxp\r\n            + mathCos$2(psi) * cyp;\r\n        var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n        var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n        var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n        var dTheta = vAngle(u, v);\r\n        if (vRatio(u, v) <= -1) {\r\n            dTheta = PI$1;\r\n        }\r\n        if (vRatio(u, v) >= 1) {\r\n            dTheta = 0;\r\n        }\r\n        if (dTheta < 0) {\r\n            var n = Math.round(dTheta / PI$1 * 1e6) / 1e6;\r\n            dTheta = PI$1 * 2 + (n % 2) * PI$1;\r\n        }\r\n        path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\r\n    }\r\n    var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\n    var numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\n    function createPathProxyFromString(data) {\r\n        if (!data) {\r\n            return new PathProxy();\r\n        }\r\n        var cpx = 0;\r\n        var cpy = 0;\r\n        var subpathX = cpx;\r\n        var subpathY = cpy;\r\n        var prevCmd;\r\n        var path = new PathProxy();\r\n        var CMD = PathProxy.CMD;\r\n        var cmdList = data.match(commandReg);\r\n        for (var l = 0; l < cmdList.length; l++) {\r\n            var cmdText = cmdList[l];\r\n            var cmdStr = cmdText.charAt(0);\r\n            var cmd = void 0;\r\n            var p = cmdText.match(numberReg) || [];\r\n            var pLen = p.length;\r\n            for (var i = 0; i < pLen; i++) {\r\n                p[i] = parseFloat(p[i]);\r\n            }\r\n            var off = 0;\r\n            while (off < pLen) {\r\n                var ctlPtx = void 0;\r\n                var ctlPty = void 0;\r\n                var rx = void 0;\r\n                var ry = void 0;\r\n                var psi = void 0;\r\n                var fa = void 0;\r\n                var fs = void 0;\r\n                var x1 = cpx;\r\n                var y1 = cpy;\r\n                var len = void 0;\r\n                var pathData = void 0;\r\n                switch (cmdStr) {\r\n                    case 'l':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'L':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'm':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'l';\r\n                        break;\r\n                    case 'M':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'L';\r\n                        break;\r\n                    case 'h':\r\n                        cpx += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'H':\r\n                        cpx = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'v':\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'V':\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'C':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\r\n                        cpx = p[off - 2];\r\n                        cpy = p[off - 1];\r\n                        break;\r\n                    case 'c':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\r\n                        cpx += p[off - 2];\r\n                        cpy += p[off - 1];\r\n                        break;\r\n                    case 'S':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 's':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = cpx + p[off++];\r\n                        y1 = cpy + p[off++];\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'Q':\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'q':\r\n                        x1 = p[off++] + cpx;\r\n                        y1 = p[off++] + cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'T':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 't':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 'A':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                    case 'a':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                }\r\n            }\r\n            if (cmdStr === 'z' || cmdStr === 'Z') {\r\n                cmd = CMD.Z;\r\n                path.addData(cmd);\r\n                cpx = subpathX;\r\n                cpy = subpathY;\r\n            }\r\n            prevCmd = cmd;\r\n        }\r\n        path.toStatic();\r\n        return path;\r\n    }\r\n    var SVGPath = (function (_super) {\r\n        __extends(SVGPath, _super);\r\n        function SVGPath() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SVGPath.prototype.applyTransform = function (m) { };\r\n        return SVGPath;\r\n    }(Path));\r\n    function isPathProxy(path) {\r\n        return path.setData != null;\r\n    }\r\n    function createPathOptions(str, opts) {\r\n        var pathProxy = createPathProxyFromString(str);\r\n        var innerOpts = extend({}, opts);\r\n        innerOpts.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.setData(pathProxy.data);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n            else {\r\n                var ctx = path;\r\n                pathProxy.rebuildPath(ctx, 1);\r\n            }\r\n        };\r\n        innerOpts.applyTransform = function (m) {\r\n            transformPath(pathProxy, m);\r\n            this.dirtyShape();\r\n        };\r\n        return innerOpts;\r\n    }\r\n    function createFromString(str, opts) {\r\n        return new SVGPath(createPathOptions(str, opts));\r\n    }\n\n    var Group = (function (_super) {\r\n        __extends(Group, _super);\r\n        function Group(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.isGroup = true;\r\n            _this._children = [];\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        Group.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        Group.prototype.children = function () {\r\n            return this._children.slice();\r\n        };\r\n        Group.prototype.childAt = function (idx) {\r\n            return this._children[idx];\r\n        };\r\n        Group.prototype.childOfName = function (name) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (children[i].name === name) {\r\n                    return children[i];\r\n                }\r\n            }\r\n        };\r\n        Group.prototype.childCount = function () {\r\n            return this._children.length;\r\n        };\r\n        Group.prototype.add = function (child) {\r\n            if (child) {\r\n                if (child !== this && child.parent !== this) {\r\n                    this._children.push(child);\r\n                    this._doAdd(child);\r\n                }\r\n                if (child.__hostTarget) {\r\n                    throw 'This elemenet has been used as an attachment';\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addBefore = function (child, nextSibling) {\r\n            if (child && child !== this && child.parent !== this\r\n                && nextSibling && nextSibling.parent === this) {\r\n                var children = this._children;\r\n                var idx = children.indexOf(nextSibling);\r\n                if (idx >= 0) {\r\n                    children.splice(idx, 0, child);\r\n                    this._doAdd(child);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.replaceAt = function (child, index) {\r\n            var children = this._children;\r\n            var old = children[index];\r\n            if (child && child !== this && child.parent !== this && child !== old) {\r\n                children[index] = child;\r\n                old.parent = null;\r\n                var zr = this.__zr;\r\n                if (zr) {\r\n                    old.removeSelfFromZr(zr);\r\n                }\r\n                this._doAdd(child);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype._doAdd = function (child) {\r\n            if (child.parent) {\r\n                child.parent.remove(child);\r\n            }\r\n            child.parent = this;\r\n            var zr = this.__zr;\r\n            if (zr && zr !== child.__zr) {\r\n                child.addSelfToZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n        };\r\n        Group.prototype.remove = function (child) {\r\n            var zr = this.__zr;\r\n            var children = this._children;\r\n            var idx = indexOf(children, child);\r\n            if (idx < 0) {\r\n                return this;\r\n            }\r\n            children.splice(idx, 1);\r\n            child.parent = null;\r\n            if (zr) {\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n            return this;\r\n        };\r\n        Group.prototype.removeAll = function () {\r\n            var children = this._children;\r\n            var zr = this.__zr;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (zr) {\r\n                    child.removeSelfFromZr(zr);\r\n                }\r\n                child.parent = null;\r\n            }\r\n            children.length = 0;\r\n            return this;\r\n        };\r\n        Group.prototype.eachChild = function (cb, context) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                cb.call(context, child, i);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                var stopped = cb.call(context, child);\r\n                if (child.isGroup && !stopped) {\r\n                    child.traverse(cb, context);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.getBoundingRect = function (includeChildren) {\r\n            var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n            var children = includeChildren || this._children;\r\n            var tmpMat = [];\r\n            var rect = null;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (child.ignore || child.invisible) {\r\n                    continue;\r\n                }\r\n                var childRect = child.getBoundingRect();\r\n                var transform = child.getLocalTransform(tmpMat);\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(tmpRect, childRect, transform);\r\n                    rect = rect || tmpRect.clone();\r\n                    rect.union(tmpRect);\r\n                }\r\n                else {\r\n                    rect = rect || childRect.clone();\r\n                    rect.union(childRect);\r\n                }\r\n            }\r\n            return rect || tmpRect;\r\n        };\r\n        return Group;\r\n    }(Element));\r\n    Group.prototype.type = 'group';\n\n    var DEFAULT_IMAGE_STYLE = defaults({\r\n        x: 0,\r\n        y: 0\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_IMAGE_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            x: true,\r\n            y: true,\r\n            width: true,\r\n            height: true,\r\n            sx: true,\r\n            sy: true,\r\n            sWidth: true,\r\n            sHeight: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var ZRImage = (function (_super) {\r\n        __extends(ZRImage, _super);\r\n        function ZRImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ZRImage.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_IMAGE_STYLE, obj);\r\n        };\r\n        ZRImage.prototype._getAnimationStyleProps = function () {\r\n            return DEFAULT_IMAGE_ANIMATION_PROPS;\r\n        };\r\n        ZRImage.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\r\n            }\r\n            return this._rect;\r\n        };\r\n        return ZRImage;\r\n    }(Displayable));\r\n    ZRImage.prototype.type = 'image';\n\n    var CircleShape = (function () {\r\n        function CircleShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n        }\r\n        return CircleShape;\r\n    }());\r\n    var Circle = (function (_super) {\r\n        __extends(Circle, _super);\r\n        function Circle(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Circle.prototype.getDefaultShape = function () {\r\n            return new CircleShape();\r\n        };\r\n        Circle.prototype.buildPath = function (ctx, shape, inBundle) {\r\n            if (inBundle) {\r\n                ctx.moveTo(shape.cx + shape.r, shape.cy);\r\n            }\r\n            ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\r\n        };\r\n        return Circle;\r\n    }(Path));\r\n    Circle.prototype.type = 'circle';\n\n    function buildPath(ctx, shape) {\r\n        var x = shape.x;\r\n        var y = shape.y;\r\n        var width = shape.width;\r\n        var height = shape.height;\r\n        var r = shape.r;\r\n        var r1;\r\n        var r2;\r\n        var r3;\r\n        var r4;\r\n        if (width < 0) {\r\n            x = x + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y = y + height;\r\n            height = -height;\r\n        }\r\n        if (typeof r === 'number') {\r\n            r1 = r2 = r3 = r4 = r;\r\n        }\r\n        else if (r instanceof Array) {\r\n            if (r.length === 1) {\r\n                r1 = r2 = r3 = r4 = r[0];\r\n            }\r\n            else if (r.length === 2) {\r\n                r1 = r3 = r[0];\r\n                r2 = r4 = r[1];\r\n            }\r\n            else if (r.length === 3) {\r\n                r1 = r[0];\r\n                r2 = r4 = r[1];\r\n                r3 = r[2];\r\n            }\r\n            else {\r\n                r1 = r[0];\r\n                r2 = r[1];\r\n                r3 = r[2];\r\n                r4 = r[3];\r\n            }\r\n        }\r\n        else {\r\n            r1 = r2 = r3 = r4 = 0;\r\n        }\r\n        var total;\r\n        if (r1 + r2 > width) {\r\n            total = r1 + r2;\r\n            r1 *= width / total;\r\n            r2 *= width / total;\r\n        }\r\n        if (r3 + r4 > width) {\r\n            total = r3 + r4;\r\n            r3 *= width / total;\r\n            r4 *= width / total;\r\n        }\r\n        if (r2 + r3 > height) {\r\n            total = r2 + r3;\r\n            r2 *= height / total;\r\n            r3 *= height / total;\r\n        }\r\n        if (r1 + r4 > height) {\r\n            total = r1 + r4;\r\n            r1 *= height / total;\r\n            r4 *= height / total;\r\n        }\r\n        ctx.moveTo(x + r1, y);\r\n        ctx.lineTo(x + width - r2, y);\r\n        r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\r\n        ctx.lineTo(x + width, y + height - r3);\r\n        r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\r\n        ctx.lineTo(x + r4, y + height);\r\n        r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\r\n        ctx.lineTo(x, y + r1);\r\n        r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\r\n    }\n\n    var round = Math.round;\r\n    function subPixelOptimizeLine(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var x1 = inputShape.x1;\r\n        var x2 = inputShape.x2;\r\n        var y1 = inputShape.y1;\r\n        var y2 = inputShape.y2;\r\n        outputShape.x1 = x1;\r\n        outputShape.x2 = x2;\r\n        outputShape.y1 = y1;\r\n        outputShape.y2 = y2;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        if (round(x1 * 2) === round(x2 * 2)) {\r\n            outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\r\n        }\r\n        if (round(y1 * 2) === round(y2 * 2)) {\r\n            outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\r\n        }\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimizeRect(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var originX = inputShape.x;\r\n        var originY = inputShape.y;\r\n        var originWidth = inputShape.width;\r\n        var originHeight = inputShape.height;\r\n        outputShape.x = originX;\r\n        outputShape.y = originY;\r\n        outputShape.width = originWidth;\r\n        outputShape.height = originHeight;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        outputShape.x = subPixelOptimize(originX, lineWidth, true);\r\n        outputShape.y = subPixelOptimize(originY, lineWidth, true);\r\n        outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\r\n        outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimize(position, lineWidth, positiveOrNegative) {\r\n        if (!lineWidth) {\r\n            return position;\r\n        }\r\n        var doubledPosition = round(position * 2);\r\n        return (doubledPosition + round(lineWidth)) % 2 === 0\r\n            ? doubledPosition / 2\r\n            : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\r\n    }\n\n    var RectShape = (function () {\r\n        function RectShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return RectShape;\r\n    }());\r\n    var subPixelOptimizeOutputShape = {};\r\n    var Rect = (function (_super) {\r\n        __extends(Rect, _super);\r\n        function Rect(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rect.prototype.getDefaultShape = function () {\r\n            return new RectShape();\r\n        };\r\n        Rect.prototype.buildPath = function (ctx, shape) {\r\n            var x;\r\n            var y;\r\n            var width;\r\n            var height;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\r\n                x = optimizedShape.x;\r\n                y = optimizedShape.y;\r\n                width = optimizedShape.width;\r\n                height = optimizedShape.height;\r\n                optimizedShape.r = shape.r;\r\n                shape = optimizedShape;\r\n            }\r\n            else {\r\n                x = shape.x;\r\n                y = shape.y;\r\n                width = shape.width;\r\n                height = shape.height;\r\n            }\r\n            if (!shape.r) {\r\n                ctx.rect(x, y, width, height);\r\n            }\r\n            else {\r\n                buildPath(ctx, shape);\r\n            }\r\n        };\r\n        Rect.prototype.isZeroArea = function () {\r\n            return !this.shape.width || !this.shape.height;\r\n        };\r\n        return Rect;\r\n    }(Path));\r\n    Rect.prototype.type = 'rect';\n\n    var EllipseShape = (function () {\r\n        function EllipseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.rx = 0;\r\n            this.ry = 0;\r\n        }\r\n        return EllipseShape;\r\n    }());\r\n    var Ellipse = (function (_super) {\r\n        __extends(Ellipse, _super);\r\n        function Ellipse(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ellipse.prototype.getDefaultShape = function () {\r\n            return new EllipseShape();\r\n        };\r\n        Ellipse.prototype.buildPath = function (ctx, shape) {\r\n            var k = 0.5522848;\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.rx;\r\n            var b = shape.ry;\r\n            var ox = a * k;\r\n            var oy = b * k;\r\n            ctx.moveTo(x - a, y);\r\n            ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\r\n            ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\r\n            ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\r\n            ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\r\n            ctx.closePath();\r\n        };\r\n        return Ellipse;\r\n    }(Path));\r\n    Ellipse.prototype.type = 'ellipse';\n\n    var subPixelOptimizeOutputShape$1 = {};\r\n    var LineShape = (function () {\r\n        function LineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return LineShape;\r\n    }());\r\n    var Line = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Line.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Line.prototype.getDefaultShape = function () {\r\n            return new LineShape();\r\n        };\r\n        Line.prototype.buildPath = function (ctx, shape) {\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style);\r\n                x1 = optimizedShape.x1;\r\n                y1 = optimizedShape.y1;\r\n                x2 = optimizedShape.x2;\r\n                y2 = optimizedShape.y2;\r\n            }\r\n            else {\r\n                x1 = shape.x1;\r\n                y1 = shape.y1;\r\n                x2 = shape.x2;\r\n                y2 = shape.y2;\r\n            }\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (percent < 1) {\r\n                x2 = x1 * (1 - percent) + x2 * percent;\r\n                y2 = y1 * (1 - percent) + y2 * percent;\r\n            }\r\n            ctx.lineTo(x2, y2);\r\n        };\r\n        Line.prototype.pointAt = function (p) {\r\n            var shape = this.shape;\r\n            return [\r\n                shape.x1 * (1 - p) + shape.x2 * p,\r\n                shape.y1 * (1 - p) + shape.y2 * p\r\n            ];\r\n        };\r\n        return Line;\r\n    }(Path));\r\n    Line.prototype.type = 'line';\n\n    function interpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function smoothSpline (points, isLoop) {\r\n        var len = points.length;\r\n        var ret = [];\r\n        var distance$1 = 0;\r\n        for (var i = 1; i < len; i++) {\r\n            distance$1 += distance(points[i - 1], points[i]);\r\n        }\r\n        var segs = distance$1 / 2;\r\n        segs = segs < len ? len : segs;\r\n        for (var i = 0; i < segs; i++) {\r\n            var pos = i / (segs - 1) * (isLoop ? len : len - 1);\r\n            var idx = Math.floor(pos);\r\n            var w = pos - idx;\r\n            var p0 = void 0;\r\n            var p1 = points[idx % len];\r\n            var p2 = void 0;\r\n            var p3 = void 0;\r\n            if (!isLoop) {\r\n                p0 = points[idx === 0 ? idx : idx - 1];\r\n                p2 = points[idx > len - 2 ? len - 1 : idx + 1];\r\n                p3 = points[idx > len - 3 ? len - 1 : idx + 2];\r\n            }\r\n            else {\r\n                p0 = points[(idx - 1 + len) % len];\r\n                p2 = points[(idx + 1) % len];\r\n                p3 = points[(idx + 2) % len];\r\n            }\r\n            var w2 = w * w;\r\n            var w3 = w * w2;\r\n            ret.push([\r\n                interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\r\n                interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\r\n            ]);\r\n        }\r\n        return ret;\r\n    }\n\n    function smoothBezier (points, smooth, isLoop, constraint) {\r\n        var cps = [];\r\n        var v = [];\r\n        var v1 = [];\r\n        var v2 = [];\r\n        var prevPoint;\r\n        var nextPoint;\r\n        var min$1;\r\n        var max$1;\r\n        if (constraint) {\r\n            min$1 = [Infinity, Infinity];\r\n            max$1 = [-Infinity, -Infinity];\r\n            for (var i = 0, len = points.length; i < len; i++) {\r\n                min(min$1, min$1, points[i]);\r\n                max(max$1, max$1, points[i]);\r\n            }\r\n            min(min$1, min$1, constraint[0]);\r\n            max(max$1, max$1, constraint[1]);\r\n        }\r\n        for (var i = 0, len = points.length; i < len; i++) {\r\n            var point = points[i];\r\n            if (isLoop) {\r\n                prevPoint = points[i ? i - 1 : len - 1];\r\n                nextPoint = points[(i + 1) % len];\r\n            }\r\n            else {\r\n                if (i === 0 || i === len - 1) {\r\n                    cps.push(clone$1(points[i]));\r\n                    continue;\r\n                }\r\n                else {\r\n                    prevPoint = points[i - 1];\r\n                    nextPoint = points[i + 1];\r\n                }\r\n            }\r\n            sub(v, nextPoint, prevPoint);\r\n            scale(v, v, smooth);\r\n            var d0 = distance(point, prevPoint);\r\n            var d1 = distance(point, nextPoint);\r\n            var sum = d0 + d1;\r\n            if (sum !== 0) {\r\n                d0 /= sum;\r\n                d1 /= sum;\r\n            }\r\n            scale(v1, v, -d0);\r\n            scale(v2, v, d1);\r\n            var cp0 = add([], point, v1);\r\n            var cp1 = add([], point, v2);\r\n            if (constraint) {\r\n                max(cp0, cp0, min$1);\r\n                min(cp0, cp0, max$1);\r\n                max(cp1, cp1, min$1);\r\n                min(cp1, cp1, max$1);\r\n            }\r\n            cps.push(cp0);\r\n            cps.push(cp1);\r\n        }\r\n        if (isLoop) {\r\n            cps.push(cps.shift());\r\n        }\r\n        return cps;\r\n    }\n\n    function buildPath$1(ctx, shape, closePath) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (points && points.length >= 2) {\r\n            if (smooth && smooth !== 'spline') {\r\n                var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                var len = points.length;\r\n                for (var i = 0; i < (closePath ? len : len - 1); i++) {\r\n                    var cp1 = controlPoints[i * 2];\r\n                    var cp2 = controlPoints[i * 2 + 1];\r\n                    var p = points[(i + 1) % len];\r\n                    ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\r\n                }\r\n            }\r\n            else {\r\n                if (smooth === 'spline') {\r\n                    points = smoothSpline(points, closePath);\r\n                }\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                for (var i = 1, l = points.length; i < l; i++) {\r\n                    ctx.lineTo(points[i][0], points[i][1]);\r\n                }\r\n            }\r\n            closePath && ctx.closePath();\r\n        }\r\n    }\n\n    var PolygonShape = (function () {\r\n        function PolygonShape() {\r\n            this.points = null;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolygonShape;\r\n    }());\r\n    var Polygon = (function (_super) {\r\n        __extends(Polygon, _super);\r\n        function Polygon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polygon.prototype.getDefaultShape = function () {\r\n            return new PolygonShape();\r\n        };\r\n        Polygon.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, true);\r\n        };\r\n        return Polygon;\r\n    }(Path));\r\n    Polygon.prototype.type = 'polygon';\n\n    var PolylineShape = (function () {\r\n        function PolylineShape() {\r\n            this.points = null;\r\n            this.percent = 1;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolylineShape;\r\n    }());\r\n    var Polyline = (function (_super) {\r\n        __extends(Polyline, _super);\r\n        function Polyline(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Polyline.prototype.getDefaultShape = function () {\r\n            return new PolylineShape();\r\n        };\r\n        Polyline.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, false);\r\n        };\r\n        return Polyline;\r\n    }(Path));\r\n    Polyline.prototype.type = 'polyline';\n\n    var Gradient = (function () {\r\n        function Gradient(colorStops) {\r\n            this.colorStops = colorStops || [];\r\n        }\r\n        Gradient.prototype.addColorStop = function (offset, color) {\r\n            this.colorStops.push({\r\n                offset: offset,\r\n                color: color\r\n            });\r\n        };\r\n        return Gradient;\r\n    }());\n\n    var LinearGradient = (function (_super) {\r\n        __extends(LinearGradient, _super);\r\n        function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0 : x;\r\n            _this.y = y == null ? 0 : y;\r\n            _this.x2 = x2 == null ? 1 : x2;\r\n            _this.y2 = y2 == null ? 0 : y2;\r\n            _this.type = 'linear';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return LinearGradient;\r\n    }(Gradient));\n\n    var DEFAULT_TSPAN_STYLE = defaults({\r\n        strokeFirst: true,\r\n        font: DEFAULT_FONT,\r\n        x: 0,\r\n        y: 0,\r\n        textAlign: 'left',\r\n        textBaseline: 'top'\r\n    }, DEFAULT_PATH_STYLE);\r\n    var TSpan = (function (_super) {\r\n        __extends(TSpan, _super);\r\n        function TSpan() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        TSpan.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return stroke != null && stroke !== 'none' && style.lineWidth > 0;\r\n        };\r\n        TSpan.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        TSpan.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_TSPAN_STYLE, obj);\r\n        };\r\n        TSpan.prototype.setBoundingRect = function (rect) {\r\n            this._rect = rect;\r\n        };\r\n        TSpan.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                var text = style.text;\r\n                text != null ? (text += '') : (text = '');\r\n                var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\r\n                rect.x += style.x || 0;\r\n                rect.y += style.y || 0;\r\n                if (this.hasStroke()) {\r\n                    var w = style.lineWidth;\r\n                    rect.x -= w / 2;\r\n                    rect.y -= w / 2;\r\n                    rect.width += w;\r\n                    rect.height += w;\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        return TSpan;\r\n    }(Displayable));\r\n    TSpan.prototype.type = 'tspan';\n\n    function parseXML(svg) {\r\n        if (isString(svg)) {\r\n            var parser = new DOMParser();\r\n            svg = parser.parseFromString(svg, 'text/xml');\r\n        }\r\n        var svgNode = svg;\r\n        if (svgNode.nodeType === 9) {\r\n            svgNode = svgNode.firstChild;\r\n        }\r\n        while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\r\n            svgNode = svgNode.nextSibling;\r\n        }\r\n        return svgNode;\r\n    }\n\n    var CompoundPath = (function (_super) {\r\n        __extends(CompoundPath, _super);\r\n        function CompoundPath() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'compound';\r\n            return _this;\r\n        }\r\n        CompoundPath.prototype._updatePathDirty = function () {\r\n            var paths = this.shape.paths;\r\n            var dirtyPath = this.shapeChanged();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                dirtyPath = dirtyPath || paths[i].shapeChanged();\r\n            }\r\n            if (dirtyPath) {\r\n                this.dirtyShape();\r\n            }\r\n        };\r\n        CompoundPath.prototype.beforeBrush = function () {\r\n            this._updatePathDirty();\r\n            var paths = this.shape.paths || [];\r\n            var scale = this.getGlobalScale();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                if (!paths[i].path) {\r\n                    paths[i].createPathProxy();\r\n                }\r\n                paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\r\n            }\r\n        };\r\n        CompoundPath.prototype.buildPath = function (ctx, shape) {\r\n            var paths = shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].buildPath(ctx, paths[i].shape, true);\r\n            }\r\n        };\r\n        CompoundPath.prototype.afterBrush = function () {\r\n            var paths = this.shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].pathUpdated();\r\n            }\r\n        };\r\n        CompoundPath.prototype.getBoundingRect = function () {\r\n            this._updatePathDirty.call(this);\r\n            return Path.prototype.getBoundingRect.call(this);\r\n        };\r\n        return CompoundPath;\r\n    }(Path));\n\n    var m = [];\r\n    var IncrementalDisplayble = (function (_super) {\r\n        __extends(IncrementalDisplayble, _super);\r\n        function IncrementalDisplayble() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.notClear = true;\r\n            _this.incremental = true;\r\n            _this._displayables = [];\r\n            _this._temporaryDisplayables = [];\r\n            _this._cursor = 0;\r\n            return _this;\r\n        }\r\n        IncrementalDisplayble.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        IncrementalDisplayble.prototype.useStyle = function () {\r\n            this.style = {};\r\n        };\r\n        IncrementalDisplayble.prototype.getCursor = function () {\r\n            return this._cursor;\r\n        };\r\n        IncrementalDisplayble.prototype.innerAfterBrush = function () {\r\n            this._cursor = this._displayables.length;\r\n        };\r\n        IncrementalDisplayble.prototype.clearDisplaybles = function () {\r\n            this._displayables = [];\r\n            this._temporaryDisplayables = [];\r\n            this._cursor = 0;\r\n            this.markRedraw();\r\n            this.notClear = false;\r\n        };\r\n        IncrementalDisplayble.prototype.clearTemporalDisplayables = function () {\r\n            this._temporaryDisplayables = [];\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\r\n            if (notPersistent) {\r\n                this._temporaryDisplayables.push(displayable);\r\n            }\r\n            else {\r\n                this._displayables.push(displayable);\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\r\n            notPersistent = notPersistent || false;\r\n            for (var i = 0; i < displayables.length; i++) {\r\n                this.addDisplayable(displayables[i], notPersistent);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getDisplayables = function () {\r\n            return this._displayables;\r\n        };\r\n        IncrementalDisplayble.prototype.getTemporalDisplayables = function () {\r\n            return this._temporaryDisplayables;\r\n        };\r\n        IncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                cb && cb(this._displayables[i]);\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                cb && cb(this._temporaryDisplayables[i]);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.update = function () {\r\n            this.updateTransform();\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                var displayable = this._displayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                var displayable = this._temporaryDisplayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getBoundingRect = function () {\r\n            if (!this._rect) {\r\n                var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    var childRect = displayable.getBoundingRect().clone();\r\n                    if (displayable.needLocalTransform()) {\r\n                        childRect.applyTransform(displayable.getLocalTransform(m));\r\n                    }\r\n                    rect.union(childRect);\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        IncrementalDisplayble.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            if (rect.contain(localPos[0], localPos[1])) {\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    if (displayable.contain(x, y)) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        return IncrementalDisplayble;\r\n    }(Displayable));\n\n    var globalImageCache = new LRU(50);\r\n    function findExistImage(newImageOrSrc) {\r\n        if (typeof newImageOrSrc === 'string') {\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            return cachedImgObj && cachedImgObj.image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\r\n        if (!newImageOrSrc) {\r\n            return image;\r\n        }\r\n        else if (typeof newImageOrSrc === 'string') {\r\n            if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\r\n                return image;\r\n            }\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            var pendingWrap = { hostEl: hostEl, cb: cb, cbPayload: cbPayload };\r\n            if (cachedImgObj) {\r\n                image = cachedImgObj.image;\r\n                !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\r\n            }\r\n            else {\r\n                image = new Image();\r\n                image.onload = image.onerror = imageOnLoad;\r\n                globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\r\n                    image: image,\r\n                    pending: [pendingWrap]\r\n                });\r\n                image.src = image.__zrImageSrc = newImageOrSrc;\r\n            }\r\n            return image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function imageOnLoad() {\r\n        var cachedImgObj = this.__cachedImgObj;\r\n        this.onload = this.onerror = this.__cachedImgObj = null;\r\n        for (var i = 0; i < cachedImgObj.pending.length; i++) {\r\n            var pendingWrap = cachedImgObj.pending[i];\r\n            var cb = pendingWrap.cb;\r\n            cb && cb(this, pendingWrap.cbPayload);\r\n            pendingWrap.hostEl.dirty();\r\n        }\r\n        cachedImgObj.pending.length = 0;\r\n    }\r\n    function isImageReady(image) {\r\n        return image && image.width && image.height;\r\n    }\n\n    var STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\n    function truncateText(text, containerWidth, font, ellipsis, options) {\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var textLines = (text + '').split('\\n');\r\n        options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\r\n        for (var i = 0, len = textLines.length; i < len; i++) {\r\n            textLines[i] = truncateSingleLine(textLines[i], options);\r\n        }\r\n        return textLines.join('\\n');\r\n    }\r\n    function prepareTruncateOptions(containerWidth, font, ellipsis, options) {\r\n        options = options || {};\r\n        var preparedOpts = extend({}, options);\r\n        preparedOpts.font = font;\r\n        ellipsis = retrieve2(ellipsis, '...');\r\n        preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\r\n        var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\r\n        preparedOpts.cnCharWidth = getWidth('国', font);\r\n        var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\r\n        preparedOpts.placeholder = retrieve2(options.placeholder, '');\r\n        var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\r\n        for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\r\n            contentWidth -= ascCharWidth;\r\n        }\r\n        var ellipsisWidth = getWidth(ellipsis, font);\r\n        if (ellipsisWidth > contentWidth) {\r\n            ellipsis = '';\r\n            ellipsisWidth = 0;\r\n        }\r\n        contentWidth = containerWidth - ellipsisWidth;\r\n        preparedOpts.ellipsis = ellipsis;\r\n        preparedOpts.ellipsisWidth = ellipsisWidth;\r\n        preparedOpts.contentWidth = contentWidth;\r\n        preparedOpts.containerWidth = containerWidth;\r\n        return preparedOpts;\r\n    }\r\n    function truncateSingleLine(textLine, options) {\r\n        var containerWidth = options.containerWidth;\r\n        var font = options.font;\r\n        var contentWidth = options.contentWidth;\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var lineWidth = getWidth(textLine, font);\r\n        if (lineWidth <= containerWidth) {\r\n            return textLine;\r\n        }\r\n        for (var j = 0;; j++) {\r\n            if (lineWidth <= contentWidth || j >= options.maxIterations) {\r\n                textLine += options.ellipsis;\r\n                break;\r\n            }\r\n            var subLength = j === 0\r\n                ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\r\n                : lineWidth > 0\r\n                    ? Math.floor(textLine.length * contentWidth / lineWidth)\r\n                    : 0;\r\n            textLine = textLine.substr(0, subLength);\r\n            lineWidth = getWidth(textLine, font);\r\n        }\r\n        if (textLine === '') {\r\n            textLine = options.placeholder;\r\n        }\r\n        return textLine;\r\n    }\r\n    function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\r\n        var width = 0;\r\n        var i = 0;\r\n        for (var len = text.length; i < len && width < contentWidth; i++) {\r\n            var charCode = text.charCodeAt(i);\r\n            width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\r\n        }\r\n        return i;\r\n    }\r\n    function parsePlainText(text, style) {\r\n        text != null && (text += '');\r\n        var overflow = style.overflow;\r\n        var padding = style.padding;\r\n        var font = style.font;\r\n        var truncate = overflow === 'truncate';\r\n        var calculatedLineHeight = getLineHeight(font);\r\n        var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\r\n        var truncateLineOverflow = style.lineOverflow === 'truncate';\r\n        var width = style.width;\r\n        var lines;\r\n        if (width != null && overflow === 'break' || overflow === 'breakAll') {\r\n            lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\r\n        }\r\n        else {\r\n            lines = text ? text.split('\\n') : [];\r\n        }\r\n        var contentHeight = lines.length * lineHeight;\r\n        var height = retrieve2(style.height, contentHeight);\r\n        if (contentHeight > height && truncateLineOverflow) {\r\n            var lineCount = Math.floor(height / lineHeight);\r\n            lines = lines.slice(0, lineCount);\r\n        }\r\n        var outerHeight = height;\r\n        var outerWidth = width;\r\n        if (padding) {\r\n            outerHeight += padding[0] + padding[2];\r\n            if (outerWidth != null) {\r\n                outerWidth += padding[1] + padding[3];\r\n            }\r\n        }\r\n        if (text && truncate && outerWidth != null) {\r\n            var options = prepareTruncateOptions(width, font, style.ellipsis, {\r\n                minChar: style.truncateMinChar,\r\n                placeholder: style.placeholder\r\n            });\r\n            for (var i = 0; i < lines.length; i++) {\r\n                lines[i] = truncateSingleLine(lines[i], options);\r\n            }\r\n        }\r\n        if (width == null) {\r\n            var maxWidth = 0;\r\n            for (var i = 0; i < lines.length; i++) {\r\n                maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\r\n            }\r\n            width = maxWidth;\r\n        }\r\n        return {\r\n            lines: lines,\r\n            height: height,\r\n            outerHeight: outerHeight,\r\n            lineHeight: lineHeight,\r\n            calculatedLineHeight: calculatedLineHeight,\r\n            contentHeight: contentHeight,\r\n            width: width\r\n        };\r\n    }\r\n    var RichTextToken = (function () {\r\n        function RichTextToken() {\r\n        }\r\n        return RichTextToken;\r\n    }());\r\n    var RichTextLine = (function () {\r\n        function RichTextLine(tokens) {\r\n            this.tokens = [];\r\n            if (tokens) {\r\n                this.tokens = tokens;\r\n            }\r\n        }\r\n        return RichTextLine;\r\n    }());\r\n    var RichTextContentBlock = (function () {\r\n        function RichTextContentBlock() {\r\n            this.width = 0;\r\n            this.height = 0;\r\n            this.contentWidth = 0;\r\n            this.contentHeight = 0;\r\n            this.outerWidth = 0;\r\n            this.outerHeight = 0;\r\n            this.lines = [];\r\n        }\r\n        return RichTextContentBlock;\r\n    }());\r\n    function parseRichText(text, style) {\r\n        var contentBlock = new RichTextContentBlock();\r\n        text != null && (text += '');\r\n        if (!text) {\r\n            return contentBlock;\r\n        }\r\n        var topWidth = style.width;\r\n        var topHeight = style.height;\r\n        var overflow = style.overflow;\r\n        var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\r\n            ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\r\n            : null;\r\n        var lastIndex = STYLE_REG.lastIndex = 0;\r\n        var result;\r\n        while ((result = STYLE_REG.exec(text)) != null) {\r\n            var matchedIndex = result.index;\r\n            if (matchedIndex > lastIndex) {\r\n                pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\r\n            }\r\n            pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\r\n            lastIndex = STYLE_REG.lastIndex;\r\n        }\r\n        if (lastIndex < text.length) {\r\n            pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\r\n        }\r\n        var pendingList = [];\r\n        var calculatedHeight = 0;\r\n        var calculatedWidth = 0;\r\n        var stlPadding = style.padding;\r\n        var truncate = overflow === 'truncate';\r\n        var truncateLine = style.lineOverflow === 'truncate';\r\n        outer: for (var i = 0; i < contentBlock.lines.length; i++) {\r\n            var line = contentBlock.lines[i];\r\n            var lineHeight = 0;\r\n            var lineWidth = 0;\r\n            for (var j = 0; j < line.tokens.length; j++) {\r\n                var token = line.tokens[j];\r\n                var tokenStyle = token.styleName && style.rich[token.styleName] || {};\r\n                var textPadding = token.textPadding = tokenStyle.padding;\r\n                var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\r\n                var font = token.font = tokenStyle.font || style.font;\r\n                token.contentHeight = getLineHeight(font);\r\n                var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\r\n                token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\r\n                textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\r\n                token.height = tokenHeight;\r\n                token.align = tokenStyle && tokenStyle.align || style.align;\r\n                token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\r\n                if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\r\n                    if (j > 0) {\r\n                        line.tokens = line.tokens.slice(0, j);\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i + 1);\r\n                    }\r\n                    else {\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i);\r\n                    }\r\n                    break outer;\r\n                }\r\n                var styleTokenWidth = tokenStyle.width;\r\n                var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\r\n                if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\r\n                    token.percentWidth = styleTokenWidth;\r\n                    pendingList.push(token);\r\n                    token.contentWidth = getWidth(token.text, font);\r\n                }\r\n                else {\r\n                    if (tokenWidthNotSpecified) {\r\n                        var textBackgroundColor = tokenStyle.backgroundColor;\r\n                        var bgImg = textBackgroundColor && textBackgroundColor.image;\r\n                        if (bgImg) {\r\n                            bgImg = findExistImage(bgImg);\r\n                            if (isImageReady(bgImg)) {\r\n                                token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\r\n                            }\r\n                        }\r\n                    }\r\n                    var remainTruncWidth = truncate && topWidth != null\r\n                        ? topWidth - lineWidth : null;\r\n                    if (remainTruncWidth != null && remainTruncWidth < token.width) {\r\n                        if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\r\n                            token.text = '';\r\n                            token.width = token.contentWidth = 0;\r\n                        }\r\n                        else {\r\n                            token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\r\n                            token.width = token.contentWidth = getWidth(token.text, font);\r\n                        }\r\n                    }\r\n                    else {\r\n                        token.contentWidth = getWidth(token.text, font);\r\n                    }\r\n                }\r\n                token.width += paddingH;\r\n                lineWidth += token.width;\r\n                tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\r\n            }\r\n            line.width = lineWidth;\r\n            line.lineHeight = lineHeight;\r\n            calculatedHeight += lineHeight;\r\n            calculatedWidth = Math.max(calculatedWidth, lineWidth);\r\n        }\r\n        contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\r\n        contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\r\n        contentBlock.contentHeight = calculatedHeight;\r\n        contentBlock.contentWidth = calculatedWidth;\r\n        if (stlPadding) {\r\n            contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\r\n            contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\r\n        }\r\n        for (var i = 0; i < pendingList.length; i++) {\r\n            var token = pendingList[i];\r\n            var percentWidth = token.percentWidth;\r\n            token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\r\n        }\r\n        return contentBlock;\r\n    }\r\n    function pushTokens(block, str, style, wrapInfo, styleName) {\r\n        var isEmptyStr = str === '';\r\n        var tokenStyle = styleName && style.rich[styleName] || {};\r\n        var lines = block.lines;\r\n        var font = tokenStyle.font || style.font;\r\n        var newLine = false;\r\n        var strLines;\r\n        var linesWidths;\r\n        if (wrapInfo) {\r\n            var tokenPadding = tokenStyle.padding;\r\n            var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\r\n            if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\r\n                var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\r\n                if (lines.length > 0) {\r\n                    if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\r\n                        strLines = str.split('\\n');\r\n                        newLine = true;\r\n                    }\r\n                }\r\n                wrapInfo.accumWidth = outerWidth_1;\r\n            }\r\n            else {\r\n                var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\r\n                wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\r\n                linesWidths = res.linesWidths;\r\n                strLines = res.lines;\r\n            }\r\n        }\r\n        else {\r\n            strLines = str.split('\\n');\r\n        }\r\n        for (var i = 0; i < strLines.length; i++) {\r\n            var text = strLines[i];\r\n            var token = new RichTextToken();\r\n            token.styleName = styleName;\r\n            token.text = text;\r\n            token.isLineHolder = !text && !isEmptyStr;\r\n            if (typeof tokenStyle.width === 'number') {\r\n                token.width = tokenStyle.width;\r\n            }\r\n            else {\r\n                token.width = linesWidths\r\n                    ? linesWidths[i]\r\n                    : getWidth(text, font);\r\n            }\r\n            if (!i && !newLine) {\r\n                var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\r\n                var tokensLen = tokens.length;\r\n                (tokensLen === 1 && tokens[0].isLineHolder)\r\n                    ? (tokens[0] = token)\r\n                    : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\r\n            }\r\n            else {\r\n                lines.push(new RichTextLine([token]));\r\n            }\r\n        }\r\n    }\r\n    function isLatin(ch) {\r\n        var code = ch.charCodeAt(0);\r\n        return code >= 0x21 && code <= 0xFF;\r\n    }\r\n    var breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n        obj[ch] = true;\r\n        return obj;\r\n    }, {});\r\n    function isWordBreakChar(ch) {\r\n        if (isLatin(ch)) {\r\n            if (breakCharMap[ch]) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\r\n        var lines = [];\r\n        var linesWidths = [];\r\n        var line = '';\r\n        var currentWord = '';\r\n        var currentWordWidth = 0;\r\n        var accumWidth = 0;\r\n        for (var i = 0; i < text.length; i++) {\r\n            var ch = text.charAt(i);\r\n            if (ch === '\\n') {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    accumWidth += currentWordWidth;\r\n                }\r\n                lines.push(line);\r\n                linesWidths.push(accumWidth);\r\n                line = '';\r\n                currentWord = '';\r\n                currentWordWidth = 0;\r\n                accumWidth = 0;\r\n                continue;\r\n            }\r\n            var chWidth = getWidth(ch, font);\r\n            var inWord = isBreakAll ? false : !isWordBreakChar(ch);\r\n            if (!lines.length\r\n                ? lastAccumWidth + accumWidth + chWidth > lineWidth\r\n                : accumWidth + chWidth > lineWidth) {\r\n                if (!accumWidth) {\r\n                    if (inWord) {\r\n                        lines.push(currentWord);\r\n                        linesWidths.push(currentWordWidth);\r\n                        currentWord = ch;\r\n                        currentWordWidth = chWidth;\r\n                    }\r\n                    else {\r\n                        lines.push(ch);\r\n                        linesWidths.push(chWidth);\r\n                    }\r\n                }\r\n                else if (line || currentWord) {\r\n                    if (inWord) {\r\n                        if (!line) {\r\n                            line = currentWord;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                            accumWidth = currentWordWidth;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth - currentWordWidth);\r\n                        currentWord += ch;\r\n                        currentWordWidth += chWidth;\r\n                        line = '';\r\n                        accumWidth = currentWordWidth;\r\n                    }\r\n                    else {\r\n                        if (currentWord) {\r\n                            line += currentWord;\r\n                            accumWidth += currentWordWidth;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth);\r\n                        line = ch;\r\n                        accumWidth = chWidth;\r\n                    }\r\n                }\r\n                continue;\r\n            }\r\n            accumWidth += chWidth;\r\n            if (inWord) {\r\n                currentWord += ch;\r\n                currentWordWidth += chWidth;\r\n            }\r\n            else {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    currentWord = '';\r\n                    currentWordWidth = 0;\r\n                }\r\n                line += ch;\r\n            }\r\n        }\r\n        if (!lines.length && !line) {\r\n            line = text;\r\n            currentWord = '';\r\n            currentWordWidth = 0;\r\n        }\r\n        if (currentWord) {\r\n            line += currentWord;\r\n        }\r\n        if (line) {\r\n            lines.push(line);\r\n            linesWidths.push(accumWidth);\r\n        }\r\n        if (lines.length === 1) {\r\n            accumWidth += lastAccumWidth;\r\n        }\r\n        return {\r\n            accumWidth: accumWidth,\r\n            lines: lines,\r\n            linesWidths: linesWidths\r\n        };\r\n    }\r\n    function parsePercent$1(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\n\n    var DEFAULT_RICH_TEXT_COLOR = {\r\n        fill: '#000'\r\n    };\r\n    var DEFAULT_STROKE_LINE_WIDTH = 2;\r\n    var DEFAULT_TEXT_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineWidth: true,\r\n            fontSize: true,\r\n            lineHeight: true,\r\n            width: true,\r\n            height: true,\r\n            textShadowColor: true,\r\n            textShadowBlur: true,\r\n            textShadowOffsetX: true,\r\n            textShadowOffsetY: true,\r\n            backgroundColor: true,\r\n            padding: true,\r\n            borderColor: true,\r\n            borderWidth: true,\r\n            borderRadius: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var ZRText = (function (_super) {\r\n        __extends(ZRText, _super);\r\n        function ZRText(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = 'text';\r\n            _this._children = [];\r\n            _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        ZRText.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        ZRText.prototype.update = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.zlevel = this.zlevel;\r\n                child.z = this.z;\r\n                child.z2 = this.z2;\r\n                child.culling = this.culling;\r\n                child.cursor = this.cursor;\r\n                child.invisible = this.invisible;\r\n            }\r\n            var attachedTransform = this.attachedTransform;\r\n            if (attachedTransform) {\r\n                attachedTransform.updateTransform();\r\n                var m = attachedTransform.transform;\r\n                if (m) {\r\n                    this.transform = this.transform || [];\r\n                    copy$1(this.transform, m);\r\n                }\r\n                else {\r\n                    this.transform = null;\r\n                }\r\n            }\r\n            else {\r\n                _super.prototype.update.call(this);\r\n            }\r\n        };\r\n        ZRText.prototype.getComputedTransform = function () {\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.getComputedTransform();\r\n                this.__hostTarget.updateInnerText(true);\r\n            }\r\n            return this.attachedTransform ? this.attachedTransform.getComputedTransform()\r\n                : _super.prototype.getComputedTransform.call(this);\r\n        };\r\n        ZRText.prototype._updateSubTexts = function () {\r\n            this._childCursor = 0;\r\n            normalizeTextStyle(this.style);\r\n            this.style.rich\r\n                ? this._updateRichTexts()\r\n                : this._updatePlainTexts();\r\n            this._children.length = this._childCursor;\r\n            this.styleUpdated();\r\n        };\r\n        ZRText.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = zr;\r\n            }\r\n        };\r\n        ZRText.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = null;\r\n            }\r\n        };\r\n        ZRText.prototype.getBoundingRect = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            if (!this._rect) {\r\n                var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n                var children = this._children;\r\n                var tmpMat = [];\r\n                var rect = null;\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    var childRect = child.getBoundingRect();\r\n                    var transform = child.getLocalTransform(tmpMat);\r\n                    if (transform) {\r\n                        tmpRect.copy(childRect);\r\n                        tmpRect.applyTransform(transform);\r\n                        rect = rect || tmpRect.clone();\r\n                        rect.union(tmpRect);\r\n                    }\r\n                    else {\r\n                        rect = rect || childRect.clone();\r\n                        rect.union(childRect);\r\n                    }\r\n                }\r\n                this._rect = rect || tmpRect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\r\n            this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\r\n        };\r\n        ZRText.prototype.setTextContent = function (textContent) {\r\n            throw new Error('Can\\'t attach text on another text');\r\n        };\r\n        ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            if (!sourceStyle) {\r\n                return targetStyle;\r\n            }\r\n            var sourceRich = sourceStyle.rich;\r\n            var targetRich = targetStyle.rich || (sourceRich && {});\r\n            extend(targetStyle, sourceStyle);\r\n            if (sourceRich && targetRich) {\r\n                this._mergeRich(targetRich, sourceRich);\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            else if (targetRich) {\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            return targetStyle;\r\n        };\r\n        ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\r\n            var richNames = keys(sourceRich);\r\n            for (var i = 0; i < richNames.length; i++) {\r\n                var richName = richNames[i];\r\n                targetRich[richName] = targetRich[richName] || {};\r\n                extend(targetRich[richName], sourceRich[richName]);\r\n            }\r\n        };\r\n        ZRText.prototype._getAnimationStyleProps = function () {\r\n            return DEFAULT_TEXT_ANIMATION_PROPS;\r\n        };\r\n        ZRText.prototype._getOrCreateChild = function (Ctor) {\r\n            var child = this._children[this._childCursor];\r\n            if (!child || !(child instanceof Ctor)) {\r\n                child = new Ctor();\r\n            }\r\n            this._children[this._childCursor++] = child;\r\n            child.__zr = this.__zr;\r\n            child.parent = this;\r\n            return child;\r\n        };\r\n        ZRText.prototype._updatePlainTexts = function () {\r\n            var style = this.style;\r\n            var textFont = style.font || DEFAULT_FONT;\r\n            var textPadding = style.padding;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parsePlainText(text, style);\r\n            var needDrawBg = needDrawBackground(style);\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textLines = contentBlock.lines;\r\n            var lineHeight = contentBlock.lineHeight;\r\n            var defaultStyle = this._defaultStyle;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var textAlign = style.align || defaultStyle.align || 'left';\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\r\n            var textX = baseX;\r\n            var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\r\n            if (needDrawBg || textPadding) {\r\n                var outerWidth_1 = contentBlock.width;\r\n                textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\r\n                var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\r\n                var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n                needDrawBg && this._renderBackground(style, boxX, boxY, outerWidth_1, outerHeight);\r\n            }\r\n            textY += lineHeight / 2;\r\n            if (textPadding) {\r\n                textX = getTextXForPadding(baseX, textAlign, textPadding);\r\n                if (verticalAlign === 'top') {\r\n                    textY += textPadding[0];\r\n                }\r\n                else if (verticalAlign === 'bottom') {\r\n                    textY -= textPadding[2];\r\n                }\r\n            }\r\n            var defaultLineWidth = 0;\r\n            var useDefaultFill = false;\r\n            var textFill = getFill('fill' in style\r\n                ? style.fill\r\n                : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in style\r\n                ? style.stroke\r\n                : (!bgColorDrawn\r\n                    && (!defaultStyle.autoStroke || useDefaultFill))\r\n                    ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                    : null);\r\n            var hasShadow = style.textShadowBlur > 0;\r\n            var fixedBoundingRect = style.width != null\r\n                && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\r\n            var calculatedLineHeight = contentBlock.calculatedLineHeight;\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var el = this._getOrCreateChild(TSpan);\r\n                var subElStyle = el.createStyle();\r\n                el.useStyle(subElStyle);\r\n                subElStyle.text = textLines[i];\r\n                subElStyle.x = textX;\r\n                subElStyle.y = textY;\r\n                if (textAlign) {\r\n                    subElStyle.textAlign = textAlign;\r\n                }\r\n                subElStyle.textBaseline = 'middle';\r\n                subElStyle.opacity = style.opacity;\r\n                subElStyle.strokeFirst = true;\r\n                if (hasShadow) {\r\n                    subElStyle.shadowBlur = style.textShadowBlur || 0;\r\n                    subElStyle.shadowColor = style.textShadowColor || 'transparent';\r\n                    subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\r\n                    subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\r\n                }\r\n                if (textStroke) {\r\n                    subElStyle.stroke = textStroke;\r\n                    subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\r\n                    subElStyle.lineDash = style.lineDash;\r\n                    subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                }\r\n                if (textFill) {\r\n                    subElStyle.fill = textFill;\r\n                }\r\n                subElStyle.font = textFont;\r\n                textY += lineHeight;\r\n                if (fixedBoundingRect) {\r\n                    el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\r\n                }\r\n            }\r\n        };\r\n        ZRText.prototype._updateRichTexts = function () {\r\n            var style = this.style;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parseRichText(text, style);\r\n            var contentWidth = contentBlock.width;\r\n            var outerWidth = contentBlock.outerWidth;\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textPadding = style.padding;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var defaultStyle = this._defaultStyle;\r\n            var textAlign = style.align || defaultStyle.align;\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\r\n            var boxX = adjustTextX(baseX, outerWidth, textAlign);\r\n            var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n            var xLeft = boxX;\r\n            var lineTop = boxY;\r\n            if (textPadding) {\r\n                xLeft += textPadding[3];\r\n                lineTop += textPadding[0];\r\n            }\r\n            var xRight = xLeft + contentWidth;\r\n            if (needDrawBackground(style)) {\r\n                this._renderBackground(style, boxX, boxY, outerWidth, outerHeight);\r\n            }\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            for (var i = 0; i < contentBlock.lines.length; i++) {\r\n                var line = contentBlock.lines[i];\r\n                var tokens = line.tokens;\r\n                var tokenCount = tokens.length;\r\n                var lineHeight = line.lineHeight;\r\n                var remainedWidth = line.width;\r\n                var leftIndex = 0;\r\n                var lineXLeft = xLeft;\r\n                var lineXRight = xRight;\r\n                var rightIndex = tokenCount - 1;\r\n                var token = void 0;\r\n                while (leftIndex < tokenCount\r\n                    && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                while (rightIndex >= 0\r\n                    && (token = tokens[rightIndex], token.align === 'right')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXRight -= token.width;\r\n                    rightIndex--;\r\n                }\r\n                lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\r\n                while (leftIndex <= rightIndex) {\r\n                    token = tokens[leftIndex];\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                lineTop += lineHeight;\r\n            }\r\n        };\r\n        ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\r\n            var tokenStyle = style.rich[token.styleName] || {};\r\n            tokenStyle.text = token.text;\r\n            var verticalAlign = token.verticalAlign;\r\n            var y = lineTop + lineHeight / 2;\r\n            if (verticalAlign === 'top') {\r\n                y = lineTop + token.height / 2;\r\n            }\r\n            else if (verticalAlign === 'bottom') {\r\n                y = lineTop + lineHeight - token.height / 2;\r\n            }\r\n            var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\r\n            needDrawBg && this._renderBackground(tokenStyle, textAlign === 'right'\r\n                ? x - token.width\r\n                : textAlign === 'center'\r\n                    ? x - token.width / 2\r\n                    : x, y - token.height / 2, token.width, token.height);\r\n            var bgColorDrawn = !!tokenStyle.backgroundColor;\r\n            var textPadding = token.textPadding;\r\n            if (textPadding) {\r\n                x = getTextXForPadding(x, textAlign, textPadding);\r\n            }\r\n            var el = this._getOrCreateChild(TSpan);\r\n            var subElStyle = el.createStyle();\r\n            el.useStyle(subElStyle);\r\n            var defaultStyle = this._defaultStyle;\r\n            var useDefaultFill = false;\r\n            var defaultLineWidth = 0;\r\n            var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\r\n                : 'fill' in style ? style.fill\r\n                    : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\r\n                : 'stroke' in style ? style.stroke\r\n                    : (!bgColorDrawn\r\n                        && !parentBgColorDrawn\r\n                        && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                        : null);\r\n            var hasShadow = tokenStyle.textShadowBlur > 0\r\n                || style.textShadowBlur > 0;\r\n            subElStyle.text = token.text;\r\n            subElStyle.x = x;\r\n            subElStyle.y = y;\r\n            if (hasShadow) {\r\n                subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\r\n                subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\r\n                subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\r\n                subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\r\n            }\r\n            subElStyle.textAlign = textAlign;\r\n            subElStyle.textBaseline = 'middle';\r\n            subElStyle.font = token.font || DEFAULT_FONT;\r\n            if (textStroke) {\r\n                subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\r\n                subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\r\n                subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                subElStyle.stroke = textStroke;\r\n            }\r\n            if (textFill) {\r\n                subElStyle.fill = textFill;\r\n            }\r\n            var textWidth = token.contentWidth;\r\n            var textHeight = token.contentHeight;\r\n            el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\r\n        };\r\n        ZRText.prototype._renderBackground = function (style, x, y, width, height) {\r\n            var textBackgroundColor = style.backgroundColor;\r\n            var textBorderWidth = style.borderWidth;\r\n            var textBorderColor = style.borderColor;\r\n            var isPlainBg = isString(textBackgroundColor);\r\n            var textBorderRadius = style.borderRadius;\r\n            var self = this;\r\n            var rectEl;\r\n            var imgEl;\r\n            if (isPlainBg || (textBorderWidth && textBorderColor)) {\r\n                rectEl = this._getOrCreateChild(Rect);\r\n                rectEl.useStyle(rectEl.createStyle());\r\n                rectEl.style.fill = null;\r\n                var rectShape = rectEl.shape;\r\n                rectShape.x = x;\r\n                rectShape.y = y;\r\n                rectShape.width = width;\r\n                rectShape.height = height;\r\n                rectShape.r = textBorderRadius;\r\n                rectEl.dirtyShape();\r\n            }\r\n            if (isPlainBg) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.fill = textBackgroundColor || null;\r\n                rectStyle.opacity = retrieve2(style.opacity, 1);\r\n                rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\r\n            }\r\n            else if (textBackgroundColor && textBackgroundColor.image) {\r\n                imgEl = this._getOrCreateChild(ZRImage);\r\n                imgEl.onload = function () {\r\n                    self.dirtyStyle();\r\n                };\r\n                var imgStyle = imgEl.style;\r\n                imgStyle.image = textBackgroundColor.image;\r\n                imgStyle.x = x;\r\n                imgStyle.y = y;\r\n                imgStyle.width = width;\r\n                imgStyle.height = height;\r\n            }\r\n            if (textBorderWidth && textBorderColor) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.lineWidth = textBorderWidth;\r\n                rectStyle.stroke = textBorderColor;\r\n                rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\r\n                rectStyle.lineDash = style.borderDash;\r\n                rectStyle.lineDashOffset = style.borderDashOffset || 0;\r\n                if (rectEl.hasFill() && rectEl.hasStroke()) {\r\n                    rectStyle.strokeFirst = true;\r\n                    rectStyle.lineWidth *= 2;\r\n                }\r\n            }\r\n            var shadowStyle = (rectEl || imgEl).style;\r\n            shadowStyle.shadowBlur = style.shadowBlur || 0;\r\n            shadowStyle.shadowColor = style.shadowColor || 'transparent';\r\n            shadowStyle.shadowOffsetX = style.shadowOffsetX || 0;\r\n            shadowStyle.shadowOffsetY = style.shadowOffsetY || 0;\r\n        };\r\n        ZRText.makeFont = function (style) {\r\n            var font = '';\r\n            if (style.fontSize || style.fontFamily || style.fontWeight) {\r\n                var fontSize = '';\r\n                if (typeof style.fontSize === 'string'\r\n                    && (style.fontSize.indexOf('px') !== -1\r\n                        || style.fontSize.indexOf('rem') !== -1\r\n                        || style.fontSize.indexOf('em') !== -1)) {\r\n                    fontSize = style.fontSize;\r\n                }\r\n                else if (!isNaN(+style.fontSize)) {\r\n                    fontSize = style.fontSize + 'px';\r\n                }\r\n                else {\r\n                    fontSize = '12px';\r\n                }\r\n                font = [\r\n                    style.fontStyle,\r\n                    style.fontWeight,\r\n                    fontSize,\r\n                    style.fontFamily || 'sans-serif'\r\n                ].join(' ');\r\n            }\r\n            return font && trim(font) || style.textFont || style.font;\r\n        };\r\n        return ZRText;\r\n    }(Displayable));\r\n    var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\n    var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\n    function normalizeTextStyle(style) {\r\n        normalizeStyle(style);\r\n        each(style.rich, normalizeStyle);\r\n        return style;\r\n    }\r\n    function normalizeStyle(style) {\r\n        if (style) {\r\n            style.font = ZRText.makeFont(style);\r\n            var textAlign = style.align;\r\n            textAlign === 'middle' && (textAlign = 'center');\r\n            style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\r\n            var verticalAlign = style.verticalAlign;\r\n            verticalAlign === 'center' && (verticalAlign = 'middle');\r\n            style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\r\n            var textPadding = style.padding;\r\n            if (textPadding) {\r\n                style.padding = normalizeCssArray(style.padding);\r\n            }\r\n        }\r\n    }\r\n    function getStroke(stroke, lineWidth) {\r\n        return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\r\n            ? null\r\n            : (stroke.image || stroke.colorStops)\r\n                ? '#000'\r\n                : stroke;\r\n    }\r\n    function getFill(fill) {\r\n        return (fill == null || fill === 'none')\r\n            ? null\r\n            : (fill.image || fill.colorStops)\r\n                ? '#000'\r\n                : fill;\r\n    }\r\n    function getTextXForPadding(x, textAlign, textPadding) {\r\n        return textAlign === 'right'\r\n            ? (x - textPadding[1])\r\n            : textAlign === 'center'\r\n                ? (x + textPadding[3] / 2 - textPadding[1] / 2)\r\n                : (x + textPadding[3]);\r\n    }\r\n    function getStyleText(style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        return text;\r\n    }\r\n    function needDrawBackground(style) {\r\n        return !!(style.backgroundColor\r\n            || (style.borderWidth && style.borderColor));\r\n    }\n\n    var ArcShape = (function () {\r\n        function ArcShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return ArcShape;\r\n    }());\r\n    var Arc = (function (_super) {\r\n        __extends(Arc, _super);\r\n        function Arc(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Arc.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Arc.prototype.getDefaultShape = function () {\r\n            return new ArcShape();\r\n        };\r\n        Arc.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = Math.max(shape.r, 0);\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitX = Math.cos(startAngle);\r\n            var unitY = Math.sin(startAngle);\r\n            ctx.moveTo(unitX * r + x, unitY * r + y);\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n        };\r\n        return Arc;\r\n    }(Path));\r\n    Arc.prototype.type = 'arc';\n\n    var out = [];\r\n    var BezierCurveShape = (function () {\r\n        function BezierCurveShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.cpx1 = 0;\r\n            this.cpy1 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return BezierCurveShape;\r\n    }());\r\n    function someVectorAt(shape, t, isTangent) {\r\n        var cpx2 = shape.cpx2;\r\n        var cpy2 = shape.cpy2;\r\n        if (cpx2 === null || cpy2 === null) {\r\n            return [\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\r\n            ];\r\n        }\r\n        else {\r\n            return [\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\r\n            ];\r\n        }\r\n    }\r\n    var BezierCurve = (function (_super) {\r\n        __extends(BezierCurve, _super);\r\n        function BezierCurve(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        BezierCurve.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        BezierCurve.prototype.getDefaultShape = function () {\r\n            return new BezierCurveShape();\r\n        };\r\n        BezierCurve.prototype.buildPath = function (ctx, shape) {\r\n            var x1 = shape.x1;\r\n            var y1 = shape.y1;\r\n            var x2 = shape.x2;\r\n            var y2 = shape.y2;\r\n            var cpx1 = shape.cpx1;\r\n            var cpy1 = shape.cpy1;\r\n            var cpx2 = shape.cpx2;\r\n            var cpy2 = shape.cpy2;\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (cpx2 == null || cpy2 == null) {\r\n                if (percent < 1) {\r\n                    quadraticSubdivide(x1, cpx1, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    x2 = out[2];\r\n                    quadraticSubdivide(y1, cpy1, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    y2 = out[2];\r\n                }\r\n                ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\r\n            }\r\n            else {\r\n                if (percent < 1) {\r\n                    cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    cpx2 = out[2];\r\n                    x2 = out[3];\r\n                    cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    cpy2 = out[2];\r\n                    y2 = out[3];\r\n                }\r\n                ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\r\n            }\r\n        };\r\n        BezierCurve.prototype.pointAt = function (t) {\r\n            return someVectorAt(this.shape, t, false);\r\n        };\r\n        BezierCurve.prototype.tangentAt = function (t) {\r\n            var p = someVectorAt(this.shape, t, true);\r\n            return normalize(p, p);\r\n        };\r\n        return BezierCurve;\r\n    }(Path));\r\n    BezierCurve.prototype.type = 'bezier-curve';\n\n    var DropletShape = (function () {\r\n        function DropletShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return DropletShape;\r\n    }());\r\n    var Droplet = (function (_super) {\r\n        __extends(Droplet, _super);\r\n        function Droplet(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Droplet.prototype.getDefaultShape = function () {\r\n            return new DropletShape();\r\n        };\r\n        Droplet.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y + a);\r\n            ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\r\n            ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\r\n            ctx.closePath();\r\n        };\r\n        return Droplet;\r\n    }(Path));\r\n    Droplet.prototype.type = 'droplet';\n\n    var HeartShape = (function () {\r\n        function HeartShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return HeartShape;\r\n    }());\r\n    var Heart = (function (_super) {\r\n        __extends(Heart, _super);\r\n        function Heart(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Heart.prototype.getDefaultShape = function () {\r\n            return new HeartShape();\r\n        };\r\n        Heart.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y);\r\n            ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\r\n            ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\r\n        };\r\n        return Heart;\r\n    }(Path));\r\n    Heart.prototype.type = 'heart';\n\n    var PI$2 = Math.PI;\r\n    var sin = Math.sin;\r\n    var cos = Math.cos;\r\n    var IsogonShape = (function () {\r\n        function IsogonShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.r = 0;\r\n            this.n = 0;\r\n        }\r\n        return IsogonShape;\r\n    }());\r\n    var Isogon = (function (_super) {\r\n        __extends(Isogon, _super);\r\n        function Isogon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Isogon.prototype.getDefaultShape = function () {\r\n            return new IsogonShape();\r\n        };\r\n        Isogon.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var r = shape.r;\r\n            var dStep = 2 * PI$2 / n;\r\n            var deg = -PI$2 / 2;\r\n            ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\r\n            for (var i = 0, end = n - 1; i < end; i++) {\r\n                deg += dStep;\r\n                ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\r\n            }\r\n            ctx.closePath();\r\n            return;\r\n        };\r\n        return Isogon;\r\n    }(Path));\r\n    Isogon.prototype.type = 'isogon';\n\n    var RingShape = (function () {\r\n        function RingShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n        }\r\n        return RingShape;\r\n    }());\r\n    var Ring = (function (_super) {\r\n        __extends(Ring, _super);\r\n        function Ring(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ring.prototype.getDefaultShape = function () {\r\n            return new RingShape();\r\n        };\r\n        Ring.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var PI2 = Math.PI * 2;\r\n            ctx.moveTo(x + shape.r, y);\r\n            ctx.arc(x, y, shape.r, 0, PI2, false);\r\n            ctx.moveTo(x + shape.r0, y);\r\n            ctx.arc(x, y, shape.r0, 0, PI2, true);\r\n        };\r\n        return Ring;\r\n    }(Path));\r\n    Ring.prototype.type = 'ring';\n\n    var sin$1 = Math.sin;\r\n    var cos$1 = Math.cos;\r\n    var radian = Math.PI / 180;\r\n    var RoseShape = (function () {\r\n        function RoseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = [];\r\n            this.k = 0;\r\n            this.n = 1;\r\n        }\r\n        return RoseShape;\r\n    }());\r\n    var Rose = (function (_super) {\r\n        __extends(Rose, _super);\r\n        function Rose(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rose.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Rose.prototype.getDefaultShape = function () {\r\n            return new RoseShape();\r\n        };\r\n        Rose.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var k = shape.k;\r\n            var n = shape.n;\r\n            var x0 = shape.cx;\r\n            var y0 = shape.cy;\r\n            var x;\r\n            var y;\r\n            var r;\r\n            ctx.moveTo(x0, y0);\r\n            for (var i = 0, len = R.length; i < len; i++) {\r\n                r = R[i];\r\n                for (var j = 0; j <= 360 * n; j++) {\r\n                    x = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * cos$1(j * radian)\r\n                        + x0;\r\n                    y = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * sin$1(j * radian)\r\n                        + y0;\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n        };\r\n        return Rose;\r\n    }(Path));\r\n    Rose.prototype.type = 'rose';\n\n    var SectorShape = (function () {\r\n        function SectorShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return SectorShape;\r\n    }());\r\n    var Sector = (function (_super) {\r\n        __extends(Sector, _super);\r\n        function Sector(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Sector.prototype.getDefaultShape = function () {\r\n            return new SectorShape();\r\n        };\r\n        Sector.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r0 = Math.max(shape.r0 || 0, 0);\r\n            var r = Math.max(shape.r, 0);\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitX = Math.cos(startAngle);\r\n            var unitY = Math.sin(startAngle);\r\n            ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\r\n            ctx.lineTo(unitX * r + x, unitY * r + y);\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n            ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\r\n            if (r0 !== 0) {\r\n                ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        Sector.prototype.isZeroArea = function () {\r\n            return this.shape.startAngle === this.shape.endAngle\r\n                || this.shape.r === this.shape.r0;\r\n        };\r\n        return Sector;\r\n    }(Path));\r\n    Sector.prototype.type = 'sector';\n\n    var PI$3 = Math.PI;\r\n    var cos$2 = Math.cos;\r\n    var sin$2 = Math.sin;\r\n    var StarShape = (function () {\r\n        function StarShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.n = 3;\r\n            this.r = 0;\r\n        }\r\n        return StarShape;\r\n    }());\r\n    var Star = (function (_super) {\r\n        __extends(Star, _super);\r\n        function Star(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Star.prototype.getDefaultShape = function () {\r\n            return new StarShape();\r\n        };\r\n        Star.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = shape.r;\r\n            var r0 = shape.r0;\r\n            if (r0 == null) {\r\n                r0 = n > 4\r\n                    ? r * cos$2(2 * PI$3 / n) / cos$2(PI$3 / n)\r\n                    : r / 3;\r\n            }\r\n            var dStep = PI$3 / n;\r\n            var deg = -PI$3 / 2;\r\n            var xStart = x + r * cos$2(deg);\r\n            var yStart = y + r * sin$2(deg);\r\n            deg += dStep;\r\n            ctx.moveTo(xStart, yStart);\r\n            for (var i = 0, end = n * 2 - 1, ri = void 0; i < end; i++) {\r\n                ri = i % 2 === 0 ? r0 : r;\r\n                ctx.lineTo(x + ri * cos$2(deg), y + ri * sin$2(deg));\r\n                deg += dStep;\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return Star;\r\n    }(Path));\r\n    Star.prototype.type = 'star';\n\n    var cos$3 = Math.cos;\r\n    var sin$3 = Math.sin;\r\n    var TrochoidShape = (function () {\r\n        function TrochoidShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n            this.d = 0;\r\n            this.location = 'out';\r\n        }\r\n        return TrochoidShape;\r\n    }());\r\n    var Trochoid = (function (_super) {\r\n        __extends(Trochoid, _super);\r\n        function Trochoid(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Trochoid.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Trochoid.prototype.getDefaultShape = function () {\r\n            return new TrochoidShape();\r\n        };\r\n        Trochoid.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var r = shape.r0;\r\n            var d = shape.d;\r\n            var offsetX = shape.cx;\r\n            var offsetY = shape.cy;\r\n            var delta = shape.location === 'out' ? 1 : -1;\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (shape.location && R <= r) {\r\n                return;\r\n            }\r\n            var num = 0;\r\n            var i = 1;\r\n            var theta;\r\n            x1 = (R + delta * r) * cos$3(0)\r\n                - delta * d * cos$3(0) + offsetX;\r\n            y1 = (R + delta * r) * sin$3(0)\r\n                - d * sin$3(0) + offsetY;\r\n            ctx.moveTo(x1, y1);\r\n            do {\r\n                num++;\r\n            } while ((r * num) % (R + delta * r) !== 0);\r\n            do {\r\n                theta = Math.PI / 180 * i;\r\n                x2 = (R + delta * r) * cos$3(theta)\r\n                    - delta * d * cos$3((R / r + delta) * theta)\r\n                    + offsetX;\r\n                y2 = (R + delta * r) * sin$3(theta)\r\n                    - d * sin$3((R / r + delta) * theta)\r\n                    + offsetY;\r\n                ctx.lineTo(x2, y2);\r\n                i++;\r\n            } while (i <= (r * num) / (R + delta * r) * 360);\r\n        };\r\n        return Trochoid;\r\n    }(Path));\r\n    Trochoid.prototype.type = 'trochoid';\n\n    var RadialGradient = (function (_super) {\r\n        __extends(RadialGradient, _super);\r\n        function RadialGradient(x, y, r, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0.5 : x;\r\n            _this.y = y == null ? 0.5 : y;\r\n            _this.r = r == null ? 0.5 : r;\r\n            _this.type = 'radial';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return RadialGradient;\r\n    }(Gradient));\n\n    var extent = [0, 0];\r\n    var extent2 = [0, 0];\r\n    var minTv$1 = new Point();\r\n    var maxTv$1 = new Point();\r\n    var OrientedBoundingRect = (function () {\r\n        function OrientedBoundingRect(rect, transform) {\r\n            this._corners = [];\r\n            this._axes = [];\r\n            this._origin = [0, 0];\r\n            for (var i = 0; i < 4; i++) {\r\n                this._corners[i] = new Point();\r\n            }\r\n            for (var i = 0; i < 2; i++) {\r\n                this._axes[i] = new Point();\r\n            }\r\n            if (rect) {\r\n                this.fromBoundingRect(rect, transform);\r\n            }\r\n        }\r\n        OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\r\n            var corners = this._corners;\r\n            var axes = this._axes;\r\n            var x = rect.x;\r\n            var y = rect.y;\r\n            var x2 = x + rect.width;\r\n            var y2 = y + rect.height;\r\n            corners[0].set(x, y);\r\n            corners[1].set(x2, y);\r\n            corners[2].set(x2, y2);\r\n            corners[3].set(x, y2);\r\n            if (transform) {\r\n                for (var i = 0; i < 4; i++) {\r\n                    corners[i].transform(transform);\r\n                }\r\n            }\r\n            Point.sub(axes[0], corners[1], corners[0]);\r\n            Point.sub(axes[1], corners[3], corners[0]);\r\n            axes[0].normalize();\r\n            axes[1].normalize();\r\n            for (var i = 0; i < 2; i++) {\r\n                this._origin[i] = axes[i].dot(corners[0]);\r\n            }\r\n        };\r\n        OrientedBoundingRect.prototype.intersect = function (other, mtv) {\r\n            var overlapped = true;\r\n            var noMtv = !mtv;\r\n            minTv$1.set(Infinity, Infinity);\r\n            maxTv$1.set(0, 0);\r\n            if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!noMtv) {\r\n                Point.copy(mtv, overlapped ? minTv$1 : maxTv$1);\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\r\n            var overlapped = true;\r\n            for (var i = 0; i < 2; i++) {\r\n                var axis = this._axes[i];\r\n                this._getProjMinMaxOnAxis(i, self._corners, extent);\r\n                this._getProjMinMaxOnAxis(i, other._corners, extent2);\r\n                if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\r\n                    overlapped = false;\r\n                    if (noMtv) {\r\n                        return overlapped;\r\n                    }\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) > maxTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(maxTv, axis, -dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(maxTv, axis, dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n                else if (minTv) {\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) < minTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(minTv, axis, dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(minTv, axis, -dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\r\n            var axis = this._axes[dim];\r\n            var origin = this._origin;\r\n            var proj = corners[0].dot(axis) + origin[dim];\r\n            var min = proj;\r\n            var max = proj;\r\n            for (var i = 1; i < corners.length; i++) {\r\n                var proj_1 = corners[i].dot(axis) + origin[dim];\r\n                min = Math.min(proj_1, min);\r\n                max = Math.max(proj_1, max);\r\n            }\r\n            out[0] = min;\r\n            out[1] = max;\r\n        };\r\n        return OrientedBoundingRect;\r\n    }());\n\n    /*!\r\n    * ZRender, a high performance 2d drawing library.\r\n    *\r\n    * Copyright (c) 2013, Baidu Inc.\r\n    * All rights reserved.\r\n    *\r\n    * LICENSE\r\n    * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\r\n    */\r\n    var useVML = !env.canvasSupported;\r\n    var painterCtors = {};\r\n    function delInstance(id) {\r\n    }\r\n    function isDarkMode(backgroundColor) {\r\n        if (!backgroundColor) {\r\n            return false;\r\n        }\r\n        if (typeof backgroundColor === 'string') {\r\n            return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\r\n        }\r\n        else if (backgroundColor.colorStops) {\r\n            var colorStops = backgroundColor.colorStops;\r\n            var totalLum = 0;\r\n            var len = colorStops.length;\r\n            for (var i = 0; i < len; i++) {\r\n                totalLum += lum(colorStops[i].color, 1);\r\n            }\r\n            totalLum /= len;\r\n            return totalLum < DARK_MODE_THRESHOLD;\r\n        }\r\n        return false;\r\n    }\r\n    var ZRender = (function () {\r\n        function ZRender(id, dom, opts) {\r\n            var _this = this;\r\n            this._stillFrameAccum = 0;\r\n            this._needsRefresh = true;\r\n            this._needsRefreshHover = true;\r\n            this._darkMode = false;\r\n            opts = opts || {};\r\n            this.dom = dom;\r\n            this.id = id;\r\n            var storage = new Storage();\r\n            var rendererType = opts.renderer;\r\n            if (useVML) {\r\n                if (!painterCtors.vml) {\r\n                    throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\r\n                }\r\n                rendererType = 'vml';\r\n            }\r\n            else if (!rendererType) {\r\n                rendererType = 'canvas';\r\n            }\r\n            if (!painterCtors[rendererType]) {\r\n                throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\r\n            }\r\n            var painter = new painterCtors[rendererType](dom, storage, opts, id);\r\n            this.storage = storage;\r\n            this.painter = painter;\r\n            var handerProxy = (!env.node && !env.worker)\r\n                ? new HandlerDomProxy(painter.getViewportRoot(), painter.root)\r\n                : null;\r\n            this.handler = new Handler(storage, painter, handerProxy, painter.root);\r\n            this.animation = new Animation({\r\n                stage: {\r\n                    update: function () { return _this._flush(true); }\r\n                }\r\n            });\r\n            this.animation.start();\r\n        }\r\n        ZRender.prototype.add = function (el) {\r\n            this.storage.addRoot(el);\r\n            el.addSelfToZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.remove = function (el) {\r\n            this.storage.delRoot(el);\r\n            el.removeSelfFromZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.configLayer = function (zLevel, config) {\r\n            if (this.painter.configLayer) {\r\n                this.painter.configLayer(zLevel, config);\r\n            }\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this.painter.setBackgroundColor) {\r\n                this.painter.setBackgroundColor(backgroundColor);\r\n            }\r\n            this.refresh();\r\n            this._backgroundColor = backgroundColor;\r\n            this._darkMode = isDarkMode(backgroundColor);\r\n        };\r\n        ZRender.prototype.getBackgroundColor = function () {\r\n            return this._backgroundColor;\r\n        };\r\n        ZRender.prototype.setDarkMode = function (darkMode) {\r\n            this._darkMode = darkMode;\r\n        };\r\n        ZRender.prototype.isDarkMode = function () {\r\n            return this._darkMode;\r\n        };\r\n        ZRender.prototype.refreshImmediately = function (fromInside) {\r\n            if (!fromInside) {\r\n                this.animation.update();\r\n            }\r\n            this._needsRefresh = false;\r\n            this.painter.refresh();\r\n            this._needsRefresh = false;\r\n        };\r\n        ZRender.prototype.refresh = function () {\r\n            this._needsRefresh = true;\r\n            this.animation.start();\r\n        };\r\n        ZRender.prototype.flush = function () {\r\n            this._flush(false);\r\n        };\r\n        ZRender.prototype._flush = function (fromInside) {\r\n            var triggerRendered;\r\n            if (this._needsRefresh) {\r\n                triggerRendered = true;\r\n                this.refreshImmediately(fromInside);\r\n            }\r\n            if (this._needsRefreshHover) {\r\n                triggerRendered = true;\r\n                this.refreshHoverImmediately();\r\n            }\r\n            if (triggerRendered) {\r\n                this._stillFrameAccum = 0;\r\n                this.trigger('rendered');\r\n            }\r\n            else {\r\n                this._stillFrameAccum++;\r\n                if (this._stillFrameAccum > 10) {\r\n                    this.animation.stop();\r\n                }\r\n            }\r\n        };\r\n        ZRender.prototype.wakeUp = function () {\r\n            this.animation.start();\r\n            this._stillFrameAccum = 0;\r\n        };\r\n        ZRender.prototype.addHover = function (el) {\r\n        };\r\n        ZRender.prototype.removeHover = function (el) {\r\n        };\r\n        ZRender.prototype.clearHover = function () {\r\n        };\r\n        ZRender.prototype.refreshHover = function () {\r\n            this._needsRefreshHover = true;\r\n        };\r\n        ZRender.prototype.refreshHoverImmediately = function () {\r\n            this._needsRefreshHover = false;\r\n            if (this.painter.refreshHover) {\r\n                this.painter.refreshHover();\r\n            }\r\n        };\r\n        ZRender.prototype.resize = function (opts) {\r\n            opts = opts || {};\r\n            this.painter.resize(opts.width, opts.height);\r\n            this.handler.resize();\r\n        };\r\n        ZRender.prototype.clearAnimation = function () {\r\n            this.animation.clear();\r\n        };\r\n        ZRender.prototype.getWidth = function () {\r\n            return this.painter.getWidth();\r\n        };\r\n        ZRender.prototype.getHeight = function () {\r\n            return this.painter.getHeight();\r\n        };\r\n        ZRender.prototype.pathToImage = function (e, dpr) {\r\n            if (this.painter.pathToImage) {\r\n                return this.painter.pathToImage(e, dpr);\r\n            }\r\n        };\r\n        ZRender.prototype.setCursorStyle = function (cursorStyle) {\r\n            this.handler.setCursorStyle(cursorStyle);\r\n        };\r\n        ZRender.prototype.findHover = function (x, y) {\r\n            return this.handler.findHover(x, y);\r\n        };\r\n        ZRender.prototype.on = function (eventName, eventHandler, context) {\r\n            this.handler.on(eventName, eventHandler, context);\r\n            return this;\r\n        };\r\n        ZRender.prototype.off = function (eventName, eventHandler) {\r\n            this.handler.off(eventName, eventHandler);\r\n        };\r\n        ZRender.prototype.trigger = function (eventName, event) {\r\n            this.handler.trigger(eventName, event);\r\n        };\r\n        ZRender.prototype.clear = function () {\r\n            var roots = this.storage.getRoots();\r\n            for (var i = 0; i < roots.length; i++) {\r\n                if (roots[i] instanceof Group) {\r\n                    roots[i].removeSelfFromZr(this);\r\n                }\r\n            }\r\n            this.storage.delAllRoots();\r\n            this.painter.clear();\r\n        };\r\n        ZRender.prototype.dispose = function () {\r\n            this.animation.stop();\r\n            this.clear();\r\n            this.storage.dispose();\r\n            this.painter.dispose();\r\n            this.handler.dispose();\r\n            this.animation =\r\n                this.storage =\r\n                    this.painter =\r\n                        this.handler = null;\r\n            delInstance(this.id);\r\n        };\r\n        return ZRender;\r\n    }());\r\n    function init(dom, opts) {\r\n        var zr = new ZRender(guid(), dom, opts);\r\n        return zr;\r\n    }\r\n    function registerPainter(name, Ctor) {\r\n        painterCtors[name] = Ctor;\r\n    }\n\n    var RADIAN_EPSILON = 1e-4;\r\n    function _trim(str) {\r\n        return str.replace(/^\\s+|\\s+$/g, '');\r\n    }\r\n    function linearMap(val, domain, range, clamp) {\r\n        var subDomain = domain[1] - domain[0];\r\n        var subRange = range[1] - range[0];\r\n        if (subDomain === 0) {\r\n            return subRange === 0\r\n                ? range[0]\r\n                : (range[0] + range[1]) / 2;\r\n        }\r\n        if (clamp) {\r\n            if (subDomain > 0) {\r\n                if (val <= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val >= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n            else {\r\n                if (val >= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val <= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (val === domain[0]) {\r\n                return range[0];\r\n            }\r\n            if (val === domain[1]) {\r\n                return range[1];\r\n            }\r\n        }\r\n        return (val - domain[0]) / subDomain * subRange + range[0];\r\n    }\r\n    function parsePercent$2(percent, all) {\r\n        switch (percent) {\r\n            case 'center':\r\n            case 'middle':\r\n                percent = '50%';\r\n                break;\r\n            case 'left':\r\n            case 'top':\r\n                percent = '0%';\r\n                break;\r\n            case 'right':\r\n            case 'bottom':\r\n                percent = '100%';\r\n                break;\r\n        }\r\n        if (typeof percent === 'string') {\r\n            if (_trim(percent).match(/%$/)) {\r\n                return parseFloat(percent) / 100 * all;\r\n            }\r\n            return parseFloat(percent);\r\n        }\r\n        return percent == null ? NaN : +percent;\r\n    }\r\n    function round$1(x, precision, returnStr) {\r\n        if (precision == null) {\r\n            precision = 10;\r\n        }\r\n        precision = Math.min(Math.max(0, precision), 20);\r\n        x = (+x).toFixed(precision);\r\n        return (returnStr ? x : +x);\r\n    }\r\n    function getPrecisionSafe(val) {\r\n        var str = val.toString();\r\n        var eIndex = str.indexOf('e');\r\n        if (eIndex > 0) {\r\n            var precision = +str.slice(eIndex + 1);\r\n            return precision < 0 ? -precision : 0;\r\n        }\r\n        else {\r\n            var dotIndex = str.indexOf('.');\r\n            return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\r\n        }\r\n    }\r\n    function getPixelPrecision(dataExtent, pixelExtent) {\r\n        var log = Math.log;\r\n        var LN10 = Math.LN10;\r\n        var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\r\n        var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\r\n        var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\r\n        return !isFinite(precision) ? 20 : precision;\r\n    }\r\n    function getPercentWithPrecision(valueList, idx, precision) {\r\n        if (!valueList[idx]) {\r\n            return 0;\r\n        }\r\n        var sum = reduce(valueList, function (acc, val) {\r\n            return acc + (isNaN(val) ? 0 : val);\r\n        }, 0);\r\n        if (sum === 0) {\r\n            return 0;\r\n        }\r\n        var digits = Math.pow(10, precision);\r\n        var votesPerQuota = map(valueList, function (val) {\r\n            return (isNaN(val) ? 0 : val) / sum * digits * 100;\r\n        });\r\n        var targetSeats = digits * 100;\r\n        var seats = map(votesPerQuota, function (votes) {\r\n            return Math.floor(votes);\r\n        });\r\n        var currentSum = reduce(seats, function (acc, val) {\r\n            return acc + val;\r\n        }, 0);\r\n        var remainder = map(votesPerQuota, function (votes, idx) {\r\n            return votes - seats[idx];\r\n        });\r\n        while (currentSum < targetSeats) {\r\n            var max = Number.NEGATIVE_INFINITY;\r\n            var maxId = null;\r\n            for (var i = 0, len = remainder.length; i < len; ++i) {\r\n                if (remainder[i] > max) {\r\n                    max = remainder[i];\r\n                    maxId = i;\r\n                }\r\n            }\r\n            ++seats[maxId];\r\n            remainder[maxId] = 0;\r\n            ++currentSum;\r\n        }\r\n        return seats[idx] / digits;\r\n    }\r\n    function remRadian(radian) {\r\n        var pi2 = Math.PI * 2;\r\n        return (radian % pi2 + pi2) % pi2;\r\n    }\r\n    function isRadianAroundZero(val) {\r\n        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n    }\r\n    var TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;\r\n    function parseDate(value) {\r\n        if (value instanceof Date) {\r\n            return value;\r\n        }\r\n        else if (typeof value === 'string') {\r\n            var match = TIME_REG.exec(value);\r\n            if (!match) {\r\n                return new Date(NaN);\r\n            }\r\n            if (!match[8]) {\r\n                return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\r\n            }\r\n            else {\r\n                var hour = +match[4] || 0;\r\n                if (match[8].toUpperCase() !== 'Z') {\r\n                    hour -= +match[8].slice(0, 3);\r\n                }\r\n                return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\r\n            }\r\n        }\r\n        else if (value == null) {\r\n            return new Date(NaN);\r\n        }\r\n        return new Date(Math.round(value));\r\n    }\r\n    function quantity(val) {\r\n        return Math.pow(10, quantityExponent(val));\r\n    }\r\n    function quantityExponent(val) {\r\n        if (val === 0) {\r\n            return 0;\r\n        }\r\n        var exp = Math.floor(Math.log(val) / Math.LN10);\r\n        if (val / Math.pow(10, exp) >= 10) {\r\n            exp++;\r\n        }\r\n        return exp;\r\n    }\r\n    function nice(val, round) {\r\n        var exponent = quantityExponent(val);\r\n        var exp10 = Math.pow(10, exponent);\r\n        var f = val / exp10;\r\n        var nf;\r\n        if (round) {\r\n            if (f < 1.5) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2.5) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 4) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 7) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        else {\r\n            if (f < 1) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 3) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 5) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        val = nf * exp10;\r\n        return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\r\n    }\r\n    function numericToNumber(val) {\r\n        var valFloat = parseFloat(val);\r\n        return (valFloat == val\r\n            && (valFloat !== 0 || typeof val !== 'string' || val.indexOf('x') <= 0)) ? valFloat : NaN;\r\n    }\r\n    function isNumeric(val) {\r\n        return !isNaN(numericToNumber(val));\r\n    }\n\n    var DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\n    var INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\n    function normalizeToArray(value) {\r\n        return value instanceof Array\r\n            ? value\r\n            : value == null\r\n                ? []\r\n                : [value];\r\n    }\r\n    function defaultEmphasis(opt, key, subOpts) {\r\n        if (opt) {\r\n            opt[key] = opt[key] || {};\r\n            opt.emphasis = opt.emphasis || {};\r\n            opt.emphasis[key] = opt.emphasis[key] || {};\r\n            for (var i = 0, len = subOpts.length; i < len; i++) {\r\n                var subOptName = subOpts[i];\r\n                if (!opt.emphasis[key].hasOwnProperty(subOptName)\r\n                    && opt[key].hasOwnProperty(subOptName)) {\r\n                    opt.emphasis[key][subOptName] = opt[key][subOptName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var TEXT_STYLE_OPTIONS = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth',\r\n        'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY',\r\n        'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'\r\n    ];\r\n    function getDataItemValue(dataItem) {\r\n        return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n            ? dataItem.value : dataItem;\r\n    }\r\n    function isDataItemOption(dataItem) {\r\n        return isObject(dataItem)\r\n            && !(dataItem instanceof Array);\r\n    }\r\n    function mappingToExists(existings, newCmptOptions, mode) {\r\n        var isNormalMergeMode = mode === 'normalMerge';\r\n        var isReplaceMergeMode = mode === 'replaceMerge';\r\n        var isReplaceAllMode = mode === 'replaceAll';\r\n        existings = existings || [];\r\n        newCmptOptions = (newCmptOptions || []).slice();\r\n        var existingIdIdxMap = createHashMap();\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!isObject(cmptOption)) {\r\n                newCmptOptions[index] = null;\r\n                return;\r\n            }\r\n            cmptOption.id == null || validateIdOrName(cmptOption.id);\r\n            cmptOption.name == null || validateIdOrName(cmptOption.name);\r\n        });\r\n        var result = prepareResult(existings, existingIdIdxMap, mode);\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingById(result, existings, existingIdIdxMap, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode) {\r\n            mappingByName(result, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\r\n        }\r\n        else if (isReplaceAllMode) {\r\n            mappingInReplaceAllMode(result, newCmptOptions);\r\n        }\r\n        makeIdAndName(result);\r\n        return result;\r\n    }\r\n    function prepareResult(existings, existingIdIdxMap, mode) {\r\n        var result = [];\r\n        if (mode === 'replaceAll') {\r\n            return result;\r\n        }\r\n        for (var index = 0; index < existings.length; index++) {\r\n            var existing = existings[index];\r\n            if (existing && existing.id != null) {\r\n                existingIdIdxMap.set(existing.id, index);\r\n            }\r\n            result.push({\r\n                existing: (mode === 'replaceMerge' || isComponentIdInternal(existing))\r\n                    ? null\r\n                    : existing,\r\n                newOption: null,\r\n                keyInfo: null,\r\n                brandNew: null\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.id == null) {\r\n                return;\r\n            }\r\n            var optionId = makeComparableKey(cmptOption.id);\r\n            var existingIdx = existingIdIdxMap.get(optionId);\r\n            if (existingIdx != null) {\r\n                var resultItem = result[existingIdx];\r\n                assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.existing = existings[existingIdx];\r\n                newCmptOptions[index] = null;\r\n            }\r\n        });\r\n    }\r\n    function mappingByName(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.name == null) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < result.length; i++) {\r\n                var existing = result[i].existing;\r\n                if (!result[i].newOption\r\n                    && existing\r\n                    && (existing.id == null || cmptOption.id == null)\r\n                    && !isComponentIdInternal(cmptOption)\r\n                    && !isComponentIdInternal(existing)\r\n                    && keyExistAndEqual('name', existing, cmptOption)) {\r\n                    result[i].newOption = cmptOption;\r\n                    newCmptOptions[index] = null;\r\n                    return;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function mappingByIndex(result, newCmptOptions, brandNew) {\r\n        var nextIdx = 0;\r\n        each(newCmptOptions, function (cmptOption) {\r\n            if (!cmptOption) {\r\n                return;\r\n            }\r\n            var resultItem;\r\n            while ((resultItem = result[nextIdx])\r\n                && (resultItem.newOption\r\n                    || isComponentIdInternal(resultItem.existing)\r\n                    || (resultItem.existing\r\n                        && cmptOption.id != null\r\n                        && !keyExistAndEqual('id', cmptOption, resultItem.existing)))) {\r\n                nextIdx++;\r\n            }\r\n            if (resultItem) {\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.brandNew = brandNew;\r\n            }\r\n            else {\r\n                result.push({\r\n                    newOption: cmptOption,\r\n                    brandNew: brandNew,\r\n                    existing: null,\r\n                    keyInfo: null\r\n                });\r\n            }\r\n            nextIdx++;\r\n        });\r\n    }\r\n    function mappingInReplaceAllMode(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            result.push({\r\n                newOption: cmptOption,\r\n                brandNew: true,\r\n                existing: null,\r\n                keyInfo: null\r\n            });\r\n        });\r\n    }\r\n    function makeIdAndName(mapResult) {\r\n        var idMap = createHashMap();\r\n        each(mapResult, function (item) {\r\n            var existing = item.existing;\r\n            existing && idMap.set(existing.id, item);\r\n        });\r\n        each(mapResult, function (item) {\r\n            var opt = item.newOption;\r\n            assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\r\n            opt && opt.id != null && idMap.set(opt.id, item);\r\n            !item.keyInfo && (item.keyInfo = {});\r\n        });\r\n        each(mapResult, function (item, index) {\r\n            var existing = item.existing;\r\n            var opt = item.newOption;\r\n            var keyInfo = item.keyInfo;\r\n            if (!isObject(opt)) {\r\n                return;\r\n            }\r\n            keyInfo.name = opt.name != null\r\n                ? makeComparableKey(opt.name)\r\n                : existing\r\n                    ? existing.name\r\n                    : DUMMY_COMPONENT_NAME_PREFIX + index;\r\n            if (existing) {\r\n                keyInfo.id = makeComparableKey(existing.id);\r\n            }\r\n            else if (opt.id != null) {\r\n                keyInfo.id = makeComparableKey(opt.id);\r\n            }\r\n            else {\r\n                var idNum = 0;\r\n                do {\r\n                    keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\r\n                } while (idMap.get(keyInfo.id));\r\n            }\r\n            idMap.set(keyInfo.id, item);\r\n        });\r\n    }\r\n    function keyExistAndEqual(attr, obj1, obj2) {\r\n        var key1 = obj1[attr];\r\n        var key2 = obj2[attr];\r\n        return key1 != null && key2 != null && key1 + '' === key2 + '';\r\n    }\r\n    function makeComparableKey(val) {\r\n        if (__DEV__) {\r\n            if (val == null) {\r\n                throw new Error();\r\n            }\r\n        }\r\n        return val + '';\r\n    }\r\n    function validateIdOrName(idOrName) {\r\n        if (__DEV__) {\r\n            assert(isValidIdOrName(idOrName), '`' + idOrName + '` is invalid id or name. Must be a string.');\r\n        }\r\n    }\r\n    function isValidIdOrName(idOrName) {\r\n        return isStringSafe(idOrName) || isNumeric(idOrName);\r\n    }\r\n    function isNameSpecified(componentModel) {\r\n        var name = componentModel.name;\r\n        return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n    }\r\n    function isComponentIdInternal(cmptOption) {\r\n        return cmptOption\r\n            && cmptOption.id != null\r\n            && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\r\n    }\r\n    function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\r\n        each(mappingResult, function (item) {\r\n            var newOption = item.newOption;\r\n            if (isObject(newOption)) {\r\n                item.keyInfo.mainType = mainType;\r\n                item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\r\n            }\r\n        });\r\n    }\r\n    function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\r\n        var subType = newCmptOption.type\r\n            ? newCmptOption.type\r\n            : existComponent\r\n                ? existComponent.subType\r\n                : componentModelCtor.determineSubType(mainType, newCmptOption);\r\n        return subType;\r\n    }\r\n    function queryDataIndex(data, payload) {\r\n        if (payload.dataIndexInside != null) {\r\n            return payload.dataIndexInside;\r\n        }\r\n        else if (payload.dataIndex != null) {\r\n            return isArray(payload.dataIndex)\r\n                ? map(payload.dataIndex, function (value) {\r\n                    return data.indexOfRawIndex(value);\r\n                })\r\n                : data.indexOfRawIndex(payload.dataIndex);\r\n        }\r\n        else if (payload.name != null) {\r\n            return isArray(payload.name)\r\n                ? map(payload.name, function (value) {\r\n                    return data.indexOfName(value);\r\n                })\r\n                : data.indexOfName(payload.name);\r\n        }\r\n    }\r\n    function makeInner() {\r\n        var key = '__ec_inner_' + innerUniqueIndex++;\r\n        return function (hostObj) {\r\n            return hostObj[key] || (hostObj[key] = {});\r\n        };\r\n    }\r\n    var innerUniqueIndex = Math.round(Math.random() * 5);\r\n    function parseFinder(ecModel, finderInput, opt) {\r\n        var finder;\r\n        if (isString(finderInput)) {\r\n            var obj = {};\r\n            obj[finderInput + 'Index'] = 0;\r\n            finder = obj;\r\n        }\r\n        else {\r\n            finder = finderInput;\r\n        }\r\n        var defaultMainType = opt ? opt.defaultMainType : null;\r\n        var queryOptionMap = createHashMap();\r\n        var result = {};\r\n        each(finder, function (value, key) {\r\n            if (key === 'dataIndex' || key === 'dataIndexInside') {\r\n                result[key] = value;\r\n                return;\r\n            }\r\n            var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\r\n            var mainType = parsedKey[1];\r\n            var queryType = (parsedKey[2] || '').toLowerCase();\r\n            if (!mainType\r\n                || !queryType\r\n                || (mainType !== defaultMainType && value == null)\r\n                || (opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0)) {\r\n                return;\r\n            }\r\n            var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\r\n            queryOption[queryType] = value;\r\n        });\r\n        queryOptionMap.each(function (queryOption, mainType) {\r\n            var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\r\n                useDefault: mainType === defaultMainType,\r\n                enableAll: true,\r\n                enableNone: true\r\n            });\r\n            result[mainType + 'Models'] = queryResult.models;\r\n            result[mainType + 'Model'] = queryResult.models[0];\r\n        });\r\n        return result;\r\n    }\r\n    var SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\n    function queryReferringComponents(ecModel, mainType, userOption, opt) {\r\n        var indexOption = userOption.index;\r\n        var idOption = userOption.id;\r\n        var nameOption = userOption.name;\r\n        var result = {\r\n            models: null,\r\n            specified: indexOption != null || idOption != null || nameOption != null\r\n        };\r\n        if (!result.specified) {\r\n            var firstCmpt = void 0;\r\n            result.models = (opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))) ? [firstCmpt] : [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'none' || indexOption === false) {\r\n            assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\r\n            result.models = [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'all') {\r\n            assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\r\n            indexOption = idOption = nameOption = null;\r\n        }\r\n        result.models = ecModel.queryComponents({\r\n            mainType: mainType,\r\n            index: indexOption,\r\n            id: idOption,\r\n            name: nameOption\r\n        });\r\n        return result;\r\n    }\r\n    function setAttribute(dom, key, value) {\r\n        dom.setAttribute\r\n            ? dom.setAttribute(key, value)\r\n            : (dom[key] = value);\r\n    }\r\n    function getAttribute(dom, key) {\r\n        return dom.getAttribute\r\n            ? dom.getAttribute(key)\r\n            : dom[key];\r\n    }\n\n    var TYPE_DELIMITER = '.';\r\n    var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\n    var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\n    function parseClassType(componentType) {\r\n        var ret = { main: '', sub: '' };\r\n        if (componentType) {\r\n            var typeArr = componentType.split(TYPE_DELIMITER);\r\n            ret.main = typeArr[0] || '';\r\n            ret.sub = typeArr[1] || '';\r\n        }\r\n        return ret;\r\n    }\r\n    function checkClassType(componentType) {\r\n        assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n    }\r\n    function isExtendedClass(clz) {\r\n        return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n    }\r\n    function enableClassExtend(rootClz, mandatoryMethods) {\r\n        rootClz.$constructor = rootClz;\r\n        rootClz.extend = function (proto) {\r\n            if (__DEV__) {\r\n                each(mandatoryMethods, function (method) {\r\n                    if (!proto[method]) {\r\n                        console.warn('Method `' + method + '` should be implemented'\r\n                            + (proto.type ? ' in ' + proto.type : '') + '.');\r\n                    }\r\n                });\r\n            }\r\n            var superClass = this;\r\n            function ExtendedClass() {\r\n                var args = [];\r\n                for (var _i = 0; _i < arguments.length; _i++) {\r\n                    args[_i] = arguments[_i];\r\n                }\r\n                if (!proto.$constructor) {\r\n                    if (!isESClass(superClass)) {\r\n                        superClass.apply(this, arguments);\r\n                    }\r\n                    else {\r\n                        var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArrays([void 0], args)))());\r\n                        return ins;\r\n                    }\r\n                }\r\n                else {\r\n                    proto.$constructor.apply(this, arguments);\r\n                }\r\n            }\r\n            ExtendedClass[IS_EXTENDED_CLASS] = true;\r\n            extend(ExtendedClass.prototype, proto);\r\n            ExtendedClass.extend = this.extend;\r\n            ExtendedClass.superCall = superCall;\r\n            ExtendedClass.superApply = superApply;\r\n            inherits(ExtendedClass, this);\r\n            ExtendedClass.superClass = superClass;\r\n            return ExtendedClass;\r\n        };\r\n    }\r\n    function isESClass(fn) {\r\n        return typeof fn === 'function'\r\n            && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n    }\r\n    function mountExtend(SubClz, SupperClz) {\r\n        SubClz.extend = SupperClz.extend;\r\n    }\r\n    var classBase = Math.round(Math.random() * 10);\r\n    function enableClassCheck(target) {\r\n        var classAttr = ['__\\0is_clz', classBase++].join('_');\r\n        target.prototype[classAttr] = true;\r\n        if (__DEV__) {\r\n            assert(!target.isInstance, 'The method \"is\" can not be defined.');\r\n        }\r\n        target.isInstance = function (obj) {\r\n            return !!(obj && obj[classAttr]);\r\n        };\r\n    }\r\n    function superCall(context, methodName) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function superApply(context, methodName, args) {\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function enableClassManagement(target, options) {\r\n        options = options || {};\r\n        var storage = {};\r\n        target.registerClass = function (clz) {\r\n            var componentFullType = clz.type || clz.prototype.type;\r\n            if (componentFullType) {\r\n                checkClassType(componentFullType);\r\n                clz.prototype.type = componentFullType;\r\n                var componentTypeInfo = parseClassType(componentFullType);\r\n                if (!componentTypeInfo.sub) {\r\n                    if (__DEV__) {\r\n                        if (storage[componentTypeInfo.main]) {\r\n                            console.warn(componentTypeInfo.main + ' exists.');\r\n                        }\r\n                    }\r\n                    storage[componentTypeInfo.main] = clz;\r\n                }\r\n                else if (componentTypeInfo.sub !== IS_CONTAINER) {\r\n                    var container = makeContainer(componentTypeInfo);\r\n                    container[componentTypeInfo.sub] = clz;\r\n                }\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClass = function (mainType, subType, throwWhenNotFound) {\r\n            var clz = storage[mainType];\r\n            if (clz && clz[IS_CONTAINER]) {\r\n                clz = subType ? clz[subType] : null;\r\n            }\r\n            if (throwWhenNotFound && !clz) {\r\n                throw new Error(!subType\r\n                    ? mainType + '.' + 'type should be specified.'\r\n                    : 'Component ' + mainType + '.' + (subType || '') + ' not exists. Load it first.');\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClassesByMainType = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var result = [];\r\n            var obj = storage[componentTypeInfo.main];\r\n            if (obj && obj[IS_CONTAINER]) {\r\n                each(obj, function (o, type) {\r\n                    type !== IS_CONTAINER && result.push(o);\r\n                });\r\n            }\r\n            else {\r\n                result.push(obj);\r\n            }\r\n            return result;\r\n        };\r\n        target.hasClass = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            return !!storage[componentTypeInfo.main];\r\n        };\r\n        target.getAllClassMainTypes = function () {\r\n            var types = [];\r\n            each(storage, function (obj, type) {\r\n                types.push(type);\r\n            });\r\n            return types;\r\n        };\r\n        target.hasSubTypes = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var obj = storage[componentTypeInfo.main];\r\n            return obj && obj[IS_CONTAINER];\r\n        };\r\n        function makeContainer(componentTypeInfo) {\r\n            var container = storage[componentTypeInfo.main];\r\n            if (!container || !container[IS_CONTAINER]) {\r\n                container = storage[componentTypeInfo.main] = {};\r\n                container[IS_CONTAINER] = true;\r\n            }\r\n            return container;\r\n        }\r\n        if (options.registerWhenExtend) {\r\n            var originalExtend_1 = target.extend;\r\n            if (originalExtend_1) {\r\n                target.extend = function (proto) {\r\n                    var ExtendedClass = originalExtend_1.call(this, proto);\r\n                    return target.registerClass(ExtendedClass);\r\n                };\r\n            }\r\n        }\r\n    }\n\n    function makeStyleMapper (properties, ignoreParent) {\r\n        for (var i = 0; i < properties.length; i++) {\r\n            if (!properties[i][1]) {\r\n                properties[i][1] = properties[i][0];\r\n            }\r\n        }\r\n        ignoreParent = ignoreParent || false;\r\n        return function (model, excludes, includes) {\r\n            var style = {};\r\n            for (var i = 0; i < properties.length; i++) {\r\n                var propName = properties[i][1];\r\n                if ((excludes && indexOf(excludes, propName) >= 0)\r\n                    || (includes && indexOf(includes, propName) < 0)) {\r\n                    continue;\r\n                }\r\n                var val = model.getShallow(propName, ignoreParent);\r\n                if (val != null) {\r\n                    style[properties[i][0]] = val;\r\n                }\r\n            }\r\n            return style;\r\n        };\r\n    }\n\n    var AREA_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['opacity'],\r\n        ['shadowColor']\r\n    ];\r\n    var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\n    var AreaStyleMixin = (function () {\r\n        function AreaStyleMixin() {\r\n        }\r\n        AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\r\n            return getAreaStyle(this, excludes, includes);\r\n        };\r\n        return AreaStyleMixin;\r\n    }());\n\n    var getECData = makeInner();\n\n    var _highlightNextDigit = 1;\r\n    var _highlightKeyMap = {};\r\n    var getSavedStates = makeInner();\r\n    var HOVER_STATE_NORMAL = 0;\r\n    var HOVER_STATE_BLUR = 1;\r\n    var HOVER_STATE_EMPHASIS = 2;\r\n    var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\n    var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\n    var Z2_EMPHASIS_LIFT = 10;\r\n    var Z2_SELECT_LIFT = 9;\r\n    var HIGHLIGHT_ACTION_TYPE = 'highlight';\r\n    var DOWNPLAY_ACTION_TYPE = 'downplay';\r\n    var SELECT_ACTION_TYPE = 'select';\r\n    var UNSELECT_ACTION_TYPE = 'unselect';\r\n    var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\n    function hasFillOrStroke(fillOrStroke) {\r\n        return fillOrStroke != null && fillOrStroke !== 'none';\r\n    }\r\n    var liftedColorCache = new LRU(100);\r\n    function liftColor(color) {\r\n        if (typeof color !== 'string') {\r\n            return color;\r\n        }\r\n        var liftedColor = liftedColorCache.get(color);\r\n        if (!liftedColor) {\r\n            liftedColor = lift(color, -0.1);\r\n            liftedColorCache.put(color, liftedColor);\r\n        }\r\n        return liftedColor;\r\n    }\r\n    function doChangeHoverState(el, stateName, hoverStateEnum) {\r\n        if (el.onHoverStateChange) {\r\n            if ((el.hoverState || 0) !== hoverStateEnum) {\r\n                el.onHoverStateChange(stateName);\r\n            }\r\n        }\r\n        el.hoverState = hoverStateEnum;\r\n    }\r\n    function singleEnterEmphasis(el) {\r\n        doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n    }\r\n    function singleLeaveEmphasis(el) {\r\n        doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n    }\r\n    function singleEnterBlur(el) {\r\n        doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n    }\r\n    function singleLeaveBlur(el) {\r\n        doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n    }\r\n    function singleEnterSelect(el) {\r\n        el.selected = true;\r\n    }\r\n    function singleLeaveSelect(el) {\r\n        el.selected = false;\r\n    }\r\n    function updateElementState(el, updater, commonParam) {\r\n        updater(el, commonParam);\r\n    }\r\n    function traverseUpdateState(el, updater, commonParam) {\r\n        updateElementState(el, updater, commonParam);\r\n        el.isGroup && el.traverse(function (child) {\r\n            updateElementState(child, updater, commonParam);\r\n        });\r\n    }\r\n    function setStatesFlag(el, stateName) {\r\n        switch (stateName) {\r\n            case 'emphasis':\r\n                el.hoverState = HOVER_STATE_EMPHASIS;\r\n                break;\r\n            case 'normal':\r\n                el.hoverState = HOVER_STATE_NORMAL;\r\n                break;\r\n            case 'blur':\r\n                el.hoverState = HOVER_STATE_BLUR;\r\n                break;\r\n            case 'select':\r\n                el.selected = true;\r\n        }\r\n    }\r\n    function getFromStateStyle(el, props, toStateName, defaultValue) {\r\n        var style = el.style;\r\n        var fromState = {};\r\n        for (var i = 0; i < props.length; i++) {\r\n            var propName = props[i];\r\n            var val = style[propName];\r\n            fromState[propName] = val == null ? (defaultValue && defaultValue[propName]) : val;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.__fromStateTransition\r\n                && animator.__fromStateTransition.indexOf(toStateName) < 0\r\n                && animator.targetName === 'style') {\r\n                animator.saveFinalToTarget(fromState, props);\r\n            }\r\n        }\r\n        return fromState;\r\n    }\r\n    function createEmphasisDefaultState(el, stateName, targetStates, state) {\r\n        var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\r\n        var cloned = false;\r\n        if (el instanceof Path) {\r\n            var store = getSavedStates(el);\r\n            var fromFill = hasSelect ? (store.selectFill || store.normalFill) : store.normalFill;\r\n            var fromStroke = hasSelect ? (store.selectStroke || store.normalStroke) : store.normalStroke;\r\n            if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\r\n                state = state || {};\r\n                var emphasisStyle = state.style || {};\r\n                if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\r\n                    cloned = true;\r\n                    state = extend({}, state);\r\n                    emphasisStyle = extend({}, emphasisStyle);\r\n                    emphasisStyle.fill = liftColor(fromFill);\r\n                }\r\n                else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\r\n                    if (!cloned) {\r\n                        state = extend({}, state);\r\n                        emphasisStyle = extend({}, emphasisStyle);\r\n                    }\r\n                    emphasisStyle.stroke = liftColor(fromStroke);\r\n                }\r\n                state.style = emphasisStyle;\r\n            }\r\n        }\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                if (!cloned) {\r\n                    state = extend({}, state);\r\n                }\r\n                var z2EmphasisLift = el.z2EmphasisLift;\r\n                state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createSelectDefaultState(el, stateName, state) {\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                state = extend({}, state);\r\n                var z2SelectLift = el.z2SelectLift;\r\n                state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createBlurDefaultState(el, stateName, state) {\r\n        var hasBlur = indexOf(el.currentStates, stateName) >= 0;\r\n        var currentOpacity = el.style.opacity;\r\n        var fromState = !hasBlur\r\n            ? getFromStateStyle(el, ['opacity'], stateName, {\r\n                opacity: 1\r\n            })\r\n            : null;\r\n        state = state || {};\r\n        var blurStyle = state.style || {};\r\n        if (blurStyle.opacity == null) {\r\n            state = extend({}, state);\r\n            blurStyle = extend({\r\n                opacity: hasBlur ? currentOpacity : (fromState.opacity * 0.1)\r\n            }, blurStyle);\r\n            state.style = blurStyle;\r\n        }\r\n        return state;\r\n    }\r\n    function elementStateProxy(stateName, targetStates) {\r\n        var state = this.states[stateName];\r\n        if (this.style) {\r\n            if (stateName === 'emphasis') {\r\n                return createEmphasisDefaultState(this, stateName, targetStates, state);\r\n            }\r\n            else if (stateName === 'blur') {\r\n                return createBlurDefaultState(this, stateName, state);\r\n            }\r\n            else if (stateName === 'select') {\r\n                return createSelectDefaultState(this, stateName, state);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function setDefaultStateProxy(el) {\r\n        el.stateProxy = elementStateProxy;\r\n        var textContent = el.getTextContent();\r\n        var textGuide = el.getTextGuideLine();\r\n        if (textContent) {\r\n            textContent.stateProxy = elementStateProxy;\r\n        }\r\n        if (textGuide) {\r\n            textGuide.stateProxy = elementStateProxy;\r\n        }\r\n    }\r\n    function enterEmphasisWhenMouseOver(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasisWhenMouseOut(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterEmphasis(el, highlightDigit) {\r\n        el.__highByOuter |= 1 << (highlightDigit || 0);\r\n        traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasis(el, highlightDigit) {\r\n        !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterBlur(el) {\r\n        traverseUpdateState(el, singleEnterBlur);\r\n    }\r\n    function leaveBlur(el) {\r\n        traverseUpdateState(el, singleLeaveBlur);\r\n    }\r\n    function enterSelect(el) {\r\n        traverseUpdateState(el, singleEnterSelect);\r\n    }\r\n    function leaveSelect(el) {\r\n        traverseUpdateState(el, singleLeaveSelect);\r\n    }\r\n    function shouldSilent(el, e) {\r\n        return el.__highDownSilentOnTouch && e.zrByTouch;\r\n    }\r\n    function allLeaveBlur(ecIns) {\r\n        var model = ecIns.getModel();\r\n        model.eachComponent(function (componentType, componentModel) {\r\n            var view = componentType === 'series'\r\n                ? ecIns.getViewOfSeriesModel(componentModel)\r\n                : ecIns.getViewOfComponentModel(componentModel);\r\n            view.group.traverse(function (child) {\r\n                singleLeaveBlur(child);\r\n            });\r\n        });\r\n    }\r\n    function toggleSeriesBlurState(targetSeriesIndex, focus, blurScope, ecIns, isBlur) {\r\n        var ecModel = ecIns.getModel();\r\n        blurScope = blurScope || 'coordinateSystem';\r\n        function leaveBlurOfIndices(data, dataIndices) {\r\n            for (var i = 0; i < dataIndices.length; i++) {\r\n                var itemEl = data.getItemGraphicEl(dataIndices[i]);\r\n                itemEl && leaveBlur(itemEl);\r\n            }\r\n        }\r\n        if (!isBlur) {\r\n            allLeaveBlur(ecIns);\r\n            return;\r\n        }\r\n        if (targetSeriesIndex == null) {\r\n            return;\r\n        }\r\n        if (!focus || focus === 'none') {\r\n            return;\r\n        }\r\n        var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\r\n        var targetCoordSys = targetSeriesModel.coordinateSystem;\r\n        if (targetCoordSys && targetCoordSys.master) {\r\n            targetCoordSys = targetCoordSys.master;\r\n        }\r\n        var blurredSeries = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var sameSeries = targetSeriesModel === seriesModel;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.master) {\r\n                coordSys = coordSys.master;\r\n            }\r\n            var sameCoordSys = coordSys && targetCoordSys\r\n                ? coordSys === targetCoordSys\r\n                : sameSeries;\r\n            if (!(blurScope === 'series' && !sameSeries\r\n                || blurScope === 'coordinateSystem' && !sameCoordSys\r\n                || focus === 'series' && sameSeries)) {\r\n                var view = ecIns.getViewOfSeriesModel(seriesModel);\r\n                view.group.traverse(function (child) {\r\n                    singleEnterBlur(child);\r\n                });\r\n                if (isArrayLike(focus)) {\r\n                    leaveBlurOfIndices(seriesModel.getData(), focus);\r\n                }\r\n                else if (isObject(focus)) {\r\n                    var dataTypes = keys(focus);\r\n                    for (var d = 0; d < dataTypes.length; d++) {\r\n                        leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\r\n                    }\r\n                }\r\n                blurredSeries.push(seriesModel);\r\n            }\r\n        });\r\n        ecModel.eachComponent(function (componentType, componentModel) {\r\n            if (componentType === 'series') {\r\n                return;\r\n            }\r\n            var view = ecIns.getViewOfComponentModel(componentModel);\r\n            if (view && view.blurSeries) {\r\n                view.blurSeries(blurredSeries, ecModel);\r\n            }\r\n        });\r\n    }\r\n    function toggleSeriesBlurStateFromPayload(seriesModel, payload, ecIns) {\r\n        if (!isHighDownPayload(payload)) {\r\n            return;\r\n        }\r\n        var isHighlight = payload.type === HIGHLIGHT_ACTION_TYPE;\r\n        var seriesIndex = seriesModel.seriesIndex;\r\n        var data = seriesModel.getData(payload.dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        if (!el) {\r\n            var count = data.count();\r\n            var current = 0;\r\n            while (!el && current < count) {\r\n                el = data.getItemGraphicEl(current++);\r\n            }\r\n        }\r\n        if (el) {\r\n            var ecData = getECData(el);\r\n            toggleSeriesBlurState(seriesIndex, ecData.focus, ecData.blurScope, ecIns, isHighlight);\r\n        }\r\n        else {\r\n            var focus_1 = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            if (focus_1 != null) {\r\n                toggleSeriesBlurState(seriesIndex, focus_1, blurScope, ecIns, isHighlight);\r\n            }\r\n        }\r\n    }\r\n    function toggleSelectionFromPayload(seriesModel, payload, ecIns) {\r\n        if (!(isSelectChangePayload(payload))) {\r\n            return;\r\n        }\r\n        var dataType = payload.dataType;\r\n        var data = seriesModel.getData(dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        if (!isArray(dataIndex)) {\r\n            dataIndex = [dataIndex];\r\n        }\r\n        seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect'\r\n            : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\r\n    }\r\n    function updateSeriesElementSelection(seriesModel) {\r\n        var allData = seriesModel.getAllData();\r\n        each(allData, function (_a) {\r\n            var data = _a.data, type = _a.type;\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\r\n            });\r\n        });\r\n    }\r\n    function getAllSelectedIndices(ecModel) {\r\n        var ret = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var allData = seriesModel.getAllData();\r\n            each(allData, function (_a) {\r\n                var data = _a.data, type = _a.type;\r\n                var dataIndices = seriesModel.getSelectedDataIndices();\r\n                if (dataIndices.length > 0) {\r\n                    var item = {\r\n                        dataIndex: dataIndices,\r\n                        seriesIndex: seriesModel.seriesIndex\r\n                    };\r\n                    if (type != null) {\r\n                        item.dataType = type;\r\n                    }\r\n                    ret.push(item);\r\n                }\r\n            });\r\n        });\r\n        return ret;\r\n    }\r\n    function enableHoverEmphasis(el, focus, blurScope) {\r\n        setAsHighDownDispatcher(el, true);\r\n        traverseUpdateState(el, setDefaultStateProxy);\r\n        enableHoverFocus(el, focus, blurScope);\r\n    }\r\n    function enableHoverFocus(el, focus, blurScope) {\r\n        if (focus != null) {\r\n            var ecData = getECData(el);\r\n            ecData.focus = focus;\r\n            ecData.blurScope = blurScope;\r\n        }\r\n    }\r\n    var OTHER_STATES = ['emphasis', 'blur', 'select'];\r\n    var styleGetterMap = {\r\n        itemStyle: 'getItemStyle',\r\n        lineStyle: 'getLineStyle',\r\n        areaStyle: 'getAreaStyle'\r\n    };\r\n    function setStatesStylesFromModel(el, itemModel, styleType, getterType) {\r\n        styleType = styleType || 'itemStyle';\r\n        for (var i = 0; i < OTHER_STATES.length; i++) {\r\n            var stateName = OTHER_STATES[i];\r\n            var model = itemModel.getModel([stateName, styleType]);\r\n            var state = el.ensureState(stateName);\r\n            state.style = model[getterType || styleGetterMap[styleType]]();\r\n        }\r\n    }\r\n    function setAsHighDownDispatcher(el, asDispatcher) {\r\n        var disable = asDispatcher === false;\r\n        var extendedEl = el;\r\n        if (el.highDownSilentOnTouch) {\r\n            extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\r\n        }\r\n        if (!disable || extendedEl.__highDownDispatcher) {\r\n            extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\r\n            extendedEl.__highDownDispatcher = !disable;\r\n        }\r\n    }\r\n    function isHighDownDispatcher(el) {\r\n        return !!(el && el.__highDownDispatcher);\r\n    }\r\n    function getHighlightDigit(highlightKey) {\r\n        var highlightDigit = _highlightKeyMap[highlightKey];\r\n        if (highlightDigit == null && _highlightNextDigit <= 32) {\r\n            highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\r\n        }\r\n        return highlightDigit;\r\n    }\r\n    function isSelectChangePayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === SELECT_ACTION_TYPE\r\n            || payloadType === UNSELECT_ACTION_TYPE\r\n            || payloadType === TOGGLE_SELECT_ACTION_TYPE;\r\n    }\r\n    function isHighDownPayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === HIGHLIGHT_ACTION_TYPE\r\n            || payloadType === DOWNPLAY_ACTION_TYPE;\r\n    }\r\n    function savePathStates(el) {\r\n        var store = getSavedStates(el);\r\n        store.normalFill = el.style.fill;\r\n        store.normalStroke = el.style.stroke;\r\n        var selectState = el.states.select || {};\r\n        store.selectFill = (selectState.style && selectState.style.fill) || null;\r\n        store.selectStroke = (selectState.style && selectState.style.stroke) || null;\r\n    }\n\n    var ECHARTS_PREFIX = '[ECharts] ';\r\n    var storedLogs = {};\r\n    var hasConsole = typeof console !== 'undefined'\r\n        && console.warn && console.log;\r\n    function warn(str) {\r\n        if (hasConsole) {\r\n            console.warn(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function deprecateLog(str) {\r\n        if (__DEV__) {\r\n            if (storedLogs[str]) {\r\n                return;\r\n            }\r\n            if (hasConsole) {\r\n                storedLogs[str] = true;\r\n                console.warn(ECHARTS_PREFIX + 'DEPRECATED: ' + str);\r\n            }\r\n        }\r\n    }\r\n    function deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n        if (__DEV__) {\r\n            deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n        }\r\n    }\r\n    function consoleLog() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (__DEV__) {\r\n            if (typeof console !== 'undefined' && console.log) {\r\n                console.log.apply(console, args);\r\n            }\r\n        }\r\n    }\r\n    function makePrintable() {\r\n        var hintInfo = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            hintInfo[_i] = arguments[_i];\r\n        }\r\n        var msg = '';\r\n        if (__DEV__) {\r\n            msg = map(hintInfo, function (arg) {\r\n                if (isString(arg)) {\r\n                    return arg;\r\n                }\r\n                else if (typeof JSON !== 'undefined' && JSON.stringify) {\r\n                    try {\r\n                        return JSON.stringify(arg, function (n, val) {\r\n                            return val === void 0 ? 'undefined'\r\n                                : val === Infinity ? 'Infinity'\r\n                                    : val === -Infinity ? '-Infinity'\r\n                                        : eqNaN(val) ? 'NaN'\r\n                                            : val instanceof Date ? 'Date(' + val.toISOString() + ')'\r\n                                                : isFunction(val) ? 'function () { ... }'\r\n                                                    : isRegExp(val) ? val + ''\r\n                                                        : val;\r\n                        });\r\n                    }\r\n                    catch (err) {\r\n                        return '?';\r\n                    }\r\n                }\r\n                else {\r\n                    return '?';\r\n                }\r\n            }).join(' ');\r\n        }\r\n        return msg;\r\n    }\n\n    var EMPTY_OBJ = {};\r\n    function getLabelText(opt, stateModels, overrideValue) {\r\n        var labelFetcher = opt.labelFetcher;\r\n        var labelDataIndex = opt.labelDataIndex;\r\n        var labelDimIndex = opt.labelDimIndex;\r\n        var normalModel = stateModels.normal;\r\n        var baseText;\r\n        if (labelFetcher) {\r\n            baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), overrideValue != null ? {\r\n                value: overrideValue\r\n            } : null);\r\n        }\r\n        if (baseText == null) {\r\n            baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\r\n        }\r\n        var statesText = {\r\n            normal: baseText\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var stateModel = stateModels[stateName];\r\n            statesText[stateName] = retrieve2(labelFetcher\r\n                ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter'))\r\n                : null, baseText);\r\n        }\r\n        return statesText;\r\n    }\r\n    function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var isSetOnText = targetEl instanceof ZRText;\r\n        var needsCreateText = false;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateModel = labelStatesModels[DISPLAY_STATES[i]];\r\n            if (stateModel && stateModel.getShallow('show')) {\r\n                needsCreateText = true;\r\n                break;\r\n            }\r\n        }\r\n        var textContent = isSetOnText ? targetEl : null;\r\n        if (needsCreateText) {\r\n            if (!isSetOnText) {\r\n                textContent = targetEl.getTextContent();\r\n                if (!textContent) {\r\n                    textContent = new ZRText();\r\n                    targetEl.setTextContent(textContent);\r\n                }\r\n                if (targetEl.stateProxy) {\r\n                    textContent.stateProxy = targetEl.stateProxy;\r\n                }\r\n            }\r\n            var labelStatesTexts = getLabelText(opt, labelStatesModels);\r\n            var normalModel = labelStatesModels.normal;\r\n            var showNormal = normalModel.getShallow('show');\r\n            var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\r\n            normalStyle.text = labelStatesTexts.normal;\r\n            if (!isSetOnText) {\r\n                targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\r\n            }\r\n            for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                var stateName = SPECIAL_STATES[i];\r\n                var stateModel = labelStatesModels[stateName];\r\n                if (stateModel) {\r\n                    var stateObj = textContent.ensureState(stateName);\r\n                    stateObj.ignore = !retrieve2(stateModel.getShallow('show'), showNormal);\r\n                    stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\r\n                    stateObj.style.text = labelStatesTexts[stateName];\r\n                    if (!isSetOnText) {\r\n                        var targetElEmphasisState = targetEl.ensureState(stateName);\r\n                        targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\r\n                    }\r\n                }\r\n            }\r\n            textContent.silent = !!normalModel.getShallow('silent');\r\n            if (textContent.style.x != null) {\r\n                normalStyle.x = textContent.style.x;\r\n            }\r\n            if (textContent.style.y != null) {\r\n                normalStyle.y = textContent.style.y;\r\n            }\r\n            textContent.ignore = !showNormal;\r\n            textContent.useStyle(normalStyle);\r\n            textContent.dirty();\r\n        }\r\n        else if (textContent) {\r\n            textContent.ignore = true;\r\n        }\r\n        targetEl.dirty();\r\n    }\r\n    function getLabelStatesModels(itemModel, labelName) {\r\n        labelName = (labelName || 'label');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelName]);\r\n        }\r\n        return statesModels;\r\n    }\r\n    function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {\r\n        var textStyle = {};\r\n        setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\r\n        specifiedTextStyle && extend(textStyle, specifiedTextStyle);\r\n        return textStyle;\r\n    }\r\n    function createTextConfig(textStyleModel, opt, isNotNormal) {\r\n        opt = opt || {};\r\n        var textConfig = {};\r\n        var labelPosition;\r\n        var labelRotate = textStyleModel.getShallow('rotate');\r\n        var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\r\n        var labelOffset = textStyleModel.getShallow('offset');\r\n        labelPosition = textStyleModel.getShallow('position')\r\n            || (isNotNormal ? null : 'inside');\r\n        labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\r\n        if (labelPosition != null) {\r\n            textConfig.position = labelPosition;\r\n        }\r\n        if (labelOffset != null) {\r\n            textConfig.offset = labelOffset;\r\n        }\r\n        if (labelRotate != null) {\r\n            labelRotate *= Math.PI / 180;\r\n            textConfig.rotation = labelRotate;\r\n        }\r\n        if (labelDistance != null) {\r\n            textConfig.distance = labelDistance;\r\n        }\r\n        textConfig.outsideFill = textStyleModel.get('color') === 'inherit'\r\n            ? (opt.inheritColor || null)\r\n            : 'auto';\r\n        return textConfig;\r\n    }\r\n    function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var ecModel = textStyleModel.ecModel;\r\n        var globalTextStyle = ecModel && ecModel.option.textStyle;\r\n        var richItemNames = getRichItemNames(textStyleModel);\r\n        var richResult;\r\n        if (richItemNames) {\r\n            richResult = {};\r\n            for (var name_1 in richItemNames) {\r\n                if (richItemNames.hasOwnProperty(name_1)) {\r\n                    var richTextStyle = textStyleModel.getModel(['rich', name_1]);\r\n                    setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached);\r\n                }\r\n            }\r\n        }\r\n        if (richResult) {\r\n            textStyle.rich = richResult;\r\n        }\r\n        var overflow = textStyleModel.get('overflow');\r\n        if (overflow) {\r\n            textStyle.overflow = overflow;\r\n        }\r\n        var margin = textStyleModel.get('minMargin');\r\n        if (margin != null) {\r\n            textStyle.margin = margin;\r\n        }\r\n        setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true);\r\n    }\r\n    function getRichItemNames(textStyleModel) {\r\n        var richItemNameMap;\r\n        while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\r\n            var rich = (textStyleModel.option || EMPTY_OBJ).rich;\r\n            if (rich) {\r\n                richItemNameMap = richItemNameMap || {};\r\n                var richKeys = keys(rich);\r\n                for (var i = 0; i < richKeys.length; i++) {\r\n                    var richKey = richKeys[i];\r\n                    richItemNameMap[richKey] = 1;\r\n                }\r\n            }\r\n            textStyleModel = textStyleModel.parentModel;\r\n        }\r\n        return richItemNameMap;\r\n    }\r\n    var TEXT_PROPS_WITH_GLOBAL = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'opacity',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n    ];\r\n    var TEXT_PROPS_SELF = [\r\n        'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n    ];\r\n    var TEXT_PROPS_BOX = [\r\n        'padding', 'borderWidth', 'borderRadius',\r\n        'backgroundColor', 'borderColor',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n    ];\r\n    function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock) {\r\n        globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\r\n        var inheritColor = opt && opt.inheritColor;\r\n        var fillColor = textStyleModel.getShallow('color');\r\n        var strokeColor = textStyleModel.getShallow('textBorderColor');\r\n        if (fillColor === 'inherit' || fillColor === 'auto') {\r\n            if (__DEV__) {\r\n                if (fillColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                fillColor = inheritColor;\r\n            }\r\n            else {\r\n                fillColor = null;\r\n            }\r\n        }\r\n        if (strokeColor === 'inherit' || (strokeColor === 'auto')) {\r\n            if (__DEV__) {\r\n                if (strokeColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                strokeColor = inheritColor;\r\n            }\r\n            else {\r\n                strokeColor = null;\r\n            }\r\n        }\r\n        if (!isAttached) {\r\n            fillColor = fillColor || globalTextStyle.color;\r\n            strokeColor = strokeColor || globalTextStyle.textBorderColor;\r\n        }\r\n        if (fillColor != null) {\r\n            textStyle.fill = fillColor;\r\n        }\r\n        if (strokeColor != null) {\r\n            textStyle.stroke = strokeColor;\r\n        }\r\n        var lineWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\r\n        if (lineWidth != null) {\r\n            textStyle.lineWidth = lineWidth;\r\n        }\r\n        if (!isNotNormal && !isAttached) {\r\n            if (textStyle.fill == null && opt.inheritColor) {\r\n                textStyle.fill = opt.inheritColor;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\r\n            var key = TEXT_PROPS_WITH_GLOBAL[i];\r\n            var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\r\n            var key = TEXT_PROPS_SELF[i];\r\n            var val = textStyleModel.getShallow(key);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        if (textStyle.verticalAlign == null) {\r\n            var baseline = textStyleModel.getShallow('baseline');\r\n            if (baseline != null) {\r\n                textStyle.verticalAlign = baseline;\r\n            }\r\n        }\r\n        if (!isBlock || !opt.disableBox) {\r\n            for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\r\n                var key = TEXT_PROPS_BOX[i];\r\n                var val = textStyleModel.getShallow(key);\r\n                if (val != null) {\r\n                    textStyle[key] = val;\r\n                }\r\n            }\r\n            if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.backgroundColor === 'auto') {\r\n                        deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.backgroundColor = inheritColor;\r\n            }\r\n            if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.borderColor === 'auto') {\r\n                        deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.borderColor = inheritColor;\r\n            }\r\n        }\r\n    }\r\n    function getFont(opt, ecModel) {\r\n        var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\r\n        return trim([\r\n            opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',\r\n            opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '',\r\n            (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px',\r\n            opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'\r\n        ].join(' '));\r\n    }\n\n    var PATH_COLOR = ['textStyle', 'color'];\r\n    var tmpRichText = new ZRText();\r\n    var TextStyleMixin = (function () {\r\n        function TextStyleMixin() {\r\n        }\r\n        TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\r\n            var ecModel = this.ecModel;\r\n            return this.getShallow('color')\r\n                || ((!isEmphasis && ecModel) ? ecModel.get(PATH_COLOR) : null);\r\n        };\r\n        TextStyleMixin.prototype.getFont = function () {\r\n            return getFont({\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily')\r\n            }, this.ecModel);\r\n        };\r\n        TextStyleMixin.prototype.getTextRect = function (text) {\r\n            tmpRichText.useStyle({\r\n                text: text,\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily'),\r\n                verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline'),\r\n                padding: this.getShallow('padding'),\r\n                lineHeight: this.getShallow('lineHeight'),\r\n                rich: this.getShallow('rich')\r\n            });\r\n            tmpRichText.update();\r\n            return tmpRichText.getBoundingRect();\r\n        };\r\n        return TextStyleMixin;\r\n    }());\n\n    var LINE_STYLE_KEY_MAP = [\r\n        ['lineWidth', 'width'],\r\n        ['stroke', 'color'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor']\r\n    ];\r\n    var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\n    var LineStyleMixin = (function () {\r\n        function LineStyleMixin() {\r\n        }\r\n        LineStyleMixin.prototype.getLineStyle = function (excludes) {\r\n            var style = getLineStyle(this, excludes);\r\n            style.lineDash = this.getLineDash(style.lineWidth);\r\n            return style;\r\n        };\r\n        LineStyleMixin.prototype.getLineDash = function (lineWidth) {\r\n            if (lineWidth == null) {\r\n                lineWidth = 1;\r\n            }\r\n            var lineType = this.get('type');\r\n            var dotSize = Math.max(lineWidth, 2);\r\n            var dashSize = lineWidth * 4;\r\n            return (lineType === 'solid' || lineType == null)\r\n                ? false\r\n                : lineType === 'dashed'\r\n                    ? [dashSize, dashSize]\r\n                    : [dotSize, dotSize];\r\n        };\r\n        return LineStyleMixin;\r\n    }());\n\n    var ITEM_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['stroke', 'borderColor'],\r\n        ['lineWidth', 'borderWidth'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor']\r\n    ];\r\n    var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\n    var ItemStyleMixin = (function () {\r\n        function ItemStyleMixin() {\r\n        }\r\n        ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\r\n            var style = getItemStyle(this, excludes, includes);\r\n            var lineDash = this.getBorderLineDash();\r\n            lineDash && (style.lineDash = lineDash);\r\n            return style;\r\n        };\r\n        ItemStyleMixin.prototype.getBorderLineDash = function () {\r\n            var lineType = this.get('borderType');\r\n            return (lineType === 'solid' || lineType == null) ? null\r\n                : (lineType === 'dashed' ? [5, 5] : [1, 1]);\r\n        };\r\n        return ItemStyleMixin;\r\n    }());\n\n    var Model = (function () {\r\n        function Model(option, parentModel, ecModel) {\r\n            this.parentModel = parentModel;\r\n            this.ecModel = ecModel;\r\n            this.option = option;\r\n        }\r\n        Model.prototype.init = function (option, parentModel, ecModel) {\r\n            var rest = [];\r\n            for (var _i = 3; _i < arguments.length; _i++) {\r\n                rest[_i - 3] = arguments[_i];\r\n            }\r\n        };\r\n        Model.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n        };\r\n        Model.prototype.get = function (path, ignoreParent) {\r\n            if (path == null) {\r\n                return this.option;\r\n            }\r\n            return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\r\n        };\r\n        Model.prototype.getShallow = function (key, ignoreParent) {\r\n            var option = this.option;\r\n            var val = option == null ? option : option[key];\r\n            if (val == null && !ignoreParent) {\r\n                var parentModel = this.parentModel;\r\n                if (parentModel) {\r\n                    val = parentModel.getShallow(key);\r\n                }\r\n            }\r\n            return val;\r\n        };\r\n        Model.prototype.getModel = function (path, parentModel) {\r\n            var hasPath = path != null;\r\n            var pathFinal = hasPath ? this.parsePath(path) : null;\r\n            var obj = hasPath\r\n                ? this._doGet(pathFinal)\r\n                : this.option;\r\n            parentModel = parentModel || (this.parentModel\r\n                && this.parentModel.getModel(this.resolveParentPath(pathFinal)));\r\n            return new Model(obj, parentModel, this.ecModel);\r\n        };\r\n        Model.prototype.isEmpty = function () {\r\n            return this.option == null;\r\n        };\r\n        Model.prototype.restoreData = function () { };\r\n        Model.prototype.clone = function () {\r\n            var Ctor = this.constructor;\r\n            return new Ctor(clone(this.option));\r\n        };\r\n        Model.prototype.parsePath = function (path) {\r\n            if (typeof path === 'string') {\r\n                return path.split('.');\r\n            }\r\n            return path;\r\n        };\r\n        Model.prototype.resolveParentPath = function (path) {\r\n            return path;\r\n        };\r\n        Model.prototype.isAnimationEnabled = function () {\r\n            if (!env.node && this.option) {\r\n                if (this.option.animation != null) {\r\n                    return !!this.option.animation;\r\n                }\r\n                else if (this.parentModel) {\r\n                    return this.parentModel.isAnimationEnabled();\r\n                }\r\n            }\r\n        };\r\n        Model.prototype._doGet = function (pathArr, parentModel) {\r\n            var obj = this.option;\r\n            if (!pathArr) {\r\n                return obj;\r\n            }\r\n            for (var i = 0; i < pathArr.length; i++) {\r\n                if (!pathArr[i]) {\r\n                    continue;\r\n                }\r\n                obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null;\r\n                if (obj == null) {\r\n                    break;\r\n                }\r\n            }\r\n            if (obj == null && parentModel) {\r\n                obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\r\n            }\r\n            return obj;\r\n        };\r\n        return Model;\r\n    }());\r\n    enableClassExtend(Model);\r\n    enableClassCheck(Model);\r\n    mixin(Model, LineStyleMixin);\r\n    mixin(Model, ItemStyleMixin);\r\n    mixin(Model, AreaStyleMixin);\r\n    mixin(Model, TextStyleMixin);\n\n    var base = Math.round(Math.random() * 10);\r\n    function getUID(type) {\r\n        return [(type || ''), base++].join('_');\r\n    }\r\n    function enableSubTypeDefaulter(target) {\r\n        var subTypeDefaulters = {};\r\n        target.registerSubTypeDefaulter = function (componentType, defaulter) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            subTypeDefaulters[componentTypeInfo.main] = defaulter;\r\n        };\r\n        target.determineSubType = function (componentType, option) {\r\n            var type = option.type;\r\n            if (!type) {\r\n                var componentTypeMain = parseClassType(componentType).main;\r\n                if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\r\n                    type = subTypeDefaulters[componentTypeMain](option);\r\n                }\r\n            }\r\n            return type;\r\n        };\r\n    }\r\n    function enableTopologicalTravel(entity, dependencyGetter) {\r\n        entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\r\n            if (!targetNameList.length) {\r\n                return;\r\n            }\r\n            var result = makeDepndencyGraph(fullNameList);\r\n            var graph = result.graph;\r\n            var stack = result.noEntryList;\r\n            var targetNameSet = {};\r\n            each(targetNameList, function (name) {\r\n                targetNameSet[name] = true;\r\n            });\r\n            while (stack.length) {\r\n                var currComponentType = stack.pop();\r\n                var currVertex = graph[currComponentType];\r\n                var isInTargetNameSet = !!targetNameSet[currComponentType];\r\n                if (isInTargetNameSet) {\r\n                    callback.call(context, currComponentType, currVertex.originalDeps.slice());\r\n                    delete targetNameSet[currComponentType];\r\n                }\r\n                each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\r\n            }\r\n            each(targetNameSet, function () {\r\n                throw new Error('Circle dependency may exists');\r\n            });\r\n            function removeEdge(succComponentType) {\r\n                graph[succComponentType].entryCount--;\r\n                if (graph[succComponentType].entryCount === 0) {\r\n                    stack.push(succComponentType);\r\n                }\r\n            }\r\n            function removeEdgeAndAdd(succComponentType) {\r\n                targetNameSet[succComponentType] = true;\r\n                removeEdge(succComponentType);\r\n            }\r\n        };\r\n        function makeDepndencyGraph(fullNameList) {\r\n            var graph = {};\r\n            var noEntryList = [];\r\n            each(fullNameList, function (name) {\r\n                var thisItem = createDependencyGraphItem(graph, name);\r\n                var originalDeps = thisItem.originalDeps = dependencyGetter(name);\r\n                var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\r\n                thisItem.entryCount = availableDeps.length;\r\n                if (thisItem.entryCount === 0) {\r\n                    noEntryList.push(name);\r\n                }\r\n                each(availableDeps, function (dependentName) {\r\n                    if (indexOf(thisItem.predecessor, dependentName) < 0) {\r\n                        thisItem.predecessor.push(dependentName);\r\n                    }\r\n                    var thatItem = createDependencyGraphItem(graph, dependentName);\r\n                    if (indexOf(thatItem.successor, dependentName) < 0) {\r\n                        thatItem.successor.push(name);\r\n                    }\r\n                });\r\n            });\r\n            return { graph: graph, noEntryList: noEntryList };\r\n        }\r\n        function createDependencyGraphItem(graph, name) {\r\n            if (!graph[name]) {\r\n                graph[name] = { predecessor: [], successor: [] };\r\n            }\r\n            return graph[name];\r\n        }\r\n        function getAvailableDependencies(originalDeps, fullNameList) {\r\n            var availableDeps = [];\r\n            each(originalDeps, function (dep) {\r\n                indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\r\n            });\r\n            return availableDeps;\r\n        }\r\n    }\r\n    function inheritDefaultOption(superOption, subOption) {\r\n        return merge(merge({}, superOption, true), subOption, true);\r\n    }\n\n    var langEN = {\r\n        time: {\r\n            month: [\r\n                'January', 'February', 'March', 'April', 'May', 'June',\r\n                'July', 'August', 'September', 'October', 'November', 'December'\r\n            ],\r\n            monthAbbr: [\r\n                'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\r\n                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\r\n            ],\r\n            dayOfWeek: [\r\n                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: 'All',\r\n                inverse: 'Inv'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: 'Box Select',\r\n                    polygon: 'Lasso Select',\r\n                    lineX: 'Horizontally Select',\r\n                    lineY: 'Vertically Select',\r\n                    keep: 'Keep Selections',\r\n                    clear: 'Clear Selections'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: 'Data View',\r\n                lang: ['Data View', 'Close', 'Refresh']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: 'Zoom',\r\n                    back: 'Zoom Reset'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: 'Switch to Line Chart',\r\n                    bar: 'Switch to Bar Chart',\r\n                    stack: 'Stack',\r\n                    tiled: 'Tile'\r\n                }\r\n            },\r\n            restore: {\r\n                title: 'Restore'\r\n            },\r\n            saveAsImage: {\r\n                title: 'Save as Image',\r\n                lang: ['Right Click to Save Image']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: 'Pie chart',\r\n                bar: 'Bar chart',\r\n                line: 'Line chart',\r\n                scatter: 'Scatter plot',\r\n                effectScatter: 'Ripple scatter plot',\r\n                radar: 'Radar chart',\r\n                tree: 'Tree',\r\n                treemap: 'Treemap',\r\n                boxplot: 'Boxplot',\r\n                candlestick: 'Candlestick',\r\n                k: 'K line chart',\r\n                heatmap: 'Heat map',\r\n                map: 'Map',\r\n                parallel: 'Parallel coordinate map',\r\n                lines: 'Line graph',\r\n                graph: 'Relationship graph',\r\n                sankey: 'Sankey diagram',\r\n                funnel: 'Funnel chart',\r\n                gauge: 'Guage',\r\n                pictorialBar: 'Pictorial bar',\r\n                themeRiver: 'Theme River Map',\r\n                sunburst: 'Sunburst'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: 'This is a chart about \"{title}\"',\r\n                withoutTitle: 'This is a chart'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: ' with type {seriesType} named {seriesName}.',\r\n                    withoutName: ' with type {seriesType}.'\r\n                },\r\n                multiple: {\r\n                    prefix: '. It consists of {seriesCount} series count.',\r\n                    withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\r\n                    withoutName: ' The {seriesId} series is a {seriesType}.',\r\n                    separator: {\r\n                        middle: '',\r\n                        end: ''\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: 'The data is as follows: ',\r\n                partialData: 'The first {displayCnt} items are: ',\r\n                withName: 'the data for {name} is {value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: ', ',\r\n                    end: '. '\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var langZH = {\r\n        time: {\r\n            month: [\r\n                '一月', '二月', '三月', '四月', '五月', '六月',\r\n                '七月', '八月', '九月', '十月', '十一月', '十二月'\r\n            ],\r\n            monthAbbr: [\r\n                '1月', '2月', '3月', '4月', '5月', '6月',\r\n                '7月', '8月', '9月', '10月', '11月', '12月'\r\n            ],\r\n            dayOfWeek: [\r\n                '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                '日', '一', '二', '三', '四', '五', '六'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: '全选',\r\n                inverse: '反选'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: '矩形选择',\r\n                    polygon: '圈选',\r\n                    lineX: '横向选择',\r\n                    lineY: '纵向选择',\r\n                    keep: '保持选择',\r\n                    clear: '清除选择'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: '数据视图',\r\n                lang: ['数据视图', '关闭', '刷新']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: '区域缩放',\r\n                    back: '区域缩放还原'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: '切换为折线图',\r\n                    bar: '切换为柱状图',\r\n                    stack: '切换为堆叠',\r\n                    tiled: '切换为平铺'\r\n                }\r\n            },\r\n            restore: {\r\n                title: '还原'\r\n            },\r\n            saveAsImage: {\r\n                title: '保存为图片',\r\n                lang: ['右键另存为图片']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: '饼图',\r\n                bar: '柱状图',\r\n                line: '折线图',\r\n                scatter: '散点图',\r\n                effectScatter: '涟漪散点图',\r\n                radar: '雷达图',\r\n                tree: '树图',\r\n                treemap: '矩形树图',\r\n                boxplot: '箱型图',\r\n                candlestick: 'K线图',\r\n                k: 'K线图',\r\n                heatmap: '热力图',\r\n                map: '地图',\r\n                parallel: '平行坐标图',\r\n                lines: '线图',\r\n                graph: '关系图',\r\n                sankey: '桑基图',\r\n                funnel: '漏斗图',\r\n                gauge: '仪表盘图',\r\n                pictorialBar: '象形柱图',\r\n                themeRiver: '主题河流图',\r\n                sunburst: '旭日图'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: '这是一个关于“{title}”的图表。',\r\n                withoutTitle: '这是一个图表,'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: '图表类型是{seriesType},表示{seriesName}。',\r\n                    withoutName: '图表类型是{seriesType}。'\r\n                },\r\n                multiple: {\r\n                    prefix: '它由{seriesCount}个图表系列组成。',\r\n                    withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\r\n                    withoutName: '第{seriesId}个系列是一个{seriesType},',\r\n                    separator: {\r\n                        middle: ';',\r\n                        end: '。'\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: '其数据是——',\r\n                partialData: '其中,前{displayCnt}项是——',\r\n                withName: '{name}的数据是{value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: ',',\r\n                    end: ''\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var LOCALE_ZH = 'ZH';\r\n    var LOCALE_EN = 'EN';\r\n    var DEFAULT_LOCALE = LOCALE_EN;\r\n    var localeStorage = {};\r\n    var localeModels = {};\r\n    var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : (function () {\r\n        var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\r\n        return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\r\n    })();\r\n    function registerLocale(locale, localeObj) {\r\n        locale = locale.toUpperCase();\r\n        localeModels[locale] = new Model(localeObj);\r\n        localeStorage[locale] = localeObj;\r\n    }\r\n    function createLocaleObject(locale) {\r\n        if (isString(locale)) {\r\n            var localeObj = localeStorage[locale.toUpperCase()] || {};\r\n            if (locale === LOCALE_ZH || locale === LOCALE_EN) {\r\n                return clone(localeObj);\r\n            }\r\n            else {\r\n                return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n            }\r\n        }\r\n        else {\r\n            return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n        }\r\n    }\r\n    function getLocaleModel(lang) {\r\n        return localeModels[lang];\r\n    }\r\n    function getDefaultLocaleModel() {\r\n        return localeModels[DEFAULT_LOCALE];\r\n    }\r\n    registerLocale(LOCALE_EN, langEN);\r\n    registerLocale(LOCALE_ZH, langZH);\n\n    var ONE_SECOND = 1000;\r\n    var ONE_MINUTE = ONE_SECOND * 60;\r\n    var ONE_HOUR = ONE_MINUTE * 60;\r\n    var ONE_DAY = ONE_HOUR * 24;\r\n    var ONE_YEAR = ONE_DAY * 365;\r\n    var defaultLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{MMM}',\r\n        day: '{d}',\r\n        hour: '{HH}:{mm}',\r\n        minute: '{HH}:{mm}',\r\n        second: '{HH}:{mm}:{ss}',\r\n        millisecond: '{hh}:{mm}:{ss} {SSS}',\r\n        none: '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}'\r\n    };\r\n    var fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\n    var fullLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{yyyy}:{MM}',\r\n        day: fullDayFormatter,\r\n        hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\r\n        minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\r\n        second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\r\n        millisecond: defaultLeveledFormatter.none\r\n    };\r\n    var primaryTimeUnits = [\r\n        'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    var timeUnits = [\r\n        'year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day',\r\n        'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    function pad(str, len) {\r\n        str += '';\r\n        return '0000'.substr(0, len - str.length) + str;\r\n    }\r\n    function getPrimaryTimeUnit(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'half-year':\r\n            case 'quarter':\r\n                return 'month';\r\n            case 'week':\r\n            case 'half-week':\r\n                return 'day';\r\n            case 'half-day':\r\n            case 'quarter-day':\r\n                return 'hour';\r\n            default:\r\n                return timeUnit;\r\n        }\r\n    }\r\n    function isPrimaryTimeUnit(timeUnit) {\r\n        return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n    }\r\n    function getDefaultFormatPrecisionOfInterval(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'year':\r\n            case 'month':\r\n                return 'day';\r\n            case 'millisecond':\r\n                return 'millisecond';\r\n            default:\r\n                return 'second';\r\n        }\r\n    }\r\n    function format(time, template, lang, isUTC) {\r\n        var date = parseDate(time);\r\n        var y = date[fullYearGetterName(isUTC)]();\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var q = Math.floor((M - 1) / 4) + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\r\n        var H = date[hoursGetterName(isUTC)]();\r\n        var h = (H - 1) % 12 + 1;\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var localeModel = lang instanceof Model ? lang\r\n            : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\r\n        var timeModel = localeModel.getModel('time');\r\n        var month = timeModel.get('month');\r\n        var monthAbbr = timeModel.get('monthAbbr');\r\n        var dayOfWeek = timeModel.get('dayOfWeek');\r\n        var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\r\n        return (template || '')\r\n            .replace(/{yyyy}/g, y + '')\r\n            .replace(/{yy}/g, y % 100 + '')\r\n            .replace(/{Q}/g, q + '')\r\n            .replace(/{MMMM}/g, month[M - 1])\r\n            .replace(/{MMM}/g, monthAbbr[M - 1])\r\n            .replace(/{MM}/g, pad(M, 2))\r\n            .replace(/{M}/g, M + '')\r\n            .replace(/{dd}/g, pad(d, 2))\r\n            .replace(/{d}/g, d + '')\r\n            .replace(/{eeee}/g, dayOfWeek[e])\r\n            .replace(/{ee}/g, dayOfWeekAbbr[e])\r\n            .replace(/{e}/g, e + '')\r\n            .replace(/{HH}/g, pad(H, 2))\r\n            .replace(/{H}/g, H + '')\r\n            .replace(/{hh}/g, pad(h + '', 2))\r\n            .replace(/{h}/g, h + '')\r\n            .replace(/{mm}/g, pad(m, 2))\r\n            .replace(/{m}/g, m + '')\r\n            .replace(/{ss}/g, pad(s, 2))\r\n            .replace(/{s}/g, s + '')\r\n            .replace(/{SSS}/g, pad(S, 3))\r\n            .replace(/{S}/g, S + '');\r\n    }\r\n    function leveledFormat(tick, idx, formatter, lang, isUTC) {\r\n        var template = null;\r\n        if (typeof formatter === 'string') {\r\n            template = formatter;\r\n        }\r\n        else if (typeof formatter === 'function') {\r\n            template = formatter(tick.value, idx, {\r\n                level: tick.level\r\n            });\r\n        }\r\n        else {\r\n            var defaults$1 = extend({}, defaultLeveledFormatter);\r\n            if (tick.level > 0) {\r\n                for (var i = 0; i < primaryTimeUnits.length; ++i) {\r\n                    defaults$1[primaryTimeUnits[i]] = \"{primary|\" + defaults$1[primaryTimeUnits[i]] + \"}\";\r\n                }\r\n            }\r\n            var mergedFormatter = (formatter\r\n                ? (formatter.inherit === false\r\n                    ? formatter\r\n                    : defaults(formatter, defaults$1))\r\n                : defaults$1);\r\n            var unit = getUnitFromValue(tick.value, isUTC);\r\n            if (mergedFormatter[unit]) {\r\n                template = mergedFormatter[unit];\r\n            }\r\n            else if (mergedFormatter.inherit) {\r\n                var targetId = timeUnits.indexOf(unit);\r\n                for (var i = targetId - 1; i >= 0; --i) {\r\n                    if (mergedFormatter[unit]) {\r\n                        template = mergedFormatter[unit];\r\n                        break;\r\n                    }\r\n                }\r\n                template = template || defaults$1.none;\r\n            }\r\n            if (isArray(template)) {\r\n                var levelId = tick.level == null\r\n                    ? 0\r\n                    : (tick.level >= 0 ? tick.level : template.length + tick.level);\r\n                levelId = Math.min(levelId, template.length - 1);\r\n                template = template[levelId];\r\n            }\r\n        }\r\n        return format(new Date(tick.value), template, lang, isUTC);\r\n    }\r\n    function getUnitFromValue(value, isUTC) {\r\n        var date = parseDate(value);\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var h = date[hoursGetterName(isUTC)]();\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var isSecond = S === 0;\r\n        var isMinute = isSecond && s === 0;\r\n        var isHour = isMinute && m === 0;\r\n        var isDay = isHour && h === 0;\r\n        var isMonth = isDay && d === 1;\r\n        var isYear = isMonth && M === 1;\r\n        if (isYear) {\r\n            return 'year';\r\n        }\r\n        else if (isMonth) {\r\n            return 'month';\r\n        }\r\n        else if (isDay) {\r\n            return 'day';\r\n        }\r\n        else if (isHour) {\r\n            return 'hour';\r\n        }\r\n        else if (isMinute) {\r\n            return 'minute';\r\n        }\r\n        else if (isSecond) {\r\n            return 'second';\r\n        }\r\n        else {\r\n            return 'millisecond';\r\n        }\r\n    }\r\n    function getUnitValue(value, unit, isUTC) {\r\n        var date = typeof value === 'number'\r\n            ? parseDate(value)\r\n            : value;\r\n        unit = unit || getUnitFromValue(value, isUTC);\r\n        switch (unit) {\r\n            case 'year':\r\n                return date[fullYearGetterName(isUTC)]();\r\n            case 'half-year':\r\n                return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\r\n            case 'quarter':\r\n                return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\r\n            case 'month':\r\n                return date[monthGetterName(isUTC)]();\r\n            case 'day':\r\n                return date[dateGetterName(isUTC)]();\r\n            case 'half-day':\r\n                return date[hoursGetterName(isUTC)]() / 24;\r\n            case 'hour':\r\n                return date[hoursGetterName(isUTC)]();\r\n            case 'minute':\r\n                return date[minutesGetterName(isUTC)]();\r\n            case 'second':\r\n                return date[secondsGetterName(isUTC)]();\r\n            case 'millisecond':\r\n                return date[millisecondsGetterName(isUTC)]();\r\n        }\r\n    }\r\n    function fullYearGetterName(isUTC) {\r\n        return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n    }\r\n    function monthGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMonth' : 'getMonth';\r\n    }\r\n    function dateGetterName(isUTC) {\r\n        return isUTC ? 'getUTCDate' : 'getDate';\r\n    }\r\n    function hoursGetterName(isUTC) {\r\n        return isUTC ? 'getUTCHours' : 'getHours';\r\n    }\r\n    function minutesGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n    }\r\n    function secondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function millisecondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function fullYearSetterName(isUTC) {\r\n        return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n    }\r\n    function monthSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMonth' : 'setMonth';\r\n    }\r\n    function dateSetterName(isUTC) {\r\n        return isUTC ? 'setUTCDate' : 'setDate';\r\n    }\r\n    function hoursSetterName(isUTC) {\r\n        return isUTC ? 'setUTCHours' : 'setHours';\r\n    }\r\n    function minutesSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n    }\r\n    function secondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\r\n    function millisecondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\n\n    var innerLabel = makeInner();\r\n    function makePath(pathData, opts, rect, layout) {\r\n        var path = createFromString(pathData, opts);\r\n        if (rect) {\r\n            if (layout === 'center') {\r\n                rect = centerGraphic(rect, path.getBoundingRect());\r\n            }\r\n            resizePath(path, rect);\r\n        }\r\n        return path;\r\n    }\r\n    function makeImage(imageUrl, rect, layout) {\r\n        var zrImg = new ZRImage({\r\n            style: {\r\n                image: imageUrl,\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            onload: function (img) {\r\n                if (layout === 'center') {\r\n                    var boundingRect = {\r\n                        width: img.width,\r\n                        height: img.height\r\n                    };\r\n                    zrImg.setStyle(centerGraphic(rect, boundingRect));\r\n                }\r\n            }\r\n        });\r\n        return zrImg;\r\n    }\r\n    function centerGraphic(rect, boundingRect) {\r\n        var aspect = boundingRect.width / boundingRect.height;\r\n        var width = rect.height * aspect;\r\n        var height;\r\n        if (width <= rect.width) {\r\n            height = rect.height;\r\n        }\r\n        else {\r\n            width = rect.width;\r\n            height = width / aspect;\r\n        }\r\n        var cx = rect.x + rect.width / 2;\r\n        var cy = rect.y + rect.height / 2;\r\n        return {\r\n            x: cx - width / 2,\r\n            y: cy - height / 2,\r\n            width: width,\r\n            height: height\r\n        };\r\n    }\r\n    function resizePath(path, rect) {\r\n        if (!path.applyTransform) {\r\n            return;\r\n        }\r\n        var pathRect = path.getBoundingRect();\r\n        var m = pathRect.calculateTransform(rect);\r\n        path.applyTransform(m);\r\n    }\r\n    function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\r\n        var isFrom = false;\r\n        if (typeof dataIndex === 'function') {\r\n            during = cb;\r\n            cb = dataIndex;\r\n            dataIndex = null;\r\n        }\r\n        else if (isObject(dataIndex)) {\r\n            cb = dataIndex.cb;\r\n            during = dataIndex.during;\r\n            isFrom = dataIndex.isFrom;\r\n            dataIndex = dataIndex.dataIndex;\r\n        }\r\n        var isUpdate = animationType === 'update';\r\n        var isRemove = animationType === 'remove';\r\n        var animationPayload;\r\n        if (animatableModel && animatableModel.ecModel) {\r\n            var updatePayload = animatableModel.ecModel.getUpdatePayload();\r\n            animationPayload = (updatePayload && updatePayload.animation);\r\n        }\r\n        var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\r\n        if (animationEnabled) {\r\n            var duration = void 0;\r\n            var animationEasing = void 0;\r\n            var animationDelay = void 0;\r\n            if (animationPayload) {\r\n                duration = animationPayload.duration || 0;\r\n                animationEasing = animationPayload.easing || 'cubicOut';\r\n                animationDelay = animationPayload.delay || 0;\r\n            }\r\n            else if (isRemove) {\r\n                duration = 200;\r\n                animationEasing = 'cubicOut';\r\n                animationDelay = 0;\r\n            }\r\n            else {\r\n                duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\r\n                animationEasing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\r\n                animationDelay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\r\n                if (typeof animationDelay === 'function') {\r\n                    animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams\r\n                        ? animatableModel.getAnimationDelayParams(el, dataIndex)\r\n                        : null);\r\n                }\r\n                if (typeof duration === 'function') {\r\n                    duration = duration(dataIndex);\r\n                }\r\n            }\r\n            if (!isRemove) {\r\n                el.stopAnimation('remove');\r\n            }\r\n            duration > 0\r\n                ? (isFrom\r\n                    ? el.animateFrom(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        scope: animationType,\r\n                        during: during\r\n                    })\r\n                    : el.animateTo(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        setToFinal: true,\r\n                        scope: animationType,\r\n                        during: during\r\n                    }))\r\n                : (el.stopAnimation(), el.attr(props), cb && cb());\r\n        }\r\n        else {\r\n            el.stopAnimation();\r\n            !isFrom && el.attr(props);\r\n            cb && cb();\r\n        }\r\n    }\r\n    function updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, function (percent) {\r\n            during && during(percent);\r\n        });\r\n    }\r\n    function removeElement(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('remove', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function fadeOutDisplayable(el, animatableModel, dataIndex, done) {\r\n        el.removeTextContent();\r\n        el.removeTextGuideLine();\r\n        removeElement(el, {\r\n            style: {\r\n                opacity: 0\r\n            }\r\n        }, animatableModel, dataIndex, done);\r\n    }\r\n    function removeElementWithFadeOut(el, animatableModel, dataIndex) {\r\n        function doRemove() {\r\n            el.parent && el.parent.remove(el);\r\n        }\r\n        if (!el.isGroup) {\r\n            fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\r\n        }\r\n        else {\r\n            el.traverse(function (disp) {\r\n                if (!disp.isGroup) {\r\n                    fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function isElementRemoved(el) {\r\n        if (!el.__zr) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.scope === 'remove') {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function animateOrSetLabel(animationType, el, data, dataIndex, labelModel, seriesModel, animatableModel, defaultTextGetter) {\r\n        var valueAnimationEnabled = labelModel && labelModel.get('valueAnimation');\r\n        if (valueAnimationEnabled) {\r\n            var precisionOption = labelModel.get('precision');\r\n            var precision_1 = !precisionOption || precisionOption === 'auto'\r\n                ? 0\r\n                : precisionOption;\r\n            var interpolateValues_1;\r\n            var rawValues_1 = seriesModel.getRawValue(dataIndex);\r\n            var isRawValueNumber_1 = false;\r\n            if (typeof rawValues_1 === 'number') {\r\n                isRawValueNumber_1 = true;\r\n                interpolateValues_1 = rawValues_1;\r\n            }\r\n            else {\r\n                interpolateValues_1 = [];\r\n                for (var i = 0; i < rawValues_1.length; ++i) {\r\n                    var info = data.getDimensionInfo(i);\r\n                    if (info.type !== 'ordinal') {\r\n                        interpolateValues_1.push(rawValues_1[i]);\r\n                    }\r\n                }\r\n            }\r\n            var text = el.getTextContent();\r\n            var host_1 = text && innerLabel(text);\r\n            host_1 && (host_1.startValue = host_1.nextValue);\r\n            var duration = animatableModel.get('animationDuration');\r\n            if (!duration) {\r\n                host_1.nextValue = interpolateValues_1;\r\n            }\r\n            var during = function (percent) {\r\n                var text = el.getTextContent();\r\n                if (!text || !host_1) {\r\n                    return;\r\n                }\r\n                var interpolated;\r\n                if (isRawValueNumber_1) {\r\n                    var value = interpolateNumber(host_1.startValue || 0, interpolateValues_1, percent);\r\n                    interpolated = round$1(value, precision_1);\r\n                }\r\n                else {\r\n                    interpolated = [];\r\n                    for (var i = 0; i < rawValues_1.length; ++i) {\r\n                        var info = data.getDimensionInfo(i);\r\n                        if (info.type === 'ordinal') {\r\n                            interpolated[i] = rawValues_1[i];\r\n                        }\r\n                        else {\r\n                            var startValues = host_1.startValue;\r\n                            var value = startValues == null\r\n                                ? rawValues_1[i]\r\n                                : interpolateNumber(startValues && startValues[i] ? startValues[i] : 0, interpolateValues_1[i], percent);\r\n                            interpolated[i] = round$1(value), precision_1;\r\n                        }\r\n                    }\r\n                }\r\n                host_1.nextValue = interpolated;\r\n                var labelText = getLabelText({\r\n                    labelDataIndex: dataIndex,\r\n                    labelFetcher: seriesModel,\r\n                    defaultText: defaultTextGetter\r\n                        ? defaultTextGetter(interpolated)\r\n                        : interpolated + ''\r\n                }, { normal: labelModel }, interpolated);\r\n                text.style.text = labelText.normal;\r\n                text.dirty();\r\n            };\r\n            var props = {};\r\n            animateOrSetProps(animationType, el, props, animatableModel, dataIndex, null, during);\r\n        }\r\n    }\r\n    function updateLabel(el, data, dataIndex, labelModel, seriesModel, animatableModel, defaultTextGetter) {\r\n        animateOrSetLabel('update', el, data, dataIndex, labelModel, seriesModel, animatableModel, defaultTextGetter);\r\n    }\r\n    function initLabel(el, data, dataIndex, labelModel, seriesModel, animatableModel, defaultTextGetter) {\r\n        animateOrSetLabel('init', el, data, dataIndex, labelModel, seriesModel, animatableModel, defaultTextGetter);\r\n    }\r\n    function isNotGroup(el) {\r\n        return !el.isGroup;\r\n    }\r\n    function isPath(el) {\r\n        return el.shape != null;\r\n    }\r\n    function groupTransition(g1, g2, animatableModel) {\r\n        if (!g1 || !g2) {\r\n            return;\r\n        }\r\n        function getElMap(g) {\r\n            var elMap = {};\r\n            g.traverse(function (el) {\r\n                if (isNotGroup(el) && el.anid) {\r\n                    elMap[el.anid] = el;\r\n                }\r\n            });\r\n            return elMap;\r\n        }\r\n        function getAnimatableProps(el) {\r\n            var obj = {\r\n                x: el.x,\r\n                y: el.y,\r\n                rotation: el.rotation\r\n            };\r\n            if (isPath(el)) {\r\n                obj.shape = extend({}, el.shape);\r\n            }\r\n            return obj;\r\n        }\r\n        var elMap1 = getElMap(g1);\r\n        g2.traverse(function (el) {\r\n            if (isNotGroup(el) && el.anid) {\r\n                var oldEl = elMap1[el.anid];\r\n                if (oldEl) {\r\n                    var newProp = getAnimatableProps(el);\r\n                    el.attr(getAnimatableProps(oldEl));\r\n                    updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\r\n                }\r\n            }\r\n        });\r\n    }\n\n    function addCommas(x) {\r\n        if (isNaN(x)) {\r\n            return '-';\r\n        }\r\n        var parts = (x + '').split('.');\r\n        return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,')\r\n            + (parts.length > 1 ? ('.' + parts[1]) : '');\r\n    }\r\n    var normalizeCssArray$1 = normalizeCssArray;\r\n    var replaceReg = /([&<>\"'])/g;\r\n    var replaceMap = {\r\n        '&': '&amp;',\r\n        '<': '&lt;',\r\n        '>': '&gt;',\r\n        '\"': '&quot;',\r\n        '\\'': '&#39;'\r\n    };\r\n    function encodeHTML(source) {\r\n        return source == null\r\n            ? ''\r\n            : (source + '').replace(replaceReg, function (str, c) {\r\n                return replaceMap[c];\r\n            });\r\n    }\r\n    var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\n    var wrapVar = function (varName, seriesIdx) {\r\n        return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n    };\r\n    function formatTpl(tpl, paramsList, encode) {\r\n        if (!isArray(paramsList)) {\r\n            paramsList = [paramsList];\r\n        }\r\n        var seriesLen = paramsList.length;\r\n        if (!seriesLen) {\r\n            return '';\r\n        }\r\n        var isTimeAxis = paramsList[0].axisType && paramsList[0].axisType.indexOf('time') >= 0;\r\n        if (isTimeAxis) {\r\n            var axisValue = paramsList[0].data[paramsList[0].axisIndex];\r\n            var date = parseDate(axisValue);\r\n            return format(date, tpl);\r\n        }\r\n        else {\r\n            var $vars = paramsList[0].$vars || [];\r\n            for (var i = 0; i < $vars.length; i++) {\r\n                var alias = TPL_VAR_ALIAS[i];\r\n                tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\r\n            }\r\n            for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\r\n                for (var k = 0; k < $vars.length; k++) {\r\n                    var val = paramsList[seriesIdx][$vars[k]];\r\n                    tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\r\n                }\r\n            }\r\n        }\r\n        return tpl;\r\n    }\r\n    function getTooltipMarker(inOpt, extraCssText) {\r\n        var opt = isString(inOpt) ? {\r\n            color: inOpt,\r\n            extraCssText: extraCssText\r\n        } : (inOpt || {});\r\n        var color = opt.color;\r\n        var type = opt.type;\r\n        extraCssText = opt.extraCssText;\r\n        var renderMode = opt.renderMode || 'html';\r\n        var markerId = opt.markerId || 'X';\r\n        if (!color) {\r\n            return '';\r\n        }\r\n        if (renderMode === 'html') {\r\n            return type === 'subItem'\r\n                ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;'\r\n                    + 'border-radius:4px;width:4px;height:4px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>'\r\n                : '<span style=\"display:inline-block;margin-right:4px;'\r\n                    + 'border-radius:10px;width:10px;height:10px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\r\n        }\r\n        else {\r\n            return {\r\n                renderMode: renderMode,\r\n                content: '{marker' + markerId + '|}  ',\r\n                style: {\r\n                    color: color\r\n                }\r\n            };\r\n        }\r\n    }\r\n    function formatTime(tpl, value, isUTC) {\r\n        if (tpl === 'week'\r\n            || tpl === 'month'\r\n            || tpl === 'quarter'\r\n            || tpl === 'half-year'\r\n            || tpl === 'year') {\r\n            tpl = 'MM-dd\\nyyyy';\r\n        }\r\n        var date = parseDate(value);\r\n        var utc = isUTC ? 'UTC' : '';\r\n        var y = date['get' + utc + 'FullYear']();\r\n        var M = date['get' + utc + 'Month']() + 1;\r\n        var d = date['get' + utc + 'Date']();\r\n        var h = date['get' + utc + 'Hours']();\r\n        var m = date['get' + utc + 'Minutes']();\r\n        var s = date['get' + utc + 'Seconds']();\r\n        var S = date['get' + utc + 'Milliseconds']();\r\n        tpl = tpl.replace('MM', pad(M, 2))\r\n            .replace('M', M)\r\n            .replace('yyyy', y)\r\n            .replace('yy', y % 100 + '')\r\n            .replace('dd', pad(d, 2))\r\n            .replace('d', d)\r\n            .replace('hh', pad(h, 2))\r\n            .replace('h', h)\r\n            .replace('mm', pad(m, 2))\r\n            .replace('m', m)\r\n            .replace('ss', pad(s, 2))\r\n            .replace('s', s)\r\n            .replace('SSS', pad(S, 3));\r\n        return tpl;\r\n    }\n\n    var each$1 = each;\r\n    var LOCATION_PARAMS = [\r\n        'left', 'right', 'top', 'bottom', 'width', 'height'\r\n    ];\r\n    var HV_NAMES = [\r\n        ['width', 'left', 'right'],\r\n        ['height', 'top', 'bottom']\r\n    ];\r\n    function boxLayout(orient, group, gap, maxWidth, maxHeight) {\r\n        var x = 0;\r\n        var y = 0;\r\n        if (maxWidth == null) {\r\n            maxWidth = Infinity;\r\n        }\r\n        if (maxHeight == null) {\r\n            maxHeight = Infinity;\r\n        }\r\n        var currentLineMaxSize = 0;\r\n        group.eachChild(function (child, idx) {\r\n            var rect = child.getBoundingRect();\r\n            var nextChild = group.childAt(idx + 1);\r\n            var nextChildRect = nextChild && nextChild.getBoundingRect();\r\n            var nextX;\r\n            var nextY;\r\n            if (orient === 'horizontal') {\r\n                var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0);\r\n                nextX = x + moveX;\r\n                if (nextX > maxWidth || child.newline) {\r\n                    x = 0;\r\n                    nextX = moveX;\r\n                    y += currentLineMaxSize + gap;\r\n                    currentLineMaxSize = rect.height;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\r\n                }\r\n            }\r\n            else {\r\n                var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0);\r\n                nextY = y + moveY;\r\n                if (nextY > maxHeight || child.newline) {\r\n                    x += currentLineMaxSize + gap;\r\n                    y = 0;\r\n                    nextY = moveY;\r\n                    currentLineMaxSize = rect.width;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\r\n                }\r\n            }\r\n            if (child.newline) {\r\n                return;\r\n            }\r\n            child.x = x;\r\n            child.y = y;\r\n            child.markRedraw();\r\n            orient === 'horizontal'\r\n                ? (x = nextX + gap)\r\n                : (y = nextY + gap);\r\n        });\r\n    }\r\n    var vbox = curry(boxLayout, 'vertical');\r\n    var hbox = curry(boxLayout, 'horizontal');\r\n    function getLayoutRect(positionInfo, containerRect, margin) {\r\n        margin = normalizeCssArray$1(margin || 0);\r\n        var containerWidth = containerRect.width;\r\n        var containerHeight = containerRect.height;\r\n        var left = parsePercent$2(positionInfo.left, containerWidth);\r\n        var top = parsePercent$2(positionInfo.top, containerHeight);\r\n        var right = parsePercent$2(positionInfo.right, containerWidth);\r\n        var bottom = parsePercent$2(positionInfo.bottom, containerHeight);\r\n        var width = parsePercent$2(positionInfo.width, containerWidth);\r\n        var height = parsePercent$2(positionInfo.height, containerHeight);\r\n        var verticalMargin = margin[2] + margin[0];\r\n        var horizontalMargin = margin[1] + margin[3];\r\n        var aspect = positionInfo.aspect;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - right - horizontalMargin - left;\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - bottom - verticalMargin - top;\r\n        }\r\n        if (aspect != null) {\r\n            if (isNaN(width) && isNaN(height)) {\r\n                if (aspect > containerWidth / containerHeight) {\r\n                    width = containerWidth * 0.8;\r\n                }\r\n                else {\r\n                    height = containerHeight * 0.8;\r\n                }\r\n            }\r\n            if (isNaN(width)) {\r\n                width = aspect * height;\r\n            }\r\n            if (isNaN(height)) {\r\n                height = width / aspect;\r\n            }\r\n        }\r\n        if (isNaN(left)) {\r\n            left = containerWidth - right - width - horizontalMargin;\r\n        }\r\n        if (isNaN(top)) {\r\n            top = containerHeight - bottom - height - verticalMargin;\r\n        }\r\n        switch (positionInfo.left || positionInfo.right) {\r\n            case 'center':\r\n                left = containerWidth / 2 - width / 2 - margin[3];\r\n                break;\r\n            case 'right':\r\n                left = containerWidth - width - horizontalMargin;\r\n                break;\r\n        }\r\n        switch (positionInfo.top || positionInfo.bottom) {\r\n            case 'middle':\r\n            case 'center':\r\n                top = containerHeight / 2 - height / 2 - margin[0];\r\n                break;\r\n            case 'bottom':\r\n                top = containerHeight - height - verticalMargin;\r\n                break;\r\n        }\r\n        left = left || 0;\r\n        top = top || 0;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - horizontalMargin - left - (right || 0);\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - verticalMargin - top - (bottom || 0);\r\n        }\r\n        var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\r\n        rect.margin = margin;\r\n        return rect;\r\n    }\r\n    function fetchLayoutMode(ins) {\r\n        var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\r\n        return isObject(layoutMode)\r\n            ? layoutMode\r\n            : layoutMode\r\n                ? { type: layoutMode }\r\n                : null;\r\n    }\r\n    function mergeLayoutParam(targetOption, newOption, opt) {\r\n        var ignoreSize = opt && opt.ignoreSize;\r\n        !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\r\n        var hResult = merge(HV_NAMES[0], 0);\r\n        var vResult = merge(HV_NAMES[1], 1);\r\n        copy(HV_NAMES[0], targetOption, hResult);\r\n        copy(HV_NAMES[1], targetOption, vResult);\r\n        function merge(names, hvIdx) {\r\n            var newParams = {};\r\n            var newValueCount = 0;\r\n            var merged = {};\r\n            var mergedValueCount = 0;\r\n            var enoughParamNumber = 2;\r\n            each$1(names, function (name) {\r\n                merged[name] = targetOption[name];\r\n            });\r\n            each$1(names, function (name) {\r\n                hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\r\n                hasValue(newParams, name) && newValueCount++;\r\n                hasValue(merged, name) && mergedValueCount++;\r\n            });\r\n            if (ignoreSize[hvIdx]) {\r\n                if (hasValue(newOption, names[1])) {\r\n                    merged[names[2]] = null;\r\n                }\r\n                else if (hasValue(newOption, names[2])) {\r\n                    merged[names[1]] = null;\r\n                }\r\n                return merged;\r\n            }\r\n            if (mergedValueCount === enoughParamNumber || !newValueCount) {\r\n                return merged;\r\n            }\r\n            else if (newValueCount >= enoughParamNumber) {\r\n                return newParams;\r\n            }\r\n            else {\r\n                for (var i = 0; i < names.length; i++) {\r\n                    var name_1 = names[i];\r\n                    if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\r\n                        newParams[name_1] = targetOption[name_1];\r\n                        break;\r\n                    }\r\n                }\r\n                return newParams;\r\n            }\r\n        }\r\n        function hasProp(obj, name) {\r\n            return obj.hasOwnProperty(name);\r\n        }\r\n        function hasValue(obj, name) {\r\n            return obj[name] != null && obj[name] !== 'auto';\r\n        }\r\n        function copy(names, target, source) {\r\n            each$1(names, function (name) {\r\n                target[name] = source[name];\r\n            });\r\n        }\r\n    }\r\n    function getLayoutParams(source) {\r\n        return copyLayoutParams({}, source);\r\n    }\r\n    function copyLayoutParams(target, source) {\r\n        source && target && each$1(LOCATION_PARAMS, function (name) {\r\n            source.hasOwnProperty(name) && (target[name] = source[name]);\r\n        });\r\n        return target;\r\n    }\n\n    var inner = makeInner();\r\n    var ComponentModel = (function (_super) {\r\n        __extends(ComponentModel, _super);\r\n        function ComponentModel(option, parentModel, ecModel) {\r\n            var _this = _super.call(this, option, parentModel, ecModel) || this;\r\n            _this.uid = getUID('ec_cpt_model');\r\n            return _this;\r\n        }\r\n        ComponentModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n        };\r\n        ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeModel = ecModel.getTheme();\r\n            merge(option, themeModel.get(this.mainType));\r\n            merge(option, this.getDefaultOption());\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, option, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) { };\r\n        ComponentModel.prototype.getDefaultOption = function () {\r\n            var ctor = this.constructor;\r\n            if (!isExtendedClass(ctor)) {\r\n                return ctor.defaultOption;\r\n            }\r\n            var fields = inner(this);\r\n            if (!fields.defaultOption) {\r\n                var optList = [];\r\n                var clz = ctor;\r\n                while (clz) {\r\n                    var opt = clz.prototype.defaultOption;\r\n                    opt && optList.push(opt);\r\n                    clz = clz.superClass;\r\n                }\r\n                var defaultOption = {};\r\n                for (var i = optList.length - 1; i >= 0; i--) {\r\n                    defaultOption = merge(defaultOption, optList[i], true);\r\n                }\r\n                fields.defaultOption = defaultOption;\r\n            }\r\n            return fields.defaultOption;\r\n        };\r\n        ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\r\n            var indexKey = (mainType + 'Index');\r\n            var idKey = (mainType + 'Id');\r\n            return queryReferringComponents(this.ecModel, mainType, {\r\n                index: this.get(indexKey, true),\r\n                id: this.get(idKey, true)\r\n            }, opt);\r\n        };\r\n        ComponentModel.prototype.getBoxLayoutParams = function () {\r\n            var boxLayoutModel = this;\r\n            return {\r\n                left: boxLayoutModel.get('left'),\r\n                top: boxLayoutModel.get('top'),\r\n                right: boxLayoutModel.get('right'),\r\n                bottom: boxLayoutModel.get('bottom'),\r\n                width: boxLayoutModel.get('width'),\r\n                height: boxLayoutModel.get('height')\r\n            };\r\n        };\r\n        ComponentModel.protoInitialize = (function () {\r\n            var proto = ComponentModel.prototype;\r\n            proto.type = 'component';\r\n            proto.id = '';\r\n            proto.name = '';\r\n            proto.mainType = '';\r\n            proto.subType = '';\r\n            proto.componentIndex = 0;\r\n        })();\r\n        return ComponentModel;\r\n    }(Model));\r\n    mountExtend(ComponentModel, Model);\r\n    enableClassManagement(ComponentModel, { registerWhenExtend: true });\r\n    enableSubTypeDefaulter(ComponentModel);\r\n    enableTopologicalTravel(ComponentModel, getDependencies);\r\n    function getDependencies(componentType) {\r\n        var deps = [];\r\n        each(ComponentModel.getClassesByMainType(componentType), function (clz) {\r\n            deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\r\n        });\r\n        deps = map(deps, function (type) {\r\n            return parseClassType(type).main;\r\n        });\r\n        if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {\r\n            deps.unshift('dataset');\r\n        }\r\n        return deps;\r\n    }\n\n    var platform = '';\r\n    if (typeof navigator !== 'undefined') {\r\n        platform = navigator.platform || '';\r\n    }\r\n    var globalDefault = {\r\n        darkMode: 'auto',\r\n        color: [\r\n            '#5470c6',\r\n            '#91cc75',\r\n            '#fac858',\r\n            '#ee6666',\r\n            '#73c0de',\r\n            '#3ba272',\r\n            '#fc8452',\r\n            '#9a60b4',\r\n            '#ea7ccc'\r\n        ],\r\n        gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\r\n        textStyle: {\r\n            fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\r\n            fontSize: 12,\r\n            fontStyle: 'normal',\r\n            fontWeight: 'normal'\r\n        },\r\n        blendMode: null,\r\n        stateAnimation: {\r\n            duration: 300,\r\n            easing: 'cubicOut'\r\n        },\r\n        animation: 'auto',\r\n        animationDuration: 1000,\r\n        animationDurationUpdate: 500,\r\n        animationEasing: 'cubicInOut',\r\n        animationEasingUpdate: 'cubicInOut',\r\n        animationThreshold: 2000,\r\n        progressiveThreshold: 3000,\r\n        progressive: 400,\r\n        hoverLayerThreshold: 3000,\r\n        useUTC: false\r\n    };\n\n    var inner$1 = makeInner();\r\n    function getNearestColorPalette(colors, requestColorNum) {\r\n        var paletteNum = colors.length;\r\n        for (var i = 0; i < paletteNum; i++) {\r\n            if (colors[i].length > requestColorNum) {\r\n                return colors[i];\r\n            }\r\n        }\r\n        return colors[paletteNum - 1];\r\n    }\r\n    var ColorPaletteMixin = (function () {\r\n        function ColorPaletteMixin() {\r\n        }\r\n        ColorPaletteMixin.prototype.clearColorPalette = function () {\r\n            inner$1(this).colorIdx = 0;\r\n            inner$1(this).colorNameMap = {};\r\n        };\r\n        ColorPaletteMixin.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n            scope = scope || this;\r\n            var scopeFields = inner$1(scope);\r\n            var colorIdx = scopeFields.colorIdx || 0;\r\n            var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {};\r\n            if (colorNameMap.hasOwnProperty(name)) {\r\n                return colorNameMap[name];\r\n            }\r\n            var defaultColorPalette = normalizeToArray(this.get('color', true));\r\n            var layeredColorPalette = this.get('colorLayer', true);\r\n            var colorPalette = ((requestColorNum == null || !layeredColorPalette)\r\n                ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum));\r\n            colorPalette = colorPalette || defaultColorPalette;\r\n            if (!colorPalette || !colorPalette.length) {\r\n                return;\r\n            }\r\n            var color = colorPalette[colorIdx];\r\n            if (name) {\r\n                colorNameMap[name] = color;\r\n            }\r\n            scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\r\n            return color;\r\n        };\r\n        return ColorPaletteMixin;\r\n    }());\n\n    var VISUAL_DIMENSIONS = createHashMap([\r\n        'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n    ]);\r\n    var SOURCE_FORMAT_ORIGINAL = 'original';\r\n    var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\n    var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\n    var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\n    var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\n    var SOURCE_FORMAT_UNKNOWN = 'unknown';\r\n    var SERIES_LAYOUT_BY_COLUMN = 'column';\r\n    var SERIES_LAYOUT_BY_ROW = 'row';\n\n    var Source = (function () {\r\n        function Source(fields) {\r\n            this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\r\n            this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\r\n            this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\r\n            this.startIndex = fields.startIndex || 0;\r\n            this.dimensionsDefine = fields.dimensionsDefine;\r\n            this.dimensionsDetectCount = fields.dimensionsDetectCount;\r\n            this.encodeDefine = fields.encodeDefine;\r\n            this.metaRawOption = fields.metaRawOption;\r\n        }\r\n        Source.seriesDataToSource = function (data) {\r\n            return new Source({\r\n                data: data,\r\n                sourceFormat: isTypedArray(data)\r\n                    ? SOURCE_FORMAT_TYPED_ARRAY\r\n                    : SOURCE_FORMAT_ORIGINAL\r\n            });\r\n        };\r\n        return Source;\r\n    }());\n\n    var BE_ORDINAL = {\r\n        Must: 1,\r\n        Might: 2,\r\n        Not: 3\r\n    };\r\n    var innerGlobalModel = makeInner();\r\n    function detectSourceFormat(data) {\r\n        var sourceFormat = SOURCE_FORMAT_UNKNOWN;\r\n        if (isTypedArray(data)) {\r\n            sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\r\n        }\r\n        else if (isArray(data)) {\r\n            if (data.length === 0) {\r\n                sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n            }\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                var item = data[i];\r\n                if (item == null) {\r\n                    continue;\r\n                }\r\n                else if (isArray(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n                    break;\r\n                }\r\n                else if (isObject(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (isObject(data)) {\r\n            for (var key in data) {\r\n                if (hasOwn(data, key) && isArrayLike(data[key])) {\r\n                    sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (data != null) {\r\n            throw new Error('Invalid data');\r\n        }\r\n        return sourceFormat;\r\n    }\r\n    function resetSourceDefaulter(ecModel) {\r\n        innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n    }\r\n    function createSource(sourceData, thisMetaRawOption, sourceFormat, encodeDefine) {\r\n        sourceFormat = sourceFormat || detectSourceFormat(sourceData);\r\n        var dimInfo = determineSourceDimensions(sourceData, sourceFormat, thisMetaRawOption.seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\r\n        var source = new Source({\r\n            data: sourceData,\r\n            sourceFormat: sourceFormat,\r\n            seriesLayoutBy: thisMetaRawOption.seriesLayoutBy,\r\n            dimensionsDefine: dimInfo.dimensionsDefine,\r\n            startIndex: dimInfo.startIndex,\r\n            dimensionsDetectCount: dimInfo.dimensionsDetectCount,\r\n            encodeDefine: makeEncodeDefine(encodeDefine),\r\n            metaRawOption: clone(thisMetaRawOption)\r\n        });\r\n        return source;\r\n    }\r\n    function inheritSourceMetaRawOption(opt) {\r\n        return defaults(opt.thisNew, opt.parent);\r\n    }\r\n    function cloneSourceShallow(source) {\r\n        return new Source({\r\n            data: source.data,\r\n            sourceFormat: source.sourceFormat,\r\n            seriesLayoutBy: source.seriesLayoutBy,\r\n            dimensionsDefine: clone(source.dimensionsDefine),\r\n            startIndex: source.startIndex,\r\n            dimensionsDetectCount: source.dimensionsDetectCount,\r\n            encodeDefine: makeEncodeDefine(source.encodeDefine)\r\n        });\r\n    }\r\n    function makeEncodeDefine(encodeDefine) {\r\n        return encodeDefine\r\n            ? createHashMap(encodeDefine)\r\n            : null;\r\n    }\r\n    function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\r\n        var dimensionsDetectCount;\r\n        var startIndex;\r\n        if (!data) {\r\n            return {\r\n                dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n                startIndex: startIndex,\r\n                dimensionsDetectCount: dimensionsDetectCount\r\n            };\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (sourceHeader === 'auto' || sourceHeader == null) {\r\n                arrayRowsTravelFirst(function (val) {\r\n                    if (val != null && val !== '-') {\r\n                        if (isString(val)) {\r\n                            startIndex == null && (startIndex = 1);\r\n                        }\r\n                        else {\r\n                            startIndex = 0;\r\n                        }\r\n                    }\r\n                }, seriesLayoutBy, dataArrayRows, 10);\r\n            }\r\n            else {\r\n                startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\r\n            }\r\n            if (!dimensionsDefine && startIndex === 1) {\r\n                dimensionsDefine = [];\r\n                arrayRowsTravelFirst(function (val, index) {\r\n                    dimensionsDefine[index] = (val != null ? val + '' : '');\r\n                }, seriesLayoutBy, dataArrayRows, Infinity);\r\n            }\r\n            dimensionsDetectCount = dimensionsDefine\r\n                ? dimensionsDefine.length\r\n                : seriesLayoutBy === SERIES_LAYOUT_BY_ROW\r\n                    ? dataArrayRows.length\r\n                    : dataArrayRows[0]\r\n                        ? dataArrayRows[0].length\r\n                        : null;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = objectRowsCollectDimensions(data);\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = [];\r\n                each(data, function (colArr, key) {\r\n                    dimensionsDefine.push(key);\r\n                });\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var value0 = getDataItemValue(data[0]);\r\n            dimensionsDetectCount = isArray(value0) && value0.length || 1;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n            if (__DEV__) {\r\n                assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\r\n            }\r\n        }\r\n        return {\r\n            startIndex: startIndex,\r\n            dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n            dimensionsDetectCount: dimensionsDetectCount\r\n        };\r\n    }\r\n    function normalizeDimensionsOption(dimensionsDefine) {\r\n        if (!dimensionsDefine) {\r\n            return;\r\n        }\r\n        var nameMap = createHashMap();\r\n        return map(dimensionsDefine, function (item, index) {\r\n            item = extend({}, isObject(item) ? item : { name: item });\r\n            if (item.name == null) {\r\n                return item;\r\n            }\r\n            item.name += '';\r\n            if (item.displayName == null) {\r\n                item.displayName = item.name;\r\n            }\r\n            var exist = nameMap.get(item.name);\r\n            if (!exist) {\r\n                nameMap.set(item.name, { count: 1 });\r\n            }\r\n            else {\r\n                item.name += '-' + exist.count++;\r\n            }\r\n            return item;\r\n        });\r\n    }\r\n    function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\r\n        if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n            for (var i = 0; i < data.length && i < maxLoop; i++) {\r\n                cb(data[i] ? data[i][0] : null, i);\r\n            }\r\n        }\r\n        else {\r\n            var value0 = data[0] || [];\r\n            for (var i = 0; i < value0.length && i < maxLoop; i++) {\r\n                cb(value0[i], i);\r\n            }\r\n        }\r\n    }\r\n    function objectRowsCollectDimensions(data) {\r\n        var firstIndex = 0;\r\n        var obj;\r\n        while (firstIndex < data.length && !(obj = data[firstIndex++])) { }\r\n        if (obj) {\r\n            var dimensions_1 = [];\r\n            each(obj, function (value, key) {\r\n                dimensions_1.push(key);\r\n            });\r\n            return dimensions_1;\r\n        }\r\n    }\r\n    function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel || !coordDimensions) {\r\n            return encode;\r\n        }\r\n        var encodeItemName = [];\r\n        var encodeSeriesName = [];\r\n        var ecModel = seriesModel.ecModel;\r\n        var datasetMap = innerGlobalModel(ecModel).datasetMap;\r\n        var key = datasetModel.uid + '_' + source.seriesLayoutBy;\r\n        var baseCategoryDimIndex;\r\n        var categoryWayValueDimStart;\r\n        coordDimensions = coordDimensions.slice();\r\n        each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\r\n            var coordDimInfo = isObject(coordDimInfoLoose)\r\n                ? coordDimInfoLoose\r\n                : (coordDimensions[coordDimIdx] = { name: coordDimInfoLoose });\r\n            if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\r\n                baseCategoryDimIndex = coordDimIdx;\r\n                categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\r\n            }\r\n            encode[coordDimInfo.name] = [];\r\n        });\r\n        var datasetRecord = datasetMap.get(key)\r\n            || datasetMap.set(key, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 });\r\n        each(coordDimensions, function (coordDimInfo, coordDimIdx) {\r\n            var coordDimName = coordDimInfo.name;\r\n            var count = getDataDimCountOnCoordDim(coordDimInfo);\r\n            if (baseCategoryDimIndex == null) {\r\n                var start = datasetRecord.valueWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.valueWayDim += count;\r\n            }\r\n            else if (baseCategoryDimIndex === coordDimIdx) {\r\n                pushDim(encode[coordDimName], 0, count);\r\n                pushDim(encodeItemName, 0, count);\r\n            }\r\n            else {\r\n                var start = datasetRecord.categoryWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.categoryWayDim += count;\r\n            }\r\n        });\r\n        function pushDim(dimIdxArr, idxFrom, idxCount) {\r\n            for (var i = 0; i < idxCount; i++) {\r\n                dimIdxArr.push(idxFrom + i);\r\n            }\r\n        }\r\n        function getDataDimCountOnCoordDim(coordDimInfo) {\r\n            var dimsDef = coordDimInfo.dimsDef;\r\n            return dimsDef ? dimsDef.length : 1;\r\n        }\r\n        encodeItemName.length && (encode.itemName = encodeItemName);\r\n        encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\r\n        return encode;\r\n    }\r\n    function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel) {\r\n            return encode;\r\n        }\r\n        var sourceFormat = source.sourceFormat;\r\n        var dimensionsDefine = source.dimensionsDefine;\r\n        var potentialNameDimIndex;\r\n        if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            each(dimensionsDefine, function (dim, idx) {\r\n                if ((isObject(dim) ? dim.name : dim) === 'name') {\r\n                    potentialNameDimIndex = idx;\r\n                }\r\n            });\r\n        }\r\n        var idxResult = (function () {\r\n            var idxRes0 = {};\r\n            var idxRes1 = {};\r\n            var guessRecords = [];\r\n            for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\r\n                var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\r\n                guessRecords.push(guessResult);\r\n                var isPureNumber = guessResult === BE_ORDINAL.Not;\r\n                if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\r\n                    idxRes0.v = i;\r\n                }\r\n                if (idxRes0.n == null\r\n                    || (idxRes0.n === idxRes0.v)\r\n                    || (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)) {\r\n                    idxRes0.n = i;\r\n                }\r\n                if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\r\n                    return idxRes0;\r\n                }\r\n                if (!isPureNumber) {\r\n                    if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\r\n                        idxRes1.v = i;\r\n                    }\r\n                    if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {\r\n                        idxRes1.n = i;\r\n                    }\r\n                }\r\n            }\r\n            function fulfilled(idxResult) {\r\n                return idxResult.v != null && idxResult.n != null;\r\n            }\r\n            return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\r\n        })();\r\n        if (idxResult) {\r\n            encode.value = [idxResult.v];\r\n            var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;\r\n            encode.itemName = [nameDimIndex];\r\n            encode.seriesName = [nameDimIndex];\r\n        }\r\n        return encode;\r\n    }\r\n    function querySeriesUpstreamDatasetModel(seriesModel) {\r\n        var thisData = seriesModel.get('data', true);\r\n        if (!thisData) {\r\n            return queryReferringComponents(seriesModel.ecModel, 'dataset', {\r\n                index: seriesModel.get('datasetIndex', true),\r\n                id: seriesModel.get('datasetId', true)\r\n            }, SINGLE_REFERRING).models[0];\r\n        }\r\n    }\r\n    function queryDatasetUpstreamDatasetModels(datasetModel) {\r\n        if (!datasetModel.get('transform', true)\r\n            && !datasetModel.get('fromTransformResult', true)) {\r\n            return [];\r\n        }\r\n        return queryReferringComponents(datasetModel.ecModel, 'dataset', {\r\n            index: datasetModel.get('fromDatasetIndex', true),\r\n            id: datasetModel.get('fromDatasetId', true)\r\n        }, SINGLE_REFERRING).models;\r\n    }\r\n    function guessOrdinal(source, dimIndex) {\r\n        return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n    }\r\n    function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\r\n        var result;\r\n        var maxLoop = 5;\r\n        if (isTypedArray(data)) {\r\n            return BE_ORDINAL.Not;\r\n        }\r\n        var dimName;\r\n        var dimType;\r\n        if (dimensionsDefine) {\r\n            var dimDefItem = dimensionsDefine[dimIndex];\r\n            if (isObject(dimDefItem)) {\r\n                dimName = dimDefItem.name;\r\n                dimType = dimDefItem.type;\r\n            }\r\n            else if (isString(dimDefItem)) {\r\n                dimName = dimDefItem;\r\n            }\r\n        }\r\n        if (dimType != null) {\r\n            return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n                var sample = dataArrayRows[dimIndex];\r\n                for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\r\n                    if ((result = detectValue(sample[startIndex + i])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\r\n                    var row = dataArrayRows[startIndex + i];\r\n                    if (row && (result = detectValue(row[dimIndex])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var dataObjectRows = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\r\n                var item = dataObjectRows[i];\r\n                if (item && (result = detectValue(item[dimName])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            var dataKeyedColumns = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            var sample = dataKeyedColumns[dimName];\r\n            if (!sample || isTypedArray(sample)) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < sample.length && i < maxLoop; i++) {\r\n                if ((result = detectValue(sample[i])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var dataOriginal = data;\r\n            for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\r\n                var item = dataOriginal[i];\r\n                var val = getDataItemValue(item);\r\n                if (!isArray(val)) {\r\n                    return BE_ORDINAL.Not;\r\n                }\r\n                if ((result = detectValue(val[dimIndex])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        function detectValue(val) {\r\n            var beStr = isString(val);\r\n            if (val != null && isFinite(val) && val !== '') {\r\n                return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\r\n            }\r\n            else if (beStr && val !== '-') {\r\n                return BE_ORDINAL.Must;\r\n            }\r\n        }\r\n        return BE_ORDINAL.Not;\r\n    }\n\n    var internalOptionCreatorMap = createHashMap();\r\n    function concatInternalOptions(ecModel, mainType, newCmptOptionList) {\r\n        var internalOptionCreator = internalOptionCreatorMap.get(mainType);\r\n        if (!internalOptionCreator) {\r\n            return newCmptOptionList;\r\n        }\r\n        var internalOptions = internalOptionCreator(ecModel);\r\n        if (!internalOptions) {\r\n            return newCmptOptionList;\r\n        }\r\n        if (__DEV__) {\r\n            for (var i = 0; i < internalOptions.length; i++) {\r\n                assert(isComponentIdInternal(internalOptions[i]));\r\n            }\r\n        }\r\n        return newCmptOptionList.concat(internalOptions);\r\n    }\n\n    var reCreateSeriesIndices;\r\n    var assertSeriesInitialized;\r\n    var initBase;\r\n    var OPTION_INNER_KEY = '\\0_ec_inner';\r\n    var GlobalModel = (function (_super) {\r\n        __extends(GlobalModel, _super);\r\n        function GlobalModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\r\n            theme = theme || {};\r\n            this.option = null;\r\n            this._theme = new Model(theme);\r\n            this._locale = new Model(locale);\r\n            this._optionManager = optionManager;\r\n        };\r\n        GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\r\n            assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\r\n            var innerOpt = normalizeReplaceMergeInput(opts);\r\n            this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\r\n            this._resetOption(null, innerOpt);\r\n        };\r\n        GlobalModel.prototype.resetOption = function (type, opt) {\r\n            return this._resetOption(type, normalizeReplaceMergeInput(opt));\r\n        };\r\n        GlobalModel.prototype._resetOption = function (type, opt) {\r\n            var optionChanged = false;\r\n            var optionManager = this._optionManager;\r\n            if (!type || type === 'recreate') {\r\n                var baseOption = optionManager.mountOption(type === 'recreate');\r\n                if (!this.option || type === 'recreate') {\r\n                    initBase(this, baseOption);\r\n                }\r\n                else {\r\n                    this.restoreData();\r\n                    this._mergeOption(baseOption, opt);\r\n                }\r\n                optionChanged = true;\r\n            }\r\n            if (type === 'timeline' || type === 'media') {\r\n                this.restoreData();\r\n            }\r\n            if (!type || type === 'recreate' || type === 'timeline') {\r\n                var timelineOption = optionManager.getTimelineOption(this);\r\n                if (timelineOption) {\r\n                    optionChanged = true;\r\n                    this._mergeOption(timelineOption, opt);\r\n                }\r\n            }\r\n            if (!type || type === 'recreate' || type === 'media') {\r\n                var mediaOptions = optionManager.getMediaOption(this);\r\n                if (mediaOptions.length) {\r\n                    each(mediaOptions, function (mediaOption) {\r\n                        optionChanged = true;\r\n                        this._mergeOption(mediaOption, opt);\r\n                    }, this);\r\n                }\r\n            }\r\n            return optionChanged;\r\n        };\r\n        GlobalModel.prototype.mergeOption = function (option) {\r\n            this._mergeOption(option, null);\r\n        };\r\n        GlobalModel.prototype._mergeOption = function (newOption, opt) {\r\n            var option = this.option;\r\n            var componentsMap = this._componentsMap;\r\n            var componentsCount = this._componentsCount;\r\n            var newCmptTypes = [];\r\n            var newCmptTypeMap = createHashMap();\r\n            var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\r\n            resetSourceDefaulter(this);\r\n            each(newOption, function (componentOption, mainType) {\r\n                if (componentOption == null) {\r\n                    return;\r\n                }\r\n                if (!ComponentModel.hasClass(mainType)) {\r\n                    option[mainType] = option[mainType] == null\r\n                        ? clone(componentOption)\r\n                        : merge(option[mainType], componentOption, true);\r\n                }\r\n                else if (mainType) {\r\n                    newCmptTypes.push(mainType);\r\n                    newCmptTypeMap.set(mainType, true);\r\n                }\r\n            });\r\n            if (replaceMergeMainTypeMap) {\r\n                replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\r\n                    if (!newCmptTypeMap.get(mainTypeInReplaceMerge)) {\r\n                        newCmptTypes.push(mainTypeInReplaceMerge);\r\n                        newCmptTypeMap.set(mainTypeInReplaceMerge, true);\r\n                    }\r\n                });\r\n            }\r\n            ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\r\n            function visitComponent(mainType) {\r\n                var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));\r\n                var oldCmptList = componentsMap.get(mainType);\r\n                var mergeMode = !oldCmptList ? 'replaceAll'\r\n                    : (replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge'\r\n                        : 'normalMerge';\r\n                var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);\r\n                setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);\r\n                option[mainType] = null;\r\n                componentsMap.set(mainType, null);\r\n                componentsCount.set(mainType, 0);\r\n                var optionsByMainType = [];\r\n                var cmptsByMainType = [];\r\n                var cmptsCountByMainType = 0;\r\n                each(mappingResult, function (resultItem, index) {\r\n                    var componentModel = resultItem.existing;\r\n                    var newCmptOption = resultItem.newOption;\r\n                    if (!newCmptOption) {\r\n                        if (componentModel) {\r\n                            componentModel.mergeOption({}, this);\r\n                            componentModel.optionUpdated({}, false);\r\n                        }\r\n                    }\r\n                    else {\r\n                        var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\r\n                        if (componentModel && componentModel.constructor === ComponentModelClass) {\r\n                            componentModel.name = resultItem.keyInfo.name;\r\n                            componentModel.mergeOption(newCmptOption, this);\r\n                            componentModel.optionUpdated(newCmptOption, false);\r\n                        }\r\n                        else {\r\n                            var extraOpt = extend({\r\n                                componentIndex: index\r\n                            }, resultItem.keyInfo);\r\n                            componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);\r\n                            extend(componentModel, extraOpt);\r\n                            if (resultItem.brandNew) {\r\n                                componentModel.__requireNewView = true;\r\n                            }\r\n                            componentModel.init(newCmptOption, this, this);\r\n                            componentModel.optionUpdated(null, true);\r\n                        }\r\n                    }\r\n                    if (componentModel) {\r\n                        optionsByMainType.push(componentModel.option);\r\n                        cmptsByMainType.push(componentModel);\r\n                        cmptsCountByMainType++;\r\n                    }\r\n                    else {\r\n                        optionsByMainType.push(void 0);\r\n                        cmptsByMainType.push(void 0);\r\n                    }\r\n                }, this);\r\n                option[mainType] = optionsByMainType;\r\n                componentsMap.set(mainType, cmptsByMainType);\r\n                componentsCount.set(mainType, cmptsCountByMainType);\r\n                if (mainType === 'series') {\r\n                    reCreateSeriesIndices(this);\r\n                }\r\n            }\r\n            if (!this._seriesIndices) {\r\n                reCreateSeriesIndices(this);\r\n            }\r\n        };\r\n        GlobalModel.prototype.getOption = function () {\r\n            var option = clone(this.option);\r\n            each(option, function (optInMainType, mainType) {\r\n                if (ComponentModel.hasClass(mainType)) {\r\n                    var opts = normalizeToArray(optInMainType);\r\n                    var realLen = opts.length;\r\n                    var metNonInner = false;\r\n                    for (var i = realLen - 1; i >= 0; i--) {\r\n                        if (opts[i] && !isComponentIdInternal(opts[i])) {\r\n                            metNonInner = true;\r\n                        }\r\n                        else {\r\n                            opts[i] = null;\r\n                            !metNonInner && realLen--;\r\n                        }\r\n                    }\r\n                    opts.length = realLen;\r\n                    option[mainType] = opts;\r\n                }\r\n            });\r\n            delete option[OPTION_INNER_KEY];\r\n            return option;\r\n        };\r\n        GlobalModel.prototype.getTheme = function () {\r\n            return this._theme;\r\n        };\r\n        GlobalModel.prototype.getLocaleModel = function () {\r\n            return this._locale;\r\n        };\r\n        GlobalModel.prototype.getLocale = function (localePosition) {\r\n            var locale = this.getLocaleModel();\r\n            return locale.get(localePosition);\r\n        };\r\n        GlobalModel.prototype.setUpdatePayload = function (payload) {\r\n            this._payload = payload;\r\n        };\r\n        GlobalModel.prototype.getUpdatePayload = function () {\r\n            return this._payload;\r\n        };\r\n        GlobalModel.prototype.getComponent = function (mainType, idx) {\r\n            var list = this._componentsMap.get(mainType);\r\n            if (list) {\r\n                var cmpt = list[idx || 0];\r\n                if (cmpt) {\r\n                    return cmpt;\r\n                }\r\n                else if (idx == null) {\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        if (list[i]) {\r\n                            return list[i];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.queryComponents = function (condition) {\r\n            var mainType = condition.mainType;\r\n            if (!mainType) {\r\n                return [];\r\n            }\r\n            var index = condition.index;\r\n            var id = condition.id;\r\n            var name = condition.name;\r\n            var cmpts = this._componentsMap.get(mainType);\r\n            if (!cmpts || !cmpts.length) {\r\n                return [];\r\n            }\r\n            var result;\r\n            if (index != null) {\r\n                result = [];\r\n                each(normalizeToArray(index), function (idx) {\r\n                    cmpts[idx] && result.push(cmpts[idx]);\r\n                });\r\n            }\r\n            else if (id != null) {\r\n                result = queryByIdOrName('id', id, cmpts);\r\n            }\r\n            else if (name != null) {\r\n                result = queryByIdOrName('name', name, cmpts);\r\n            }\r\n            else {\r\n                result = filter(cmpts, function (cmpt) { return !!cmpt; });\r\n            }\r\n            return filterBySubType(result, condition);\r\n        };\r\n        GlobalModel.prototype.findComponents = function (condition) {\r\n            var query = condition.query;\r\n            var mainType = condition.mainType;\r\n            var queryCond = getQueryCond(query);\r\n            var result = queryCond\r\n                ? this.queryComponents(queryCond)\r\n                : filter(this._componentsMap.get(mainType), function (cmpt) { return !!cmpt; });\r\n            return doFilter(filterBySubType(result, condition));\r\n            function getQueryCond(q) {\r\n                var indexAttr = mainType + 'Index';\r\n                var idAttr = mainType + 'Id';\r\n                var nameAttr = mainType + 'Name';\r\n                return q && (q[indexAttr] != null\r\n                    || q[idAttr] != null\r\n                    || q[nameAttr] != null)\r\n                    ? {\r\n                        mainType: mainType,\r\n                        index: q[indexAttr],\r\n                        id: q[idAttr],\r\n                        name: q[nameAttr]\r\n                    }\r\n                    : null;\r\n            }\r\n            function doFilter(res) {\r\n                return condition.filter\r\n                    ? filter(res, condition.filter)\r\n                    : res;\r\n            }\r\n        };\r\n        GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\r\n            var componentsMap = this._componentsMap;\r\n            if (isFunction(mainType)) {\r\n                var ctxForAll_1 = cb;\r\n                var cbForAll_1 = mainType;\r\n                componentsMap.each(function (cmpts, componentType) {\r\n                    for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                        var cmpt = cmpts[i];\r\n                        cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var cmpts = isString(mainType)\r\n                    ? componentsMap.get(mainType)\r\n                    : isObject(mainType)\r\n                        ? this.findComponents(mainType)\r\n                        : null;\r\n                for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                    var cmpt = cmpts[i];\r\n                    cmpt && cb.call(context, cmpt, cmpt.componentIndex);\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.getSeriesByName = function (name) {\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.name === name; });\r\n        };\r\n        GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\r\n            return this._componentsMap.get('series')[seriesIndex];\r\n        };\r\n        GlobalModel.prototype.getSeriesByType = function (subType) {\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.subType === subType; });\r\n        };\r\n        GlobalModel.prototype.getSeries = function () {\r\n            return filter(this._componentsMap.get('series').slice(), function (oneSeries) { return !!oneSeries; });\r\n        };\r\n        GlobalModel.prototype.getSeriesCount = function () {\r\n            return this._componentsCount.get('series');\r\n        };\r\n        GlobalModel.prototype.eachSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                cb.call(context, series, rawSeriesIndex);\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeries = function (cb, context) {\r\n            each(this._componentsMap.get('series'), function (series) {\r\n                series && cb.call(context, series, series.componentIndex);\r\n            });\r\n        };\r\n        GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                if (series.subType === subType) {\r\n                    cb.call(context, series, rawSeriesIndex);\r\n                }\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\r\n            return each(this.getSeriesByType(subType), cb, context);\r\n        };\r\n        GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\r\n            assertSeriesInitialized(this);\r\n            return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\r\n        };\r\n        GlobalModel.prototype.getCurrentSeriesIndices = function () {\r\n            return (this._seriesIndices || []).slice();\r\n        };\r\n        GlobalModel.prototype.filterSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            var newSeriesIndices = [];\r\n            each(this._seriesIndices, function (seriesRawIdx) {\r\n                var series = this._componentsMap.get('series')[seriesRawIdx];\r\n                cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\r\n            }, this);\r\n            this._seriesIndices = newSeriesIndices;\r\n            this._seriesIndicesMap = createHashMap(newSeriesIndices);\r\n        };\r\n        GlobalModel.prototype.restoreData = function (payload) {\r\n            reCreateSeriesIndices(this);\r\n            var componentsMap = this._componentsMap;\r\n            var componentTypes = [];\r\n            componentsMap.each(function (components, componentType) {\r\n                componentTypes.push(componentType);\r\n            });\r\n            ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\r\n                each(componentsMap.get(componentType), function (component) {\r\n                    if (component\r\n                        && (componentType !== 'series'\r\n                            || !isNotTargetSeries(component, payload))) {\r\n                        component.restoreData();\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        GlobalModel.internalField = (function () {\r\n            reCreateSeriesIndices = function (ecModel) {\r\n                var seriesIndices = ecModel._seriesIndices = [];\r\n                each(ecModel._componentsMap.get('series'), function (series) {\r\n                    series && seriesIndices.push(series.componentIndex);\r\n                });\r\n                ecModel._seriesIndicesMap = createHashMap(seriesIndices);\r\n            };\r\n            assertSeriesInitialized = function (ecModel) {\r\n                if (__DEV__) {\r\n                    if (!ecModel._seriesIndices) {\r\n                        throw new Error('Option should contains series.');\r\n                    }\r\n                }\r\n            };\r\n            initBase = function (ecModel, baseOption) {\r\n                ecModel.option = {};\r\n                ecModel.option[OPTION_INNER_KEY] = 1;\r\n                ecModel._componentsMap = createHashMap({ series: [] });\r\n                ecModel._componentsCount = createHashMap();\r\n                mergeTheme(baseOption, ecModel._theme.option);\r\n                merge(baseOption, globalDefault, false);\r\n                ecModel._mergeOption(baseOption, null);\r\n            };\r\n        })();\r\n        return GlobalModel;\r\n    }(Model));\r\n    function isNotTargetSeries(seriesModel, payload) {\r\n        if (payload) {\r\n            var index = payload.seriesIndex;\r\n            var id = payload.seriesId;\r\n            var name_1 = payload.seriesName;\r\n            return (index != null && seriesModel.componentIndex !== index)\r\n                || (id != null && seriesModel.id !== id)\r\n                || (name_1 != null && seriesModel.name !== name_1);\r\n        }\r\n    }\r\n    function mergeTheme(option, theme) {\r\n        var notMergeColorLayer = option.color && !option.colorLayer;\r\n        each(theme, function (themeItem, name) {\r\n            if (name === 'colorLayer' && notMergeColorLayer) {\r\n                return;\r\n            }\r\n            if (!ComponentModel.hasClass(name)) {\r\n                if (typeof themeItem === 'object') {\r\n                    option[name] = !option[name]\r\n                        ? clone(themeItem)\r\n                        : merge(option[name], themeItem, false);\r\n                }\r\n                else {\r\n                    if (option[name] == null) {\r\n                        option[name] = themeItem;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function queryByIdOrName(attr, idOrName, cmpts) {\r\n        if (isArray(idOrName)) {\r\n            var keyMap_1 = createHashMap(idOrName);\r\n            each(idOrName, function (idOrNameItem) {\r\n                if (idOrNameItem != null) {\r\n                    validateIdOrName(idOrNameItem);\r\n                    keyMap_1.set(idOrNameItem, true);\r\n                }\r\n            });\r\n            return filter(cmpts, function (cmpt) { return cmpt && keyMap_1.get(cmpt[attr]); });\r\n        }\r\n        else {\r\n            validateIdOrName(idOrName);\r\n            return filter(cmpts, function (cmpt) { return cmpt && cmpt[attr] === idOrName + ''; });\r\n        }\r\n    }\r\n    function filterBySubType(components, condition) {\r\n        return condition.hasOwnProperty('subType')\r\n            ? filter(components, function (cmpt) { return cmpt && cmpt.subType === condition.subType; })\r\n            : components;\r\n    }\r\n    function normalizeReplaceMergeInput(opts) {\r\n        var replaceMergeMainTypeMap = createHashMap();\r\n        opts && each(normalizeToArray(opts.replaceMerge), function (mainType) {\r\n            if (__DEV__) {\r\n                assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\r\n            }\r\n            replaceMergeMainTypeMap.set(mainType, true);\r\n        });\r\n        return {\r\n            replaceMergeMainTypeMap: replaceMergeMainTypeMap\r\n        };\r\n    }\r\n    mixin(GlobalModel, ColorPaletteMixin);\n\n    var availableMethods = [\r\n        'getDom',\r\n        'getZr',\r\n        'getWidth',\r\n        'getHeight',\r\n        'getDevicePixelRatio',\r\n        'dispatchAction',\r\n        'isDisposed',\r\n        'on',\r\n        'off',\r\n        'getDataURL',\r\n        'getConnectedDataURL',\r\n        'getModel',\r\n        'getOption',\r\n        'getViewOfComponentModel',\r\n        'getViewOfSeriesModel',\r\n        'getId',\r\n        'updateLabelLayout'\r\n    ];\r\n    var ExtensionAPI = (function () {\r\n        function ExtensionAPI(ecInstance) {\r\n            each(availableMethods, function (methodName) {\r\n                this[methodName] = bind(ecInstance[methodName], ecInstance);\r\n            }, this);\r\n        }\r\n        return ExtensionAPI;\r\n    }());\n\n    var coordinateSystemCreators = {};\r\n    var CoordinateSystemManager = (function () {\r\n        function CoordinateSystemManager() {\r\n            this._coordinateSystems = [];\r\n        }\r\n        CoordinateSystemManager.prototype.create = function (ecModel, api) {\r\n            var coordinateSystems = [];\r\n            each(coordinateSystemCreators, function (creater, type) {\r\n                var list = creater.create(ecModel, api);\r\n                coordinateSystems = coordinateSystems.concat(list || []);\r\n            });\r\n            this._coordinateSystems = coordinateSystems;\r\n        };\r\n        CoordinateSystemManager.prototype.update = function (ecModel, api) {\r\n            each(this._coordinateSystems, function (coordSys) {\r\n                coordSys.update && coordSys.update(ecModel, api);\r\n            });\r\n        };\r\n        CoordinateSystemManager.prototype.getCoordinateSystems = function () {\r\n            return this._coordinateSystems.slice();\r\n        };\r\n        CoordinateSystemManager.register = function (type, creator) {\r\n            coordinateSystemCreators[type] = creator;\r\n        };\r\n        CoordinateSystemManager.get = function (type) {\r\n            return coordinateSystemCreators[type];\r\n        };\r\n        return CoordinateSystemManager;\r\n    }());\n\n    var QUERY_REG = /^(min|max)?(.+)$/;\r\n    var OptionManager = (function () {\r\n        function OptionManager(api) {\r\n            this._timelineOptions = [];\r\n            this._mediaList = [];\r\n            this._currentMediaIndices = [];\r\n            this._api = api;\r\n        }\r\n        OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\r\n            if (rawOption) {\r\n                each(normalizeToArray(rawOption.series), function (series) {\r\n                    series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\r\n                });\r\n                each(normalizeToArray(rawOption.dataset), function (dataset) {\r\n                    dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\r\n                });\r\n            }\r\n            rawOption = clone(rawOption);\r\n            var optionBackup = this._optionBackup;\r\n            var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\r\n            this._newBaseOption = newParsedOption.baseOption;\r\n            if (optionBackup) {\r\n                if (newParsedOption.timelineOptions.length) {\r\n                    optionBackup.timelineOptions = newParsedOption.timelineOptions;\r\n                }\r\n                if (newParsedOption.mediaList.length) {\r\n                    optionBackup.mediaList = newParsedOption.mediaList;\r\n                }\r\n                if (newParsedOption.mediaDefault) {\r\n                    optionBackup.mediaDefault = newParsedOption.mediaDefault;\r\n                }\r\n            }\r\n            else {\r\n                this._optionBackup = newParsedOption;\r\n            }\r\n        };\r\n        OptionManager.prototype.mountOption = function (isRecreate) {\r\n            var optionBackup = this._optionBackup;\r\n            this._timelineOptions = optionBackup.timelineOptions;\r\n            this._mediaList = optionBackup.mediaList;\r\n            this._mediaDefault = optionBackup.mediaDefault;\r\n            this._currentMediaIndices = [];\r\n            return clone(isRecreate\r\n                ? optionBackup.baseOption : this._newBaseOption);\r\n        };\r\n        OptionManager.prototype.getTimelineOption = function (ecModel) {\r\n            var option;\r\n            var timelineOptions = this._timelineOptions;\r\n            if (timelineOptions.length) {\r\n                var timelineModel = ecModel.getComponent('timeline');\r\n                if (timelineModel) {\r\n                    option = clone(timelineOptions[timelineModel.getCurrentIndex()]);\r\n                }\r\n            }\r\n            return option;\r\n        };\r\n        OptionManager.prototype.getMediaOption = function (ecModel) {\r\n            var ecWidth = this._api.getWidth();\r\n            var ecHeight = this._api.getHeight();\r\n            var mediaList = this._mediaList;\r\n            var mediaDefault = this._mediaDefault;\r\n            var indices = [];\r\n            var result = [];\r\n            if (!mediaList.length && !mediaDefault) {\r\n                return result;\r\n            }\r\n            for (var i = 0, len = mediaList.length; i < len; i++) {\r\n                if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\r\n                    indices.push(i);\r\n                }\r\n            }\r\n            if (!indices.length && mediaDefault) {\r\n                indices = [-1];\r\n            }\r\n            if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\r\n                result = map(indices, function (index) {\r\n                    return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\r\n                });\r\n            }\r\n            this._currentMediaIndices = indices;\r\n            return result;\r\n        };\r\n        return OptionManager;\r\n    }());\r\n    function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\r\n        var timelineOptions = [];\r\n        var mediaList = [];\r\n        var mediaDefault;\r\n        var baseOption;\r\n        var timelineOpt = rawOption.timeline;\r\n        if (rawOption.baseOption) {\r\n            baseOption = rawOption.baseOption;\r\n        }\r\n        if (timelineOpt || rawOption.options) {\r\n            baseOption = baseOption || {};\r\n            timelineOptions = (rawOption.options || []).slice();\r\n        }\r\n        if (rawOption.media) {\r\n            baseOption = baseOption || {};\r\n            var media = rawOption.media;\r\n            each(media, function (singleMedia) {\r\n                if (singleMedia && singleMedia.option) {\r\n                    if (singleMedia.query) {\r\n                        mediaList.push(singleMedia);\r\n                    }\r\n                    else if (!mediaDefault) {\r\n                        mediaDefault = singleMedia;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        if (!baseOption) {\r\n            baseOption = rawOption;\r\n        }\r\n        if (!baseOption.timeline) {\r\n            baseOption.timeline = timelineOpt;\r\n        }\r\n        each([baseOption].concat(timelineOptions)\r\n            .concat(map(mediaList, function (media) {\r\n            return media.option;\r\n        })), function (option) {\r\n            each(optionPreprocessorFuncs, function (preProcess) {\r\n                preProcess(option, isNew);\r\n            });\r\n        });\r\n        return {\r\n            baseOption: baseOption,\r\n            timelineOptions: timelineOptions,\r\n            mediaDefault: mediaDefault,\r\n            mediaList: mediaList\r\n        };\r\n    }\r\n    function applyMediaQuery(query, ecWidth, ecHeight) {\r\n        var realMap = {\r\n            width: ecWidth,\r\n            height: ecHeight,\r\n            aspectratio: ecWidth / ecHeight\r\n        };\r\n        var applicatable = true;\r\n        each(query, function (value, attr) {\r\n            var matched = attr.match(QUERY_REG);\r\n            if (!matched || !matched[1] || !matched[2]) {\r\n                return;\r\n            }\r\n            var operator = matched[1];\r\n            var realAttr = matched[2].toLowerCase();\r\n            if (!compare(realMap[realAttr], value, operator)) {\r\n                applicatable = false;\r\n            }\r\n        });\r\n        return applicatable;\r\n    }\r\n    function compare(real, expect, operator) {\r\n        if (operator === 'min') {\r\n            return real >= expect;\r\n        }\r\n        else if (operator === 'max') {\r\n            return real <= expect;\r\n        }\r\n        else {\r\n            return real === expect;\r\n        }\r\n    }\r\n    function indicesEquals(indices1, indices2) {\r\n        return indices1.join(',') === indices2.join(',');\r\n    }\n\n    var each$2 = each;\r\n    var isObject$1 = isObject;\r\n    var POSSIBLE_STYLES = [\r\n        'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n        'chordStyle', 'label', 'labelLine'\r\n    ];\r\n    function compatEC2ItemStyle(opt) {\r\n        var itemStyleOpt = opt && opt.itemStyle;\r\n        if (!itemStyleOpt) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\r\n            var styleName = POSSIBLE_STYLES[i];\r\n            var normalItemStyleOpt = itemStyleOpt.normal;\r\n            var emphasisItemStyleOpt = itemStyleOpt.emphasis;\r\n            if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].normal) {\r\n                    opt[styleName].normal = normalItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\r\n                }\r\n                normalItemStyleOpt[styleName] = null;\r\n            }\r\n            if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].emphasis) {\r\n                    opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\r\n                }\r\n                emphasisItemStyleOpt[styleName] = null;\r\n            }\r\n        }\r\n    }\r\n    function convertNormalEmphasis(opt, optType, useExtend) {\r\n        if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\r\n            var normalOpt = opt[optType].normal;\r\n            var emphasisOpt = opt[optType].emphasis;\r\n            if (normalOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\r\n                }\r\n                if (useExtend) {\r\n                    opt[optType].normal = opt[optType].emphasis = null;\r\n                    defaults(opt[optType], normalOpt);\r\n                }\r\n                else {\r\n                    opt[optType] = normalOpt;\r\n                }\r\n            }\r\n            if (emphasisOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\r\n                }\r\n                opt.emphasis = opt.emphasis || {};\r\n                opt.emphasis[optType] = emphasisOpt;\r\n                if (emphasisOpt.focus) {\r\n                    opt.emphasis.focus = emphasisOpt.focus;\r\n                }\r\n                if (emphasisOpt.blurScope) {\r\n                    opt.emphasis.blurScope = emphasisOpt.blurScope;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function removeEC3NormalStatus(opt) {\r\n        convertNormalEmphasis(opt, 'itemStyle');\r\n        convertNormalEmphasis(opt, 'lineStyle');\r\n        convertNormalEmphasis(opt, 'areaStyle');\r\n        convertNormalEmphasis(opt, 'label');\r\n        convertNormalEmphasis(opt, 'labelLine');\r\n        convertNormalEmphasis(opt, 'upperLabel');\r\n        convertNormalEmphasis(opt, 'edgeLabel');\r\n    }\r\n    function compatTextStyle(opt, propName) {\r\n        var labelOptSingle = isObject$1(opt) && opt[propName];\r\n        var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle;\r\n        if (textStyle) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\r\n            }\r\n            for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) {\r\n                var textPropName = TEXT_STYLE_OPTIONS[i];\r\n                if (textStyle.hasOwnProperty(textPropName)) {\r\n                    labelOptSingle[textPropName] = textStyle[textPropName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatEC3CommonStyles(opt) {\r\n        if (opt) {\r\n            removeEC3NormalStatus(opt);\r\n            compatTextStyle(opt, 'label');\r\n            opt.emphasis && compatTextStyle(opt.emphasis, 'label');\r\n        }\r\n    }\r\n    function processSeries(seriesOpt) {\r\n        if (!isObject$1(seriesOpt)) {\r\n            return;\r\n        }\r\n        compatEC2ItemStyle(seriesOpt);\r\n        removeEC3NormalStatus(seriesOpt);\r\n        compatTextStyle(seriesOpt, 'label');\r\n        compatTextStyle(seriesOpt, 'upperLabel');\r\n        compatTextStyle(seriesOpt, 'edgeLabel');\r\n        if (seriesOpt.emphasis) {\r\n            compatTextStyle(seriesOpt.emphasis, 'label');\r\n            compatTextStyle(seriesOpt.emphasis, 'upperLabel');\r\n            compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\r\n        }\r\n        var markPoint = seriesOpt.markPoint;\r\n        if (markPoint) {\r\n            compatEC2ItemStyle(markPoint);\r\n            compatEC3CommonStyles(markPoint);\r\n        }\r\n        var markLine = seriesOpt.markLine;\r\n        if (markLine) {\r\n            compatEC2ItemStyle(markLine);\r\n            compatEC3CommonStyles(markLine);\r\n        }\r\n        var markArea = seriesOpt.markArea;\r\n        if (markArea) {\r\n            compatEC3CommonStyles(markArea);\r\n        }\r\n        var data = seriesOpt.data;\r\n        if (seriesOpt.type === 'graph') {\r\n            data = data || seriesOpt.nodes;\r\n            var edgeData = seriesOpt.links || seriesOpt.edges;\r\n            if (edgeData && !isTypedArray(edgeData)) {\r\n                for (var i = 0; i < edgeData.length; i++) {\r\n                    compatEC3CommonStyles(edgeData[i]);\r\n                }\r\n            }\r\n            each(seriesOpt.categories, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        if (data && !isTypedArray(data)) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                compatEC3CommonStyles(data[i]);\r\n            }\r\n        }\r\n        markPoint = seriesOpt.markPoint;\r\n        if (markPoint && markPoint.data) {\r\n            var mpData = markPoint.data;\r\n            for (var i = 0; i < mpData.length; i++) {\r\n                compatEC3CommonStyles(mpData[i]);\r\n            }\r\n        }\r\n        markLine = seriesOpt.markLine;\r\n        if (markLine && markLine.data) {\r\n            var mlData = markLine.data;\r\n            for (var i = 0; i < mlData.length; i++) {\r\n                if (isArray(mlData[i])) {\r\n                    compatEC3CommonStyles(mlData[i][0]);\r\n                    compatEC3CommonStyles(mlData[i][1]);\r\n                }\r\n                else {\r\n                    compatEC3CommonStyles(mlData[i]);\r\n                }\r\n            }\r\n        }\r\n        if (seriesOpt.type === 'gauge') {\r\n            compatTextStyle(seriesOpt, 'axisLabel');\r\n            compatTextStyle(seriesOpt, 'title');\r\n            compatTextStyle(seriesOpt, 'detail');\r\n        }\r\n        else if (seriesOpt.type === 'treemap') {\r\n            convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\r\n            each(seriesOpt.levels, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        else if (seriesOpt.type === 'tree') {\r\n            removeEC3NormalStatus(seriesOpt.leaves);\r\n        }\r\n    }\r\n    function toArr(o) {\r\n        return isArray(o) ? o : o ? [o] : [];\r\n    }\r\n    function toObj(o) {\r\n        return (isArray(o) ? o[0] : o) || {};\r\n    }\r\n    function compatStyle (option, isTheme) {\r\n        each$2(toArr(option.series), function (seriesOpt) {\r\n            isObject$1(seriesOpt) && processSeries(seriesOpt);\r\n        });\r\n        var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\r\n        isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\r\n        each$2(axes, function (axisName) {\r\n            each$2(toArr(option[axisName]), function (axisOpt) {\r\n                if (axisOpt) {\r\n                    compatTextStyle(axisOpt, 'axisLabel');\r\n                    compatTextStyle(axisOpt.axisPointer, 'label');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.parallel), function (parallelOpt) {\r\n            var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\r\n            compatTextStyle(parallelAxisDefault, 'axisLabel');\r\n            compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\r\n        });\r\n        each$2(toArr(option.calendar), function (calendarOpt) {\r\n            convertNormalEmphasis(calendarOpt, 'itemStyle');\r\n            compatTextStyle(calendarOpt, 'dayLabel');\r\n            compatTextStyle(calendarOpt, 'monthLabel');\r\n            compatTextStyle(calendarOpt, 'yearLabel');\r\n        });\r\n        each$2(toArr(option.radar), function (radarOpt) {\r\n            compatTextStyle(radarOpt, 'name');\r\n            if (radarOpt.name && radarOpt.axisName == null) {\r\n                radarOpt.axisName = radarOpt.name;\r\n                delete radarOpt.name;\r\n                if (__DEV__) {\r\n                    deprecateLog('name property in radar component has been changed to axisName');\r\n                }\r\n            }\r\n            if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\r\n                radarOpt.axisNameGap = radarOpt.nameGap;\r\n                delete radarOpt.nameGap;\r\n                if (__DEV__) {\r\n                    deprecateLog('nameGap property in radar component has been changed to axisNameGap');\r\n                }\r\n            }\r\n        });\r\n        each$2(toArr(option.geo), function (geoOpt) {\r\n            if (isObject$1(geoOpt)) {\r\n                compatEC3CommonStyles(geoOpt);\r\n                each$2(toArr(geoOpt.regions), function (regionObj) {\r\n                    compatEC3CommonStyles(regionObj);\r\n                });\r\n            }\r\n        });\r\n        each$2(toArr(option.timeline), function (timelineOpt) {\r\n            compatEC3CommonStyles(timelineOpt);\r\n            convertNormalEmphasis(timelineOpt, 'label');\r\n            convertNormalEmphasis(timelineOpt, 'itemStyle');\r\n            convertNormalEmphasis(timelineOpt, 'controlStyle', true);\r\n            var data = timelineOpt.data;\r\n            isArray(data) && each(data, function (item) {\r\n                if (isObject(item)) {\r\n                    convertNormalEmphasis(item, 'label');\r\n                    convertNormalEmphasis(item, 'itemStyle');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.toolbox), function (toolboxOpt) {\r\n            convertNormalEmphasis(toolboxOpt, 'iconStyle');\r\n            each$2(toolboxOpt.feature, function (featureOpt) {\r\n                convertNormalEmphasis(featureOpt, 'iconStyle');\r\n            });\r\n        });\r\n        compatTextStyle(toObj(option.axisPointer), 'label');\r\n        compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\r\n    }\n\n    function get(opt, path) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        for (var i = 0; i < pathArr.length; i++) {\r\n            obj = obj && obj[pathArr[i]];\r\n            if (obj == null) {\r\n                break;\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n    function set(opt, path, val, overwrite) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        var key;\r\n        var i = 0;\r\n        for (; i < pathArr.length - 1; i++) {\r\n            key = pathArr[i];\r\n            if (obj[key] == null) {\r\n                obj[key] = {};\r\n            }\r\n            obj = obj[key];\r\n        }\r\n        if (overwrite || obj[pathArr[i]] == null) {\r\n            obj[pathArr[i]] = val;\r\n        }\r\n    }\r\n    function compatLayoutProperties(option) {\r\n        option && each(LAYOUT_PROPERTIES, function (prop) {\r\n            if (prop[0] in option && !(prop[1] in option)) {\r\n                option[prop[1]] = option[prop[0]];\r\n            }\r\n        });\r\n    }\r\n    var LAYOUT_PROPERTIES = [\r\n        ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n    ];\r\n    var COMPATITABLE_COMPONENTS = [\r\n        'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n    ];\r\n    var BAR_ITEM_STYLE_MAP = [\r\n        ['borderRadius', 'barBorderRadius'],\r\n        ['borderColor', 'barBorderColor'],\r\n        ['borderWidth', 'barBorderWidth']\r\n    ];\r\n    function compatBarItemStyle(option) {\r\n        var itemStyle = option && option.itemStyle;\r\n        if (itemStyle) {\r\n            for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\r\n                var oldName = BAR_ITEM_STYLE_MAP[i][1];\r\n                var newName = BAR_ITEM_STYLE_MAP[i][0];\r\n                if (itemStyle[oldName] != null) {\r\n                    itemStyle[newName] = itemStyle[oldName];\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog(oldName, newName);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatPieLabel(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\r\n            }\r\n            option.edgeDistance = option.margin;\r\n        }\r\n    }\r\n    function compatSunburstState(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.downplay && !option.blur) {\r\n            option.blur = option.downplay;\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('downplay', 'blur', 'sunburst');\r\n            }\r\n        }\r\n    }\r\n    function compatGraphFocus(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.focusNodeAdjacency != null) {\r\n            option.emphasis = option.emphasis || {};\r\n            if (option.emphasis.focus == null) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\r\n                }\r\n                option.emphasis.focus = 'adjacency';\r\n            }\r\n        }\r\n    }\r\n    function traverseTree(data, cb) {\r\n        if (data) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                cb(data[i]);\r\n                data[i] && traverseTree(data[i].children, cb);\r\n            }\r\n        }\r\n    }\r\n    function backwardCompat (option, isTheme) {\r\n        compatStyle(option, isTheme);\r\n        option.series = normalizeToArray(option.series);\r\n        each(option.series, function (seriesOpt) {\r\n            if (!isObject(seriesOpt)) {\r\n                return;\r\n            }\r\n            var seriesType = seriesOpt.type;\r\n            if (seriesType === 'line') {\r\n                if (seriesOpt.clipOverflow != null) {\r\n                    seriesOpt.clip = seriesOpt.clipOverflow;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clipOverflow', 'clip', 'line');\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'pie' || seriesType === 'gauge') {\r\n                if (seriesOpt.clockWise != null) {\r\n                    seriesOpt.clockwise = seriesOpt.clockWise;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clockWise', 'clockwise');\r\n                    }\r\n                }\r\n                compatPieLabel(seriesOpt.label);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        compatPieLabel(data[i]);\r\n                    }\r\n                }\r\n                if (seriesOpt.hoverOffset != null) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (seriesOpt.emphasis.scaleSize = null) {\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\r\n                        }\r\n                        seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'gauge') {\r\n                var pointerColor = get(seriesOpt, 'pointer.color');\r\n                pointerColor != null\r\n                    && set(seriesOpt, 'itemStyle.color', pointerColor);\r\n            }\r\n            else if (seriesType === 'bar') {\r\n                compatBarItemStyle(seriesOpt);\r\n                compatBarItemStyle(seriesOpt.backgroundStyle);\r\n                compatBarItemStyle(seriesOpt.emphasis);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        if (typeof data[i] === 'object') {\r\n                            compatBarItemStyle(data[i]);\r\n                            compatBarItemStyle(data[i] && data[i].emphasis);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'sunburst') {\r\n                var highlightPolicy = seriesOpt.highlightPolicy;\r\n                if (highlightPolicy) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (!seriesOpt.emphasis.focus) {\r\n                        seriesOpt.emphasis.focus = highlightPolicy;\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\r\n                        }\r\n                    }\r\n                }\r\n                compatSunburstState(seriesOpt);\r\n                traverseTree(seriesOpt.data, compatSunburstState);\r\n            }\r\n            else if (seriesType === 'graph' || seriesType === 'sankey') {\r\n                compatGraphFocus(seriesOpt);\r\n            }\r\n            else if (seriesType === 'map') {\r\n                if (seriesOpt.mapType && !seriesOpt.map) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('mapType', 'map', 'map');\r\n                    }\r\n                    seriesOpt.map = seriesOpt.mapType;\r\n                }\r\n                if (seriesOpt.mapLocation) {\r\n                    if (__DEV__) {\r\n                        deprecateLog('`mapLocation` is not used anymore.');\r\n                    }\r\n                    defaults(seriesOpt, seriesOpt.mapLocation);\r\n                }\r\n            }\r\n            if (seriesOpt.hoverAnimation != null) {\r\n                seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\r\n                    }\r\n                    seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\r\n                }\r\n            }\r\n            compatLayoutProperties(seriesOpt);\r\n        });\r\n        if (option.dataRange) {\r\n            option.visualMap = option.dataRange;\r\n        }\r\n        each(COMPATITABLE_COMPONENTS, function (componentName) {\r\n            var options = option[componentName];\r\n            if (options) {\r\n                if (!isArray(options)) {\r\n                    options = [options];\r\n                }\r\n                each(options, function (option) {\r\n                    compatLayoutProperties(option);\r\n                });\r\n            }\r\n        });\r\n    }\n\n    function dataStack (ecModel) {\r\n        var stackInfoMap = createHashMap();\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var stack = seriesModel.get('stack');\r\n            if (stack) {\r\n                var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\r\n                var data = seriesModel.getData();\r\n                var stackInfo = {\r\n                    stackResultDimension: data.getCalculationInfo('stackResultDimension'),\r\n                    stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\r\n                    stackedDimension: data.getCalculationInfo('stackedDimension'),\r\n                    stackedByDimension: data.getCalculationInfo('stackedByDimension'),\r\n                    isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\r\n                    data: data,\r\n                    seriesModel: seriesModel\r\n                };\r\n                if (!stackInfo.stackedDimension\r\n                    || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\r\n                    return;\r\n                }\r\n                stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\r\n                stackInfoList.push(stackInfo);\r\n            }\r\n        });\r\n        stackInfoMap.each(calculateStack);\r\n    }\r\n    function calculateStack(stackInfoList) {\r\n        each(stackInfoList, function (targetStackInfo, idxInStack) {\r\n            var resultVal = [];\r\n            var resultNaN = [NaN, NaN];\r\n            var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\r\n            var targetData = targetStackInfo.data;\r\n            var isStackedByIndex = targetStackInfo.isStackedByIndex;\r\n            var newData = targetData.map(dims, function (v0, v1, dataIndex) {\r\n                var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex);\r\n                if (isNaN(sum)) {\r\n                    return resultNaN;\r\n                }\r\n                var byValue;\r\n                var stackedDataRawIndex;\r\n                if (isStackedByIndex) {\r\n                    stackedDataRawIndex = targetData.getRawIndex(dataIndex);\r\n                }\r\n                else {\r\n                    byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\r\n                }\r\n                var stackedOver = NaN;\r\n                for (var j = idxInStack - 1; j >= 0; j--) {\r\n                    var stackInfo = stackInfoList[j];\r\n                    if (!isStackedByIndex) {\r\n                        stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\r\n                    }\r\n                    if (stackedDataRawIndex >= 0) {\r\n                        var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);\r\n                        if ((sum >= 0 && val > 0)\r\n                            || (sum <= 0 && val < 0)) {\r\n                            sum += val;\r\n                            stackedOver = val;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                resultVal[0] = sum;\r\n                resultVal[1] = stackedOver;\r\n                return resultVal;\r\n            });\r\n            targetData.hostModel.setData(newData);\r\n            targetStackInfo.data = newData;\r\n        });\r\n    }\n\n    var _a, _b, _c;\r\n    var providerMethods;\r\n    var mountMethods;\r\n    var DefaultDataProvider = (function () {\r\n        function DefaultDataProvider(sourceParam, dimSize) {\r\n            var source = !(sourceParam instanceof Source)\r\n                ? Source.seriesDataToSource(sourceParam)\r\n                : sourceParam;\r\n            this._source = source;\r\n            var data = this._data = source.data;\r\n            if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                if (__DEV__) {\r\n                    if (dimSize == null) {\r\n                        throw new Error('Typed array data must specify dimension size');\r\n                    }\r\n                }\r\n                this._offset = 0;\r\n                this._dimSize = dimSize;\r\n                this._data = data;\r\n            }\r\n            mountMethods(this, data, source);\r\n        }\r\n        DefaultDataProvider.prototype.getSource = function () {\r\n            return this._source;\r\n        };\r\n        DefaultDataProvider.prototype.count = function () {\r\n            return 0;\r\n        };\r\n        DefaultDataProvider.prototype.getItem = function (idx, out) {\r\n            return;\r\n        };\r\n        DefaultDataProvider.prototype.appendData = function (newData) {\r\n        };\r\n        DefaultDataProvider.prototype.clean = function () {\r\n        };\r\n        DefaultDataProvider.protoInitialize = (function () {\r\n            var proto = DefaultDataProvider.prototype;\r\n            proto.pure = false;\r\n            proto.persistent = true;\r\n        })();\r\n        DefaultDataProvider.internalField = (function () {\r\n            var _a;\r\n            mountMethods = function (provider, data, source) {\r\n                var sourceFormat = source.sourceFormat;\r\n                var seriesLayoutBy = source.seriesLayoutBy;\r\n                var startIndex = source.startIndex;\r\n                var dimsDef = source.dimensionsDefine;\r\n                var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n                if (__DEV__) {\r\n                    assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\r\n                }\r\n                extend(provider, methods);\r\n                if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                    provider.getItem = getItemForTypedArray;\r\n                    provider.count = countForTypedArray;\r\n                }\r\n                else {\r\n                    var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\r\n                    provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\r\n                    var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\r\n                    provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\r\n                }\r\n            };\r\n            var getItemForTypedArray = function (idx, out) {\r\n                idx = idx - this._offset;\r\n                out = out || [];\r\n                var offset = this._dimSize * idx;\r\n                for (var i = 0; i < this._dimSize; i++) {\r\n                    out[i] = this._data[offset + i];\r\n                }\r\n                return out;\r\n            };\r\n            var countForTypedArray = function () {\r\n                return this._data ? (this._data.length / this._dimSize) : 0;\r\n            };\r\n            providerMethods = (_a = {},\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\r\n                    pure: true,\r\n                    appendData: function () {\r\n                        throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_OBJECT_ROWS] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        var data = this._data;\r\n                        each(newData, function (newCol, key) {\r\n                            var oldCol = data[key] || (data[key] = []);\r\n                            for (var i = 0; i < (newCol || []).length; i++) {\r\n                                oldCol.push(newCol[i]);\r\n                            }\r\n                        });\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_ORIGINAL] = {\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_TYPED_ARRAY] = {\r\n                    persistent: false,\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        if (__DEV__) {\r\n                            assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\r\n                        }\r\n                        this._data = newData;\r\n                    },\r\n                    clean: function () {\r\n                        this._offset += this.count();\r\n                        this._data = null;\r\n                    }\r\n                },\r\n                _a);\r\n            function appendDataSimply(newData) {\r\n                for (var i = 0; i < newData.length; i++) {\r\n                    this._data.push(newData[i]);\r\n                }\r\n            }\r\n        })();\r\n        return DefaultDataProvider;\r\n    }());\r\n    var getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n        return rawData[idx];\r\n    };\r\n    var rawSourceItemGetterMap = (_a = {},\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\r\n            return rawData[idx + startIndex];\r\n        },\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx) {\r\n            idx += startIndex;\r\n            var item = [];\r\n            var data = rawData;\r\n            for (var i = 0; i < data.length; i++) {\r\n                var row = data[i];\r\n                item.push(row ? row[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply,\r\n        _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx) {\r\n            var item = [];\r\n            for (var i = 0; i < dimsDef.length; i++) {\r\n                var col = rawData[dimsDef[i].name];\r\n                item.push(col ? col[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply,\r\n        _a);\r\n    function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var countSimply = function (rawData, startIndex, dimsDef) {\r\n        return rawData.length;\r\n    };\r\n    var rawSourceDataCounterMap = (_b = {},\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\r\n            return Math.max(0, rawData.length - startIndex);\r\n        },\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\r\n            var row = rawData[0];\r\n            return row ? Math.max(0, row.length - startIndex) : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply,\r\n        _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\r\n            var dimName = dimsDef[0].name;\r\n            var col = rawData[dimName];\r\n            return col ? col.length : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_ORIGINAL] = countSimply,\r\n        _b);\r\n    function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n        return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n    };\r\n    var rawSourceValueGetterMap = (_c = {},\r\n        _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, dimName) {\r\n            return dimIndex != null ? dataItem[dimName] : dataItem;\r\n        },\r\n        _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, dimName) {\r\n            var value = getDataItemValue(dataItem);\r\n            return (dimIndex == null || !(value instanceof Array))\r\n                ? value\r\n                : value[dimIndex];\r\n        },\r\n        _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply,\r\n        _c);\r\n    function getRawSourceValueGetter(sourceFormat) {\r\n        var method = rawSourceValueGetterMap[sourceFormat];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get value on \"' + sourceFormat + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    function getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n        return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            ? sourceFormat + '_' + seriesLayoutBy\r\n            : sourceFormat;\r\n    }\r\n    function retrieveRawValue(data, dataIndex, dim) {\r\n        if (!data) {\r\n            return;\r\n        }\r\n        var dataItem = data.getRawDataItem(dataIndex);\r\n        if (dataItem == null) {\r\n            return;\r\n        }\r\n        var sourceFormat = data.getProvider().getSource().sourceFormat;\r\n        var dimName;\r\n        var dimIndex;\r\n        var dimInfo = data.getDimensionInfo(dim);\r\n        if (dimInfo) {\r\n            dimName = dimInfo.name;\r\n            dimIndex = dimInfo.index;\r\n        }\r\n        return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, dimName);\r\n    }\n\n    var DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\n    var DataFormatMixin = (function () {\r\n        function DataFormatMixin() {\r\n        }\r\n        DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\r\n            var data = this.getData(dataType);\r\n            var rawValue = this.getRawValue(dataIndex, dataType);\r\n            var rawDataIndex = data.getRawIndex(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            var itemOpt = data.getRawDataItem(dataIndex);\r\n            var style = data.getItemVisual(dataIndex, 'style');\r\n            var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\r\n            var borderColor = style && style.stroke;\r\n            var mainType = this.mainType;\r\n            var isSeries = mainType === 'series';\r\n            var userOutput = data.userOutput;\r\n            return {\r\n                componentType: mainType,\r\n                componentSubType: this.subType,\r\n                componentIndex: this.componentIndex,\r\n                seriesType: isSeries ? this.subType : null,\r\n                seriesIndex: this.seriesIndex,\r\n                seriesId: isSeries ? this.id : null,\r\n                seriesName: isSeries ? this.name : null,\r\n                name: name,\r\n                dataIndex: rawDataIndex,\r\n                data: itemOpt,\r\n                dataType: dataType,\r\n                value: rawValue,\r\n                color: color,\r\n                borderColor: borderColor,\r\n                dimensionNames: userOutput ? userOutput.dimensionNames : null,\r\n                encode: userOutput ? userOutput.encode : null,\r\n                $vars: ['seriesName', 'name', 'value']\r\n            };\r\n        };\r\n        DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\r\n            status = status || 'normal';\r\n            var data = this.getData(dataType);\r\n            var params = this.getDataParams(dataIndex, dataType);\r\n            if (extendParams) {\r\n                extend(params, extendParams);\r\n            }\r\n            if (labelDimIndex != null && (params.value instanceof Array)) {\r\n                params.value = params.value[labelDimIndex];\r\n            }\r\n            if (!formatter) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                formatter = itemModel.get(status === 'normal'\r\n                    ? ['label', 'formatter']\r\n                    : [status, 'label', 'formatter']);\r\n            }\r\n            if (typeof formatter === 'function') {\r\n                params.status = status;\r\n                params.dimensionIndex = labelDimIndex;\r\n                return formatter(params);\r\n            }\r\n            else if (typeof formatter === 'string') {\r\n                var str = formatTpl(formatter, params);\r\n                return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\r\n                    var len = dim.length;\r\n                    if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\r\n                        dim = +dim.slice(1, len - 1);\r\n                    }\r\n                    return retrieveRawValue(data, dataIndex, dim);\r\n                });\r\n            }\r\n        };\r\n        DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\r\n            return retrieveRawValue(this.getData(dataType), idx);\r\n        };\r\n        DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType, renderMode, order) {\r\n            return;\r\n        };\r\n        return DataFormatMixin;\r\n    }());\n\n    function createTask(define) {\r\n        return new Task(define);\r\n    }\r\n    var Task = (function () {\r\n        function Task(define) {\r\n            define = define || {};\r\n            this._reset = define.reset;\r\n            this._plan = define.plan;\r\n            this._count = define.count;\r\n            this._onDirty = define.onDirty;\r\n            this._dirty = true;\r\n        }\r\n        Task.prototype.perform = function (performArgs) {\r\n            var upTask = this._upstream;\r\n            var skip = performArgs && performArgs.skip;\r\n            if (this._dirty && upTask) {\r\n                var context = this.context;\r\n                context.data = context.outputData = upTask.context.outputData;\r\n            }\r\n            if (this.__pipeline) {\r\n                this.__pipeline.currentTask = this;\r\n            }\r\n            var planResult;\r\n            if (this._plan && !skip) {\r\n                planResult = this._plan(this.context);\r\n            }\r\n            var lastModBy = normalizeModBy(this._modBy);\r\n            var lastModDataCount = this._modDataCount || 0;\r\n            var modBy = normalizeModBy(performArgs && performArgs.modBy);\r\n            var modDataCount = performArgs && performArgs.modDataCount || 0;\r\n            if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\r\n                planResult = 'reset';\r\n            }\r\n            function normalizeModBy(val) {\r\n                !(val >= 1) && (val = 1);\r\n                return val;\r\n            }\r\n            var forceFirstProgress;\r\n            if (this._dirty || planResult === 'reset') {\r\n                this._dirty = false;\r\n                forceFirstProgress = this._doReset(skip);\r\n            }\r\n            this._modBy = modBy;\r\n            this._modDataCount = modDataCount;\r\n            var step = performArgs && performArgs.step;\r\n            if (upTask) {\r\n                if (__DEV__) {\r\n                    assert(upTask._outputDueEnd != null);\r\n                }\r\n                this._dueEnd = upTask._outputDueEnd;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(!this._progress || this._count);\r\n                }\r\n                this._dueEnd = this._count ? this._count(this.context) : Infinity;\r\n            }\r\n            if (this._progress) {\r\n                var start = this._dueIndex;\r\n                var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\r\n                if (!skip && (forceFirstProgress || start < end)) {\r\n                    var progress = this._progress;\r\n                    if (isArray(progress)) {\r\n                        for (var i = 0; i < progress.length; i++) {\r\n                            this._doProgress(progress[i], start, end, modBy, modDataCount);\r\n                        }\r\n                    }\r\n                    else {\r\n                        this._doProgress(progress, start, end, modBy, modDataCount);\r\n                    }\r\n                }\r\n                this._dueIndex = end;\r\n                var outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : end;\r\n                if (__DEV__) {\r\n                    assert(outputDueEnd >= this._outputDueEnd);\r\n                }\r\n                this._outputDueEnd = outputDueEnd;\r\n            }\r\n            else {\r\n                this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : this._dueEnd;\r\n            }\r\n            return this.unfinished();\r\n        };\r\n        Task.prototype.dirty = function () {\r\n            this._dirty = true;\r\n            this._onDirty && this._onDirty(this.context);\r\n        };\r\n        Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\r\n            iterator.reset(start, end, modBy, modDataCount);\r\n            this._callingProgress = progress;\r\n            this._callingProgress({\r\n                start: start, end: end, count: end - start, next: iterator.next\r\n            }, this.context);\r\n        };\r\n        Task.prototype._doReset = function (skip) {\r\n            this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\r\n            this._settedOutputEnd = null;\r\n            var progress;\r\n            var forceFirstProgress;\r\n            if (!skip && this._reset) {\r\n                progress = this._reset(this.context);\r\n                if (progress && progress.progress) {\r\n                    forceFirstProgress = progress.forceFirstProgress;\r\n                    progress = progress.progress;\r\n                }\r\n                if (isArray(progress) && !progress.length) {\r\n                    progress = null;\r\n                }\r\n            }\r\n            this._progress = progress;\r\n            this._modBy = this._modDataCount = null;\r\n            var downstream = this._downstream;\r\n            downstream && downstream.dirty();\r\n            return forceFirstProgress;\r\n        };\r\n        Task.prototype.unfinished = function () {\r\n            return this._progress && this._dueIndex < this._dueEnd;\r\n        };\r\n        Task.prototype.pipe = function (downTask) {\r\n            if (__DEV__) {\r\n                assert(downTask && !downTask._disposed && downTask !== this);\r\n            }\r\n            if (this._downstream !== downTask || this._dirty) {\r\n                this._downstream = downTask;\r\n                downTask._upstream = this;\r\n                downTask.dirty();\r\n            }\r\n        };\r\n        Task.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            this._upstream && (this._upstream._downstream = null);\r\n            this._downstream && (this._downstream._upstream = null);\r\n            this._dirty = false;\r\n            this._disposed = true;\r\n        };\r\n        Task.prototype.getUpstream = function () {\r\n            return this._upstream;\r\n        };\r\n        Task.prototype.getDownstream = function () {\r\n            return this._downstream;\r\n        };\r\n        Task.prototype.setOutputEnd = function (end) {\r\n            this._outputDueEnd = this._settedOutputEnd = end;\r\n        };\r\n        return Task;\r\n    }());\r\n    var iterator = (function () {\r\n        var end;\r\n        var current;\r\n        var modBy;\r\n        var modDataCount;\r\n        var winCount;\r\n        var it = {\r\n            reset: function (s, e, sStep, sCount) {\r\n                current = s;\r\n                end = e;\r\n                modBy = sStep;\r\n                modDataCount = sCount;\r\n                winCount = Math.ceil(modDataCount / modBy);\r\n                it.next = (modBy > 1 && modDataCount > 0) ? modNext : sequentialNext;\r\n            }\r\n        };\r\n        return it;\r\n        function sequentialNext() {\r\n            return current < end ? current++ : null;\r\n        }\r\n        function modNext() {\r\n            var dataIndex = (current % winCount) * modBy + Math.ceil(current / winCount);\r\n            var result = current >= end\r\n                ? null\r\n                : dataIndex < modDataCount\r\n                    ? dataIndex\r\n                    : current;\r\n            current++;\r\n            return result;\r\n        }\r\n    })();\n\n    function parseDataValue(value, opt) {\r\n        var dimType = opt && opt.type;\r\n        if (dimType === 'ordinal') {\r\n            var ordinalMeta = opt && opt.ordinalMeta;\r\n            return ordinalMeta\r\n                ? ordinalMeta.parseAndCollect(value)\r\n                : value;\r\n        }\r\n        if (dimType === 'time'\r\n            && typeof value !== 'number'\r\n            && value != null\r\n            && value !== '-') {\r\n            value = +parseDate(value);\r\n        }\r\n        return (value == null || value === '')\r\n            ? NaN\r\n            : +value;\r\n    }\r\n    var valueParserMap = createHashMap({\r\n        'number': function (val) {\r\n            return parseFloat(val);\r\n        },\r\n        'time': function (val) {\r\n            return +parseDate(val);\r\n        },\r\n        'trim': function (val) {\r\n            return typeof val === 'string' ? trim(val) : val;\r\n        }\r\n    });\n\n    var ExternalSource = (function () {\r\n        function ExternalSource() {\r\n        }\r\n        ExternalSource.prototype.getDimensionInfo = function (dim) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getDimensionInfoAll = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getRawDataItem = function (dataIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getRawHeaderItem = function (dataIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.count = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveItemValue = function (rawItem, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.convertDataValue = function (rawVal, dimInfo) {\r\n            return parseDataValue(rawVal, dimInfo);\r\n        };\r\n        return ExternalSource;\r\n    }());\r\n    function createExternalSource(data, sourceFormat, dimsDef, sourceHeaderCount) {\r\n        var extSource = new ExternalSource();\r\n        extSource.data = data;\r\n        extSource.sourceFormat = sourceFormat;\r\n        extSource.sourceHeaderCount = sourceHeaderCount;\r\n        var dimensions = [];\r\n        var dimsByName = {};\r\n        each(dimsDef, function (dimDef, idx) {\r\n            var name = dimDef.name;\r\n            var dimDefExt = {\r\n                index: idx,\r\n                name: name,\r\n                displayName: dimDef.displayName\r\n            };\r\n            dimensions.push(dimDefExt);\r\n            if (name != null) {\r\n                assert(!hasOwn(dimsByName, name), 'dimension name \"' + name + '\" duplicated.');\r\n                dimsByName[name] = dimDefExt;\r\n            }\r\n        });\r\n        var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        extSource.getRawDataItem = bind(rawItemGetter, null, data, sourceHeaderCount, dimensions);\r\n        extSource.getRawHeaderItem = function (dataIndex) {\r\n            if (dataIndex < sourceHeaderCount) {\r\n                return rawItemGetter(data, 0, dimensions, dataIndex);\r\n            }\r\n        };\r\n        var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\r\n        var rawValueGetter = getRawSourceValueGetter(sourceFormat);\r\n        extSource.retrieveItemValue = function (rawItem, dimIndex) {\r\n            if (rawItem == null) {\r\n                return;\r\n            }\r\n            var dimDef = dimensions[dimIndex];\r\n            if (dimDef) {\r\n                return rawValueGetter(rawItem, dimIndex, dimDef.name);\r\n            }\r\n        };\r\n        extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\r\n        extSource.getDimensionInfoAll = bind(getDimensionInfoAll, null, dimensions);\r\n        return extSource;\r\n    }\r\n    function getDimensionInfo(dimensions, dimsByName, dim) {\r\n        if (dim == null) {\r\n            return;\r\n        }\r\n        if (typeof dim === 'number'\r\n            || (!isNaN(dim) && !hasOwn(dimsByName, dim))) {\r\n            return dimensions[dim];\r\n        }\r\n        else if (hasOwn(dimsByName, dim)) {\r\n            return dimsByName[dim];\r\n        }\r\n    }\r\n    function getDimensionInfoAll(dimensions) {\r\n        return dimensions;\r\n    }\r\n    var externalTransformMap = createHashMap();\r\n    function registerExternalTransform(externalTransform) {\r\n        externalTransform = clone(externalTransform);\r\n        var type = externalTransform.type;\r\n        assert(type, 'Must have a `type` when `registerTransform`.');\r\n        var typeParsed = type.split(':');\r\n        assert(typeParsed.length === 2, 'Name must include namespace like \"ns:regression\".');\r\n        if (typeParsed[0] === 'echarts') {\r\n            type = typeParsed[1];\r\n        }\r\n        externalTransformMap.set(type, externalTransform);\r\n    }\r\n    function applyDataTransform(rawTransOption, sourceList, infoForPrint) {\r\n        var pipedTransOption = normalizeToArray(rawTransOption);\r\n        for (var i = 0, len = pipedTransOption.length; i < len; i++) {\r\n            var transOption = pipedTransOption[i];\r\n            var isFinal = i === len - 1;\r\n            sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, isFinal);\r\n            if (!isFinal) {\r\n                sourceList.length = Math.max(sourceList.length, 1);\r\n            }\r\n        }\r\n        return sourceList;\r\n    }\r\n    function applySingleDataTransform(rawTransOption, upSourceList, infoForPrint, isFinal) {\r\n        assert(upSourceList.length, 'Must have at least one upstream dataset.');\r\n        var transOption = rawTransOption;\r\n        var transType = transOption.type;\r\n        var externalTransform = externalTransformMap.get(transType);\r\n        assert(externalTransform, 'Can not find transform on type \"' + transType + '\".');\r\n        var sourceList = map(upSourceList, function (source) {\r\n            return createExternalSource(source.data, source.sourceFormat, source.dimensionsDefine, source.startIndex);\r\n        });\r\n        var resultList = normalizeToArray(externalTransform.transform({\r\n            source: sourceList[0],\r\n            sourceList: sourceList,\r\n            config: clone(transOption.config)\r\n        }));\r\n        if (__DEV__) {\r\n            if (isFinal && transOption.print) {\r\n                var printStrArr = map(resultList, function (extSource) {\r\n                    return [\r\n                        '--- datasetIndex: ' + infoForPrint.datasetIndex + '---',\r\n                        '- transform result data:',\r\n                        makePrintable(extSource.data),\r\n                        '- transform result dimensions:',\r\n                        makePrintable(extSource.dimensions),\r\n                        '- transform result sourceHeader: ' + extSource.sourceHeader,\r\n                        '------'\r\n                    ].join('\\n');\r\n                }).join('\\n');\r\n                consoleLog(printStrArr);\r\n            }\r\n        }\r\n        return map(resultList, function (result) {\r\n            assert(isObject(result), 'A transform should not return some empty results.');\r\n            assert(isObject(result.data) || isArrayLike(result.data), 'Result data should be object or array in data transform.');\r\n            var resultMetaRawOption = inheritSourceMetaRawOption({\r\n                parent: upSourceList[0].metaRawOption,\r\n                thisNew: {\r\n                    seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\r\n                    sourceHeader: result.sourceHeader,\r\n                    dimensions: result.dimensions\r\n                }\r\n            });\r\n            return createSource(result.data, resultMetaRawOption, null, null);\r\n        });\r\n    }\n\n    var SourceManager = (function () {\r\n        function SourceManager(sourceHost) {\r\n            this._sourceList = [];\r\n            this._upstreamSignList = [];\r\n            this._versionSignBase = 0;\r\n            this._sourceHost = sourceHost;\r\n        }\r\n        SourceManager.prototype.dirty = function () {\r\n            this._setLocalSource([], []);\r\n        };\r\n        SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\r\n            this._sourceList = sourceList;\r\n            this._upstreamSignList = upstreamSignList;\r\n            this._versionSignBase++;\r\n            if (this._versionSignBase > 9e10) {\r\n                this._versionSignBase = 0;\r\n            }\r\n        };\r\n        SourceManager.prototype._getVersionSign = function () {\r\n            return this._sourceHost.uid + '_' + this._versionSignBase;\r\n        };\r\n        SourceManager.prototype.prepareSource = function () {\r\n            if (this._isDirty()) {\r\n                this._createSource();\r\n            }\r\n        };\r\n        SourceManager.prototype._createSource = function () {\r\n            this._setLocalSource([], []);\r\n            var sourceHost = this._sourceHost;\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            var hasUpstream = !!upSourceMgrList.length;\r\n            var resultSourceList;\r\n            var upstreamSignList;\r\n            if (isSeries(sourceHost)) {\r\n                var seriesModel = sourceHost;\r\n                var data = void 0;\r\n                var sourceFormat = void 0;\r\n                var upSource = void 0;\r\n                if (hasUpstream) {\r\n                    var upSourceMgr = upSourceMgrList[0];\r\n                    upSourceMgr.prepareSource();\r\n                    upSource = upSourceMgr.getSource();\r\n                    data = upSource.data;\r\n                    sourceFormat = upSource.sourceFormat;\r\n                    upstreamSignList = [upSourceMgr._getVersionSign()];\r\n                }\r\n                else {\r\n                    data = seriesModel.get('data', true);\r\n                    sourceFormat = isTypedArray(data)\r\n                        ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\r\n                    upstreamSignList = [];\r\n                }\r\n                var thisMetaRawOption = inheritSourceMetaRawOption({\r\n                    parent: upSource ? upSource.metaRawOption : null,\r\n                    thisNew: this._createSourceMetaRawOption()\r\n                });\r\n                resultSourceList = [createSource(data, thisMetaRawOption, sourceFormat, seriesModel.get('encode', true))];\r\n            }\r\n            else {\r\n                var datasetModel = sourceHost;\r\n                if (hasUpstream) {\r\n                    var result = this._applyTransform(upSourceMgrList);\r\n                    resultSourceList = result.sourceList;\r\n                    upstreamSignList = result.upstreamSignList;\r\n                }\r\n                else {\r\n                    var sourceData = datasetModel.get('source', true);\r\n                    resultSourceList = [createSource(sourceData, this._createSourceMetaRawOption(), null, null)];\r\n                    upstreamSignList = [];\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                assert(resultSourceList && upstreamSignList);\r\n            }\r\n            this._setLocalSource(resultSourceList, upstreamSignList);\r\n        };\r\n        SourceManager.prototype._applyTransform = function (upMgrList) {\r\n            var datasetModel = this._sourceHost;\r\n            var transformOption = datasetModel.get('transform', true);\r\n            var fromTransformResult = datasetModel.get('fromTransformResult', true);\r\n            var sourceList;\r\n            var upstreamSignList;\r\n            if (transformOption) {\r\n                var upSourceList_1 = [];\r\n                upstreamSignList = [];\r\n                each(upMgrList, function (upMgr) {\r\n                    upMgr.prepareSource();\r\n                    upSourceList_1.push(upMgr.getSource());\r\n                    upstreamSignList.push(upMgr._getVersionSign());\r\n                });\r\n                sourceList = applyDataTransform(transformOption, upSourceList_1, { datasetIndex: datasetModel.componentIndex });\r\n            }\r\n            else if (fromTransformResult != null) {\r\n                if (upMgrList.length !== 1) {\r\n                    var errMsg = '';\r\n                    if (__DEV__) {\r\n                        errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n                var upMgr = upMgrList[0];\r\n                upMgr.prepareSource();\r\n                var upSource = upMgr.getSource(fromTransformResult);\r\n                upstreamSignList = [upMgr._getVersionSign()];\r\n                sourceList = [cloneSourceShallow(upSource)];\r\n            }\r\n            return { sourceList: sourceList, upstreamSignList: upstreamSignList };\r\n        };\r\n        SourceManager.prototype._isDirty = function () {\r\n            var sourceList = this._sourceList;\r\n            if (!sourceList.length) {\r\n                return true;\r\n            }\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            for (var i = 0; i < upSourceMgrList.length; i++) {\r\n                var upSrcMgr = upSourceMgrList[i];\r\n                if (upSrcMgr._isDirty()\r\n                    || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\r\n                    return true;\r\n                }\r\n            }\r\n        };\r\n        SourceManager.prototype.getSource = function (sourceIndex) {\r\n            return this._sourceList[sourceIndex || 0];\r\n        };\r\n        SourceManager.prototype._getUpstreamSourceManagers = function () {\r\n            var sourceHost = this._sourceHost;\r\n            if (isSeries(sourceHost)) {\r\n                var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\r\n                return !datasetModel ? [] : [datasetModel.getSourceManager()];\r\n            }\r\n            else {\r\n                return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { return datasetModel.getSourceManager(); });\r\n            }\r\n        };\r\n        SourceManager.prototype._createSourceMetaRawOption = function () {\r\n            var sourceHost = this._sourceHost;\r\n            var seriesLayoutBy;\r\n            var sourceHeader;\r\n            var dimensions;\r\n            if (isSeries(sourceHost)) {\r\n                seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\r\n                sourceHeader = sourceHost.get('sourceHeader', true);\r\n                dimensions = sourceHost.get('dimensions', true);\r\n            }\r\n            else if (!this._getUpstreamSourceManagers().length) {\r\n                var model = sourceHost;\r\n                seriesLayoutBy = model.get('seriesLayoutBy', true);\r\n                sourceHeader = model.get('sourceHeader', true);\r\n                dimensions = model.get('dimensions', true);\r\n            }\r\n            return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n        };\r\n        return SourceManager;\r\n    }());\r\n    function disableTransformOptionMerge(datasetModel) {\r\n        var transformOption = datasetModel.option.transform;\r\n        transformOption && setAsPrimitive(datasetModel.option.transform);\r\n    }\r\n    function isSeries(sourceHost) {\r\n        return sourceHost.mainType === 'series';\r\n    }\r\n    function doThrow(errMsg) {\r\n        throw new Error(errMsg);\r\n    }\n\n    var inner$2 = makeInner();\r\n    function getSelectionKey(data, dataIndex) {\r\n        return data.getName(dataIndex) || data.getId(dataIndex);\r\n    }\r\n    var SeriesModel = (function (_super) {\r\n        __extends(SeriesModel, _super);\r\n        function SeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this._selectedDataIndicesMap = {};\r\n            return _this;\r\n        }\r\n        SeriesModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.seriesIndex = this.componentIndex;\r\n            this.dataTask = createTask({\r\n                count: dataTaskCount,\r\n                reset: dataTaskReset\r\n            });\r\n            this.dataTask.context = { model: this };\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            var sourceManager = inner$2(this).sourceManager = new SourceManager(this);\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(option, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.context.data = data;\r\n            if (__DEV__) {\r\n                assert(data, 'getInitialData returned invalid data.');\r\n            }\r\n            inner$2(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeSubType = this.subType;\r\n            if (ComponentModel.hasClass(themeSubType)) {\r\n                themeSubType += 'Series';\r\n            }\r\n            merge(option, ecModel.getTheme().get(this.subType));\r\n            merge(option, this.getDefaultOption());\r\n            defaultEmphasis(option, 'label', ['show']);\r\n            this.fillDataTextStyle(option.data);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\r\n            newSeriesOption = merge(this.option, newSeriesOption, true);\r\n            this.fillDataTextStyle(newSeriesOption.data);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, newSeriesOption, layoutMode);\r\n            }\r\n            var sourceManager = inner$2(this).sourceManager;\r\n            sourceManager.dirty();\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(newSeriesOption, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.dirty();\r\n            this.dataTask.context.data = data;\r\n            inner$2(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.fillDataTextStyle = function (data) {\r\n            if (data && !isTypedArray(data)) {\r\n                var props = ['show'];\r\n                for (var i = 0; i < data.length; i++) {\r\n                    if (data[i] && data[i].label) {\r\n                        defaultEmphasis(data[i], 'label', props);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        SeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return;\r\n        };\r\n        SeriesModel.prototype.appendData = function (params) {\r\n            var data = this.getRawData();\r\n            data.appendData(params.data);\r\n        };\r\n        SeriesModel.prototype.getData = function (dataType) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var data = task.context.data;\r\n                return (dataType == null ? data : data.getLinkedData(dataType));\r\n            }\r\n            else {\r\n                return inner$2(this).data;\r\n            }\r\n        };\r\n        SeriesModel.prototype.getAllData = function () {\r\n            var mainData = this.getData();\r\n            return (mainData && mainData.getLinkedDataAll)\r\n                ? mainData.getLinkedDataAll()\r\n                : [{ data: mainData }];\r\n        };\r\n        SeriesModel.prototype.setData = function (data) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var context = task.context;\r\n                context.outputData = data;\r\n                if (task !== this.dataTask) {\r\n                    context.data = data;\r\n                }\r\n            }\r\n            inner$2(this).data = data;\r\n        };\r\n        SeriesModel.prototype.getSource = function () {\r\n            return inner$2(this).sourceManager.getSource();\r\n        };\r\n        SeriesModel.prototype.getRawData = function () {\r\n            return inner$2(this).dataBeforeProcessed;\r\n        };\r\n        SeriesModel.prototype.getBaseAxis = function () {\r\n            var coordSys = this.coordinateSystem;\r\n            return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\r\n        };\r\n        SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType, renderMode) {\r\n            var series = this;\r\n            renderMode = renderMode || 'html';\r\n            var newLine = renderMode === 'html' ? '' : '\\n';\r\n            var isRichText = renderMode === 'richText';\r\n            var markers = {};\r\n            var markerId = 0;\r\n            function formatArrayValue(value) {\r\n                var vertially = reduce(value, function (vertially, val, idx) {\r\n                    var dimItem = data.getDimensionInfo(idx);\r\n                    return vertially |= (dimItem && dimItem.tooltip !== false && dimItem.displayName != null);\r\n                }, 0);\r\n                var result = [];\r\n                tooltipDims.length\r\n                    ? each(tooltipDims, function (dim) {\r\n                        setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\r\n                    })\r\n                    : each(value, setEachItem);\r\n                function setEachItem(val, dim) {\r\n                    var dimInfo = data.getDimensionInfo(dim);\r\n                    if (!dimInfo || dimInfo.otherDims.tooltip === false) {\r\n                        return;\r\n                    }\r\n                    var dimType = dimInfo.type;\r\n                    var markName = 'sub' + series.seriesIndex + 'at' + markerId;\r\n                    var dimHead = getTooltipMarker({\r\n                        color: colorStr,\r\n                        type: 'subItem',\r\n                        renderMode: renderMode,\r\n                        markerId: markName\r\n                    });\r\n                    var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\r\n                    var valStr = (vertially\r\n                        ? '<span style=\"font-size:12px;color:#6e7079;\">'\r\n                            + dimHeadStr + encodeHTML(dimInfo.displayName || '-')\r\n                            + '</span>'\r\n                        : '')\r\n                        + '<span style=\"float:right;margin-left:20px;color:#000;font-weight:900\">'\r\n                        + encodeHTML(dimType === 'ordinal'\r\n                            ? val + ''\r\n                            : dimType === 'time'\r\n                                ? (multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val))\r\n                                : addCommas(val))\r\n                        + '</span>';\r\n                    valStr && result.push(\"<div style=\\\"margin: 11px 0 0;line-height:1;\\\">\" + valStr + \"</div>\");\r\n                    if (isRichText) {\r\n                        markers[markName] = colorStr;\r\n                        ++markerId;\r\n                    }\r\n                }\r\n                var newLine = vertially ? (isRichText ? '\\n' : '') : '';\r\n                var content = newLine + result.join(newLine || '');\r\n                return {\r\n                    renderMode: renderMode,\r\n                    content: content,\r\n                    style: markers\r\n                };\r\n            }\r\n            function formatSingleValue(val) {\r\n                return {\r\n                    renderMode: renderMode,\r\n                    content: encodeHTML(addCommas(val)),\r\n                    style: markers\r\n                };\r\n            }\r\n            var data = this.getData();\r\n            var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\r\n            var tooltipDimLen = tooltipDims.length;\r\n            var value = this.getRawValue(dataIndex);\r\n            var isValueArr = isArray(value);\r\n            var style = data.getItemVisual(dataIndex, 'style');\r\n            var color = style[this.visualDrawType];\r\n            var colorStr;\r\n            if (isString(color)) {\r\n                colorStr = color;\r\n            }\r\n            else if (color && color.colorStops) {\r\n                colorStr = (color.colorStops[0] || {}).color;\r\n            }\r\n            colorStr = colorStr || 'transparent';\r\n            var formattedValue = (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen))\r\n                ? formatArrayValue(value)\r\n                : tooltipDimLen\r\n                    ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0]))\r\n                    : formatSingleValue(isValueArr ? value[0] : value);\r\n            var content = isRichText\r\n                ? formattedValue.content\r\n                : (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen))\r\n                    ? '<div>'\r\n                        + formattedValue.content + '</div>'\r\n                    : '<span style=\"float:right;margin-left:20px;color:#464646;font-weight:bold\">'\r\n                        + formattedValue.content + '</span>';\r\n            var markName = series.seriesIndex + 'at' + markerId;\r\n            var colorEl = getTooltipMarker({\r\n                color: colorStr,\r\n                type: 'item',\r\n                renderMode: renderMode,\r\n                markerId: markName\r\n            });\r\n            markers[markName] = colorStr;\r\n            ++markerId;\r\n            var name = data.getName(dataIndex);\r\n            var seriesName = this.name;\r\n            if (!isNameSpecified(this)) {\r\n                seriesName = '';\r\n            }\r\n            seriesName = seriesName\r\n                ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ' ')\r\n                : '';\r\n            colorStr = isString(colorEl) ? colorEl : colorEl.content;\r\n            var html = '';\r\n            if (!isRichText) {\r\n                seriesName = seriesName\r\n                    ? !multipleSeries\r\n                        ? \"<div style=\\\"font-size:12px;color:#6e7079;line-height:1;margin-top:-4px;\\\">\" + seriesName + \"</div>\"\r\n                        : \"<span style=\\\"font-size:12px;color:#6e7079;line-height:1\\\">\" + seriesName + \"</span>\"\r\n                    : '';\r\n                html = !multipleSeries\r\n                    ? seriesName + (\"<div style=\\\"margin: \" + (seriesName ? 8 : 0) + \"px 0 0;line-height:1\\\">\")\r\n                        + colorStr\r\n                        + (name\r\n                            ? \"<span style=\\\"font-size:12px;color:#6e7079;\\\">\" + encodeHTML(name) + \"</span>\" + content\r\n                            : content) + '</div>'\r\n                    : \"<div style=\\\"margin: 11px 0 0;line-height:1;\\\">\" + colorStr + seriesName + content + \"</div>\";\r\n            }\r\n            else {\r\n                html = !multipleSeries\r\n                    ? seriesName + (seriesName ? '\\n' : '') + ''\r\n                        + colorStr\r\n                        + (name\r\n                            ? encodeHTML(name) + \": \" + content\r\n                            : content) + ''\r\n                    : \"\" + colorStr + seriesName + \": \" + content;\r\n            }\r\n            return { html: html, markers: markers };\r\n        };\r\n        SeriesModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var animationEnabled = this.getShallow('animation');\r\n            if (animationEnabled) {\r\n                if (this.getData().count() > this.getShallow('animationThreshold')) {\r\n                    animationEnabled = false;\r\n                }\r\n            }\r\n            return !!animationEnabled;\r\n        };\r\n        SeriesModel.prototype.restoreData = function () {\r\n            this.dataTask.dirty();\r\n        };\r\n        SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n            var ecModel = this.ecModel;\r\n            var color = ColorPaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\r\n            if (!color) {\r\n                color = ecModel.getColorFromPalette(name, scope, requestColorNum);\r\n            }\r\n            return color;\r\n        };\r\n        SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\r\n            return this.getRawData().mapDimensionsAll(coordDim);\r\n        };\r\n        SeriesModel.prototype.getProgressive = function () {\r\n            return this.get('progressive');\r\n        };\r\n        SeriesModel.prototype.getProgressiveThreshold = function () {\r\n            return this.get('progressiveThreshold');\r\n        };\r\n        SeriesModel.prototype.select = function (innerDataIndices, dataType) {\r\n            this._innerSelect(this.getData(dataType), innerDataIndices);\r\n        };\r\n        SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return;\r\n            }\r\n            var data = this.getData(dataType);\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                var dataIndex = innerDataIndices[i];\r\n                var nameOrId = getSelectionKey(data, dataIndex);\r\n                selectedMap[nameOrId] = false;\r\n                this._selectedDataIndicesMap[nameOrId] = -1;\r\n            }\r\n        };\r\n        SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\r\n            var tmpArr = [];\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                tmpArr[0] = innerDataIndices[i];\r\n                this.isSelected(innerDataIndices[i], dataType)\r\n                    ? this.unselect(tmpArr, dataType)\r\n                    : this.select(tmpArr, dataType);\r\n            }\r\n        };\r\n        SeriesModel.prototype.getSelectedDataIndices = function () {\r\n            var selectedDataIndicesMap = this._selectedDataIndicesMap;\r\n            var nameOrIds = keys(selectedDataIndicesMap);\r\n            var dataIndices = [];\r\n            for (var i = 0; i < nameOrIds.length; i++) {\r\n                var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\r\n                if (dataIndex >= 0) {\r\n                    dataIndices.push(dataIndex);\r\n                }\r\n            }\r\n            return dataIndices;\r\n        };\r\n        SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return false;\r\n            }\r\n            var data = this.getData(dataType);\r\n            var nameOrId = getSelectionKey(data, dataIndex);\r\n            return selectedMap[nameOrId] || false;\r\n        };\r\n        SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\r\n            var _a, _b;\r\n            var selectedMode = this.option.selectedMode;\r\n            var len = innerDataIndices.length;\r\n            if (!selectedMode || !len) {\r\n                return;\r\n            }\r\n            if (selectedMode === 'multiple') {\r\n                var selectedMap = this.option.selectedMap || (this.option.selectedMap = {});\r\n                for (var i = 0; i < len; i++) {\r\n                    var dataIndex = innerDataIndices[i];\r\n                    var nameOrId = getSelectionKey(data, dataIndex);\r\n                    selectedMap[nameOrId] = true;\r\n                    this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\r\n                }\r\n            }\r\n            else if (selectedMode === 'single' || selectedMode === true) {\r\n                var lastDataIndex = innerDataIndices[len - 1];\r\n                var nameOrId = getSelectionKey(data, lastDataIndex);\r\n                this.option.selectedMap = (_a = {},\r\n                    _a[nameOrId] = true,\r\n                    _a);\r\n                this._selectedDataIndicesMap = (_b = {},\r\n                    _b[nameOrId] = data.getRawIndex(lastDataIndex),\r\n                    _b);\r\n            }\r\n        };\r\n        SeriesModel.prototype._initSelectedMapFromData = function (data) {\r\n            if (this.option.selectedMap) {\r\n                return;\r\n            }\r\n            var dataIndices = [];\r\n            if (data.hasItemOption) {\r\n                data.each(function (idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (typeof rawItem === 'object'\r\n                        && rawItem.selected) {\r\n                        dataIndices.push(idx);\r\n                    }\r\n                });\r\n            }\r\n            if (dataIndices.length > 0) {\r\n                this._innerSelect(data, dataIndices);\r\n            }\r\n        };\r\n        SeriesModel.registerClass = function (clz) {\r\n            return ComponentModel.registerClass(clz);\r\n        };\r\n        SeriesModel.protoInitialize = (function () {\r\n            var proto = SeriesModel.prototype;\r\n            proto.type = 'series.__base__';\r\n            proto.seriesIndex = 0;\r\n            proto.useColorPaletteOnData = false;\r\n            proto.ignoreStyleOnData = false;\r\n            proto.hasSymbolVisual = false;\r\n            proto.defaultSymbol = 'circle';\r\n            proto.visualStyleAccessPath = 'itemStyle';\r\n            proto.visualDrawType = 'fill';\r\n        })();\r\n        return SeriesModel;\r\n    }(ComponentModel));\r\n    mixin(SeriesModel, DataFormatMixin);\r\n    mixin(SeriesModel, ColorPaletteMixin);\r\n    mountExtend(SeriesModel, ComponentModel);\r\n    function autoSeriesName(seriesModel) {\r\n        var name = seriesModel.name;\r\n        if (!isNameSpecified(seriesModel)) {\r\n            seriesModel.name = getSeriesAutoName(seriesModel) || name;\r\n        }\r\n    }\r\n    function getSeriesAutoName(seriesModel) {\r\n        var data = seriesModel.getRawData();\r\n        var dataDims = data.mapDimensionsAll('seriesName');\r\n        var nameArr = [];\r\n        each(dataDims, function (dataDim) {\r\n            var dimInfo = data.getDimensionInfo(dataDim);\r\n            dimInfo.displayName && nameArr.push(dimInfo.displayName);\r\n        });\r\n        return nameArr.join(' ');\r\n    }\r\n    function dataTaskCount(context) {\r\n        return context.model.getRawData().count();\r\n    }\r\n    function dataTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n        return dataTaskProgress;\r\n    }\r\n    function dataTaskProgress(param, context) {\r\n        if (context.outputData && param.end > context.outputData.count()) {\r\n            context.model.getRawData().cloneShallow(context.outputData);\r\n        }\r\n    }\r\n    function wrapData(data, seriesModel) {\r\n        each(data.CHANGABLE_METHODS, function (methodName) {\r\n            data.wrapMethod(methodName, curry(onDataSelfChange, seriesModel));\r\n        });\r\n    }\r\n    function onDataSelfChange(seriesModel) {\r\n        var task = getCurrentTask(seriesModel);\r\n        if (task) {\r\n            task.setOutputEnd(this.count());\r\n        }\r\n    }\r\n    function getCurrentTask(seriesModel) {\r\n        var scheduler = (seriesModel.ecModel || {}).scheduler;\r\n        var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\r\n        if (pipeline) {\r\n            var task = pipeline.currentTask;\r\n            if (task) {\r\n                var agentStubMap = task.agentStubMap;\r\n                if (agentStubMap) {\r\n                    task = agentStubMap.get(seriesModel.uid);\r\n                }\r\n            }\r\n            return task;\r\n        }\r\n    }\n\n    var ComponentView = (function () {\r\n        function ComponentView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewComponent');\r\n        }\r\n        ComponentView.prototype.init = function (ecModel, api) { };\r\n        ComponentView.prototype.render = function (model, ecModel, api, payload) { };\r\n        ComponentView.prototype.dispose = function (ecModel, api) { };\r\n        ComponentView.prototype.updateView = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.blurSeries = function (seriesModels, ecModel) {\r\n        };\r\n        return ComponentView;\r\n    }());\r\n    enableClassExtend(ComponentView);\r\n    enableClassManagement(ComponentView, { registerWhenExtend: true });\n\n    function createRenderPlanner () {\r\n        var inner = makeInner();\r\n        return function (seriesModel) {\r\n            var fields = inner(seriesModel);\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var originalLarge = fields.large;\r\n            var originalProgressive = fields.progressiveRender;\r\n            var large = fields.large = pipelineContext && pipelineContext.large;\r\n            var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\r\n            return (!!((originalLarge ^ large) || (originalProgressive ^ progressive)) && 'reset');\r\n        };\r\n    }\n\n    var inner$3 = makeInner();\r\n    var renderPlanner = createRenderPlanner();\r\n    var ChartView = (function () {\r\n        function ChartView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewChart');\r\n            this.renderTask = createTask({\r\n                plan: renderTaskPlan,\r\n                reset: renderTaskReset\r\n            });\r\n            this.renderTask.context = { view: this };\r\n        }\r\n        ChartView.prototype.init = function (ecModel, api) { };\r\n        ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { };\r\n        ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'emphasis');\r\n        };\r\n        ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'normal');\r\n        };\r\n        ChartView.prototype.remove = function (ecModel, api) {\r\n            this.group.removeAll();\r\n        };\r\n        ChartView.prototype.dispose = function (ecModel, api) { };\r\n        ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.markUpdateMethod = function (payload, methodName) {\r\n            inner$3(payload).updateMethod = methodName;\r\n        };\r\n        ChartView.protoInitialize = (function () {\r\n            var proto = ChartView.prototype;\r\n            proto.type = 'chart';\r\n        })();\r\n        return ChartView;\r\n    }());\r\n    function elSetState(el, state, highlightDigit) {\r\n        if (el) {\r\n            (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n        }\r\n    }\r\n    function toggleHighlight(data, payload, state) {\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        var highlightDigit = (payload && payload.highlightKey != null)\r\n            ? getHighlightDigit(payload.highlightKey)\r\n            : null;\r\n        if (dataIndex != null) {\r\n            each(normalizeToArray(dataIndex), function (dataIdx) {\r\n                elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\r\n            });\r\n        }\r\n        else {\r\n            data.eachItemGraphicEl(function (el) {\r\n                elSetState(el, state, highlightDigit);\r\n            });\r\n        }\r\n    }\r\n    enableClassExtend(ChartView, ['dispose']);\r\n    enableClassManagement(ChartView, { registerWhenExtend: true });\r\n    function renderTaskPlan(context) {\r\n        return renderPlanner(context.model);\r\n    }\r\n    function renderTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        var ecModel = context.ecModel;\r\n        var api = context.api;\r\n        var payload = context.payload;\r\n        var progressiveRender = seriesModel.pipelineContext.progressiveRender;\r\n        var view = context.view;\r\n        var updateMethod = payload && inner$3(payload).updateMethod;\r\n        var methodName = progressiveRender\r\n            ? 'incrementalPrepareRender'\r\n            : (updateMethod && view[updateMethod])\r\n                ? updateMethod\r\n                : 'render';\r\n        if (methodName !== 'render') {\r\n            view[methodName](seriesModel, ecModel, api, payload);\r\n        }\r\n        return progressMethodMap[methodName];\r\n    }\r\n    var progressMethodMap = {\r\n        incrementalPrepareRender: {\r\n            progress: function (params, context) {\r\n                context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        },\r\n        render: {\r\n            forceFirstProgress: true,\r\n            progress: function (params, context) {\r\n                context.view.render(context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        }\r\n    };\n\n    function throttle(fn, delay, debounce) {\r\n        var currCall;\r\n        var lastCall = 0;\r\n        var lastExec = 0;\r\n        var timer = null;\r\n        var diff;\r\n        var scope;\r\n        var args;\r\n        var debounceNextCall;\r\n        delay = delay || 0;\r\n        function exec() {\r\n            lastExec = (new Date()).getTime();\r\n            timer = null;\r\n            fn.apply(scope, args || []);\r\n        }\r\n        var cb = function () {\r\n            var cbArgs = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                cbArgs[_i] = arguments[_i];\r\n            }\r\n            currCall = (new Date()).getTime();\r\n            scope = this;\r\n            args = cbArgs;\r\n            var thisDelay = debounceNextCall || delay;\r\n            var thisDebounce = debounceNextCall || debounce;\r\n            debounceNextCall = null;\r\n            diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\r\n            clearTimeout(timer);\r\n            if (thisDebounce) {\r\n                timer = setTimeout(exec, thisDelay);\r\n            }\r\n            else {\r\n                if (diff >= 0) {\r\n                    exec();\r\n                }\r\n                else {\r\n                    timer = setTimeout(exec, -diff);\r\n                }\r\n            }\r\n            lastCall = currCall;\r\n        };\r\n        cb.clear = function () {\r\n            if (timer) {\r\n                clearTimeout(timer);\r\n                timer = null;\r\n            }\r\n        };\r\n        cb.debounceNextCall = function (debounceDelay) {\r\n            debounceNextCall = debounceDelay;\r\n        };\r\n        return cb;\r\n    }\n\n    var inner$4 = makeInner();\r\n    var defaultStyleMappers = {\r\n        itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n        lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n    };\r\n    var defaultColorKey = {\r\n        lineStyle: 'stroke',\r\n        itemStyle: 'fill'\r\n    };\r\n    function getStyleMapper(seriesModel, stylePath) {\r\n        var styleMapper = seriesModel.visualStyleMapper\r\n            || defaultStyleMappers[stylePath];\r\n        if (!styleMapper) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return defaultStyleMappers.itemStyle;\r\n        }\r\n        return styleMapper;\r\n    }\r\n    function getDefaultColorKey(seriesModel, stylePath) {\r\n        var colorKey = seriesModel.visualDrawType\r\n            || defaultColorKey[stylePath];\r\n        if (!colorKey) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return 'fill';\r\n        }\r\n        return colorKey;\r\n    }\r\n    var seriesStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var styleModel = seriesModel.getModel(stylePath);\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var globalStyle = getStyle(styleModel);\r\n            var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n            var color = globalStyle[colorKey];\r\n            var colorCallback = isFunction(color) ? color : null;\r\n            if (!globalStyle[colorKey] || colorCallback) {\r\n                globalStyle[colorKey] = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount());\r\n                data.setVisual('colorFromPalette', true);\r\n            }\r\n            data.setVisual('style', globalStyle);\r\n            data.setVisual('drawType', colorKey);\r\n            if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\r\n                data.setVisual('colorFromPalette', false);\r\n                return {\r\n                    dataEach: function (data, idx) {\r\n                        var dataParams = seriesModel.getDataParams(idx);\r\n                        var itemStyle = extend({}, globalStyle);\r\n                        itemStyle[colorKey] = colorCallback(dataParams);\r\n                        data.setItemVisual(idx, 'style', itemStyle);\r\n                    }\r\n                };\r\n            }\r\n        }\r\n    };\r\n    var sharedModel = new Model();\r\n    var dataStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var colorKey = data.getVisual('drawType');\r\n            return {\r\n                dataEach: data.hasItemOption ? function (data, idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (rawItem && rawItem[stylePath]) {\r\n                        sharedModel.option = rawItem[stylePath];\r\n                        var style = getStyle(sharedModel);\r\n                        var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        extend(existsStyle, style);\r\n                        if (colorKey in style) {\r\n                            data.setItemVisual(idx, 'colorFromPalette', false);\r\n                        }\r\n                    }\r\n                } : null\r\n            };\r\n        }\r\n    };\r\n    var dataColorPaletteTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        overallReset: function (ecModel) {\r\n            var paletteScopeGroupByType = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData) {\r\n                    return;\r\n                }\r\n                var colorScope = paletteScopeGroupByType.get(seriesModel.type);\r\n                if (!colorScope) {\r\n                    colorScope = {};\r\n                    paletteScopeGroupByType.set(seriesModel.type, colorScope);\r\n                }\r\n                inner$4(seriesModel).scope = colorScope;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                    return;\r\n                }\r\n                var dataAll = seriesModel.getRawData();\r\n                var idxMap = {};\r\n                var data = seriesModel.getData();\r\n                var colorScope = inner$4(seriesModel).scope;\r\n                var stylePath = seriesModel.visualStyleAccessPath\r\n                    || 'itemStyle';\r\n                var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n                data.each(function (idx) {\r\n                    var rawIdx = data.getRawIndex(idx);\r\n                    idxMap[rawIdx] = idx;\r\n                });\r\n                dataAll.each(function (rawIdx) {\r\n                    var idx = idxMap[rawIdx];\r\n                    var fromPalette = data.getItemVisual(idx, 'colorFromPalette');\r\n                    if (fromPalette) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        itemStyle[colorKey] = seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || (rawIdx + ''), colorScope, dataAll.count());\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    };\n\n    function aria (dom, ecModel) {\r\n        var ariaModel = ecModel.getModel('aria');\r\n        if (!ariaModel.get('show')) {\r\n            return;\r\n        }\r\n        else if (ariaModel.get('description')) {\r\n            dom.setAttribute('aria-label', ariaModel.get('description'));\r\n            return;\r\n        }\r\n        var seriesCnt = 0;\r\n        ecModel.eachSeries(function (seriesModel, idx) {\r\n            ++seriesCnt;\r\n        }, this);\r\n        var maxDataCnt = ariaModel.get('data.maxCount') || 10;\r\n        var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\r\n        var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\r\n        var ariaLabel;\r\n        if (seriesCnt < 1) {\r\n            return;\r\n        }\r\n        else {\r\n            var title = getTitle();\r\n            if (title) {\r\n                ariaLabel = replace(getConfig('general.withTitle'), {\r\n                    title: title\r\n                });\r\n            }\r\n            else {\r\n                ariaLabel = getConfig('general.withoutTitle');\r\n            }\r\n            var seriesLabels_1 = [];\r\n            var prefix = seriesCnt > 1\r\n                ? 'series.multiple.prefix'\r\n                : 'series.single.prefix';\r\n            ariaLabel += replace(getConfig(prefix), { seriesCount: seriesCnt });\r\n            ecModel.eachSeries(function (seriesModel, idx) {\r\n                if (idx < displaySeriesCnt) {\r\n                    var seriesLabel = void 0;\r\n                    var seriesName = seriesModel.get('name');\r\n                    var seriesTpl = 'series.'\r\n                        + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\r\n                    seriesLabel = getConfig(seriesName\r\n                        ? seriesTpl + 'withName'\r\n                        : seriesTpl + 'withoutName');\r\n                    seriesLabel = replace(seriesLabel, {\r\n                        seriesId: seriesModel.seriesIndex,\r\n                        seriesName: seriesModel.get('name'),\r\n                        seriesType: getSeriesTypeName(seriesModel.subType)\r\n                    });\r\n                    var data = seriesModel.getData();\r\n                    window.data = data;\r\n                    if (data.count() > maxDataCnt) {\r\n                        seriesLabel += replace(getConfig('data.partialData'), {\r\n                            displayCnt: maxDataCnt\r\n                        });\r\n                    }\r\n                    else {\r\n                        seriesLabel += getConfig('data.allData');\r\n                    }\r\n                    var dataLabels = [];\r\n                    for (var i = 0; i < data.count(); i++) {\r\n                        if (i < maxDataCnt) {\r\n                            var name_1 = data.getName(i);\r\n                            var value = retrieveRawValue(data, i);\r\n                            dataLabels.push(replace(name_1\r\n                                ? getConfig('data.withName')\r\n                                : getConfig('data.withoutName'), {\r\n                                name: name_1,\r\n                                value: value\r\n                            }));\r\n                        }\r\n                    }\r\n                    seriesLabel += dataLabels\r\n                        .join(getConfig('data.separator.middle'))\r\n                        + getConfig('data.separator.end');\r\n                    seriesLabels_1.push(seriesLabel);\r\n                }\r\n            });\r\n            ariaLabel += seriesLabels_1\r\n                .join(getConfig('series.multiple.separator.middle'))\r\n                + getConfig('series.multiple.separator.end');\r\n            dom.setAttribute('aria-label', ariaLabel);\r\n        }\r\n        function replace(str, keyValues) {\r\n            if (typeof str !== 'string') {\r\n                return str;\r\n            }\r\n            var result = str;\r\n            each(keyValues, function (value, key) {\r\n                result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\r\n            });\r\n            return result;\r\n        }\r\n        function getConfig(path) {\r\n            var userConfig = ariaModel.get(path);\r\n            if (userConfig == null) {\r\n                var pathArr = path.split('.');\r\n                var result = ecModel.getLocale('aria');\r\n                for (var i = 0; i < pathArr.length; ++i) {\r\n                    result = result[pathArr[i]];\r\n                }\r\n                return result;\r\n            }\r\n            else {\r\n                return userConfig;\r\n            }\r\n        }\r\n        function getTitle() {\r\n            var title = ecModel.getModel('title').option;\r\n            if (title && title.length) {\r\n                title = title[0];\r\n            }\r\n            return title && title.text;\r\n        }\r\n        function getSeriesTypeName(type) {\r\n            return ecModel.getLocale(['series', 'typeNames'])[type] || '自定义图';\r\n        }\r\n    }\n\n    var PI$4 = Math.PI;\r\n    function loadingDefault (api, opts) {\r\n        opts = opts || {};\r\n        defaults(opts, {\r\n            text: 'loading',\r\n            textColor: '#000',\r\n            fontSize: '12px',\r\n            maskColor: 'rgba(255, 255, 255, 0.8)',\r\n            showSpinner: true,\r\n            color: '#5470c6',\r\n            spinnerRadius: 10,\r\n            lineWidth: 5,\r\n            zlevel: 0\r\n        });\r\n        var group = new Group();\r\n        var mask = new Rect({\r\n            style: {\r\n                fill: opts.maskColor\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10000\r\n        });\r\n        group.add(mask);\r\n        var font = opts.fontSize + ' sans-serif';\r\n        var labelRect = new Rect({\r\n            style: {\r\n                fill: 'none'\r\n            },\r\n            textContent: new ZRText({\r\n                style: {\r\n                    text: opts.text,\r\n                    fill: opts.textColor,\r\n                    font: font\r\n                }\r\n            }),\r\n            textConfig: {\r\n                position: 'right',\r\n                distance: 10\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10001\r\n        });\r\n        group.add(labelRect);\r\n        var arc;\r\n        if (opts.showSpinner) {\r\n            arc = new Arc({\r\n                shape: {\r\n                    startAngle: -PI$4 / 2,\r\n                    endAngle: -PI$4 / 2 + 0.1,\r\n                    r: opts.spinnerRadius\r\n                },\r\n                style: {\r\n                    stroke: opts.color,\r\n                    lineCap: 'round',\r\n                    lineWidth: opts.lineWidth\r\n                },\r\n                zlevel: opts.zlevel,\r\n                z: 10001\r\n            });\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                endAngle: PI$4 * 3 / 2\r\n            })\r\n                .start('circularInOut');\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                startAngle: PI$4 * 3 / 2\r\n            })\r\n                .delay(300)\r\n                .start('circularInOut');\r\n            group.add(arc);\r\n        }\r\n        group.resize = function () {\r\n            var textWidth = getWidth(opts.text, font);\r\n            var r = opts.showSpinner ? opts.spinnerRadius : 0;\r\n            var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2\r\n                - (opts.showSpinner ? 0 : textWidth / 2);\r\n            var cy = api.getHeight() / 2;\r\n            opts.showSpinner && arc.setShape({\r\n                cx: cx,\r\n                cy: cy\r\n            });\r\n            labelRect.setShape({\r\n                x: cx - r,\r\n                y: cy - r,\r\n                width: r * 2,\r\n                height: r * 2\r\n            });\r\n            mask.setShape({\r\n                x: 0,\r\n                y: 0,\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n        };\r\n        group.resize();\r\n        return group;\r\n    }\n\n    var Scheduler = (function () {\r\n        function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\r\n            this._stageTaskMap = createHashMap();\r\n            this.ecInstance = ecInstance;\r\n            this.api = api;\r\n            dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\r\n            visualHandlers = this._visualHandlers = visualHandlers.slice();\r\n            this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\r\n        }\r\n        Scheduler.prototype.restoreData = function (ecModel, payload) {\r\n            ecModel.restoreData(payload);\r\n            this._stageTaskMap.each(function (taskRecord) {\r\n                var overallTask = taskRecord.overallTask;\r\n                overallTask && overallTask.dirty();\r\n            });\r\n        };\r\n        Scheduler.prototype.getPerformArgs = function (task, isBlock) {\r\n            if (!task.__pipeline) {\r\n                return;\r\n            }\r\n            var pipeline = this._pipelineMap.get(task.__pipeline.id);\r\n            var pCtx = pipeline.context;\r\n            var incremental = !isBlock\r\n                && pipeline.progressiveEnabled\r\n                && (!pCtx || pCtx.progressiveRender)\r\n                && task.__idxInPipeline > pipeline.blockIndex;\r\n            var step = incremental ? pipeline.step : null;\r\n            var modDataCount = pCtx && pCtx.modDataCount;\r\n            var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\r\n            return { step: step, modBy: modBy, modDataCount: modDataCount };\r\n        };\r\n        Scheduler.prototype.getPipeline = function (pipelineId) {\r\n            return this._pipelineMap.get(pipelineId);\r\n        };\r\n        Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\r\n            var pipeline = this._pipelineMap.get(seriesModel.uid);\r\n            var data = seriesModel.getData();\r\n            var dataLen = data.count();\r\n            var progressiveRender = pipeline.progressiveEnabled\r\n                && view.incrementalPrepareRender\r\n                && dataLen >= pipeline.threshold;\r\n            var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\r\n            var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\r\n            seriesModel.pipelineContext = pipeline.context = {\r\n                progressiveRender: progressiveRender,\r\n                modDataCount: modDataCount,\r\n                large: large\r\n            };\r\n        };\r\n        Scheduler.prototype.restorePipelines = function (ecModel) {\r\n            var scheduler = this;\r\n            var pipelineMap = scheduler._pipelineMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var progressive = seriesModel.getProgressive();\r\n                var pipelineId = seriesModel.uid;\r\n                pipelineMap.set(pipelineId, {\r\n                    id: pipelineId,\r\n                    head: null,\r\n                    tail: null,\r\n                    threshold: seriesModel.getProgressiveThreshold(),\r\n                    progressiveEnabled: progressive\r\n                        && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\r\n                    blockIndex: -1,\r\n                    step: Math.round(progressive || 700),\r\n                    count: 0\r\n                });\r\n                scheduler._pipe(seriesModel, seriesModel.dataTask);\r\n            });\r\n        };\r\n        Scheduler.prototype.prepareStageTasks = function () {\r\n            var stageTaskMap = this._stageTaskMap;\r\n            var ecModel = this.ecInstance.getModel();\r\n            var api = this.api;\r\n            each(this._allHandlers, function (handler) {\r\n                var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\r\n                handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\r\n                handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\r\n            }, this);\r\n        };\r\n        Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\r\n            var renderTask = view.renderTask;\r\n            var context = renderTask.context;\r\n            context.model = model;\r\n            context.ecModel = ecModel;\r\n            context.api = api;\r\n            renderTask.__block = !view.incrementalPrepareRender;\r\n            this._pipe(model, renderTask);\r\n        };\r\n        Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\r\n            this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true });\r\n        };\r\n        Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\r\n            this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\r\n        };\r\n        Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\r\n            opt = opt || {};\r\n            var unfinished = false;\r\n            var scheduler = this;\r\n            each(stageHandlers, function (stageHandler, idx) {\r\n                if (opt.visualType && opt.visualType !== stageHandler.visualType) {\r\n                    return;\r\n                }\r\n                var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\r\n                var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n                var overallTask = stageHandlerRecord.overallTask;\r\n                if (overallTask) {\r\n                    var overallNeedDirty_1;\r\n                    var agentStubMap = overallTask.agentStubMap;\r\n                    agentStubMap.each(function (stub) {\r\n                        if (needSetDirty(opt, stub)) {\r\n                            stub.dirty();\r\n                            overallNeedDirty_1 = true;\r\n                        }\r\n                    });\r\n                    overallNeedDirty_1 && overallTask.dirty();\r\n                    scheduler.updatePayload(overallTask, payload);\r\n                    var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);\r\n                    agentStubMap.each(function (stub) {\r\n                        stub.perform(performArgs_1);\r\n                    });\r\n                    if (overallTask.perform(performArgs_1)) {\r\n                        unfinished = true;\r\n                    }\r\n                }\r\n                else if (seriesTaskMap) {\r\n                    seriesTaskMap.each(function (task, pipelineId) {\r\n                        if (needSetDirty(opt, task)) {\r\n                            task.dirty();\r\n                        }\r\n                        var performArgs = scheduler.getPerformArgs(task, opt.block);\r\n                        performArgs.skip = !stageHandler.performRawSeries\r\n                            && ecModel.isSeriesFiltered(task.context.model);\r\n                        scheduler.updatePayload(task, payload);\r\n                        if (task.perform(performArgs)) {\r\n                            unfinished = true;\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n            function needSetDirty(opt, task) {\r\n                return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\r\n            }\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.performSeriesTasks = function (ecModel) {\r\n            var unfinished;\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                unfinished = seriesModel.dataTask.perform() || unfinished;\r\n            });\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.plan = function () {\r\n            this._pipelineMap.each(function (pipeline) {\r\n                var task = pipeline.tail;\r\n                do {\r\n                    if (task.__block) {\r\n                        pipeline.blockIndex = task.__idxInPipeline;\r\n                        break;\r\n                    }\r\n                    task = task.getUpstream();\r\n                } while (task);\r\n            });\r\n        };\r\n        Scheduler.prototype.updatePayload = function (task, payload) {\r\n            payload !== 'remain' && (task.context.payload = payload);\r\n        };\r\n        Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var seriesTaskMap = stageHandlerRecord.seriesTaskMap\r\n                || (stageHandlerRecord.seriesTaskMap = createHashMap());\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            if (stageHandler.createOnAllSeries) {\r\n                ecModel.eachRawSeries(create);\r\n            }\r\n            else if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, create);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(create);\r\n            }\r\n            function create(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var task = seriesTaskMap.get(pipelineId)\r\n                    || seriesTaskMap.set(pipelineId, createTask({\r\n                        plan: seriesTaskPlan,\r\n                        reset: seriesTaskReset,\r\n                        count: seriesTaskCount\r\n                    }));\r\n                task.context = {\r\n                    model: seriesModel,\r\n                    ecModel: ecModel,\r\n                    api: api,\r\n                    useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\r\n                    plan: stageHandler.plan,\r\n                    reset: stageHandler.reset,\r\n                    scheduler: scheduler\r\n                };\r\n                scheduler._pipe(seriesModel, task);\r\n            }\r\n            var pipelineMap = scheduler._pipelineMap;\r\n            seriesTaskMap.each(function (task, pipelineId) {\r\n                if (!pipelineMap.get(pipelineId)) {\r\n                    task.dispose();\r\n                    seriesTaskMap.removeKey(pipelineId);\r\n                }\r\n            });\r\n        };\r\n        Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask\r\n                || createTask({ reset: overallTaskReset });\r\n            overallTask.context = {\r\n                ecModel: ecModel,\r\n                api: api,\r\n                overallReset: stageHandler.overallReset,\r\n                scheduler: scheduler\r\n            };\r\n            var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap\r\n                || createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            var overallProgress = true;\r\n            if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, createStub);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(createStub);\r\n            }\r\n            else {\r\n                overallProgress = false;\r\n                each(ecModel.getSeries(), createStub);\r\n            }\r\n            function createStub(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var stub = agentStubMap.get(pipelineId);\r\n                if (!stub) {\r\n                    stub = agentStubMap.set(pipelineId, createTask({ reset: stubReset, onDirty: stubOnDirty }));\r\n                    overallTask.dirty();\r\n                }\r\n                stub.context = {\r\n                    model: seriesModel,\r\n                    overallProgress: overallProgress\r\n                };\r\n                stub.agent = overallTask;\r\n                stub.__block = overallProgress;\r\n                scheduler._pipe(seriesModel, stub);\r\n            }\r\n            var pipelineMap = scheduler._pipelineMap;\r\n            agentStubMap.each(function (stub, pipelineId) {\r\n                if (!pipelineMap.get(pipelineId)) {\r\n                    stub.dispose();\r\n                    overallTask.dirty();\r\n                    agentStubMap.removeKey(pipelineId);\r\n                }\r\n            });\r\n        };\r\n        Scheduler.prototype._pipe = function (seriesModel, task) {\r\n            var pipelineId = seriesModel.uid;\r\n            var pipeline = this._pipelineMap.get(pipelineId);\r\n            !pipeline.head && (pipeline.head = task);\r\n            pipeline.tail && pipeline.tail.pipe(task);\r\n            pipeline.tail = task;\r\n            task.__idxInPipeline = pipeline.count++;\r\n            task.__pipeline = pipeline;\r\n        };\r\n        Scheduler.wrapStageHandler = function (stageHandler, visualType) {\r\n            if (isFunction(stageHandler)) {\r\n                stageHandler = {\r\n                    overallReset: stageHandler,\r\n                    seriesType: detectSeriseType(stageHandler)\r\n                };\r\n            }\r\n            stageHandler.uid = getUID('stageHandler');\r\n            visualType && (stageHandler.visualType = visualType);\r\n            return stageHandler;\r\n        };\r\n        return Scheduler;\r\n    }());\r\n    function overallTaskReset(context) {\r\n        context.overallReset(context.ecModel, context.api, context.payload);\r\n    }\r\n    function stubReset(context) {\r\n        return context.overallProgress && stubProgress;\r\n    }\r\n    function stubProgress() {\r\n        this.agent.dirty();\r\n        this.getDownstream().dirty();\r\n    }\r\n    function stubOnDirty() {\r\n        this.agent && this.agent.dirty();\r\n    }\r\n    function seriesTaskPlan(context) {\r\n        return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n    }\r\n    function seriesTaskReset(context) {\r\n        if (context.useClearVisual) {\r\n            context.data.clearAllVisual();\r\n        }\r\n        var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\r\n        return resetDefines.length > 1\r\n            ? map(resetDefines, function (v, idx) {\r\n                return makeSeriesTaskProgress(idx);\r\n            })\r\n            : singleSeriesTaskProgress;\r\n    }\r\n    var singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\n    function makeSeriesTaskProgress(resetDefineIdx) {\r\n        return function (params, context) {\r\n            var data = context.data;\r\n            var resetDefine = context.resetDefines[resetDefineIdx];\r\n            if (resetDefine && resetDefine.dataEach) {\r\n                for (var i = params.start; i < params.end; i++) {\r\n                    resetDefine.dataEach(data, i);\r\n                }\r\n            }\r\n            else if (resetDefine && resetDefine.progress) {\r\n                resetDefine.progress(params, data);\r\n            }\r\n        };\r\n    }\r\n    function seriesTaskCount(context) {\r\n        return context.data.count();\r\n    }\r\n    function detectSeriseType(legacyFunc) {\r\n        seriesType = null;\r\n        try {\r\n            legacyFunc(ecModelMock, apiMock);\r\n        }\r\n        catch (e) {\r\n        }\r\n        return seriesType;\r\n    }\r\n    var ecModelMock = {};\r\n    var apiMock = {};\r\n    var seriesType;\r\n    mockMethods(ecModelMock, GlobalModel);\r\n    mockMethods(apiMock, ExtensionAPI);\r\n    ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n        seriesType = type;\r\n    };\r\n    ecModelMock.eachComponent = function (cond) {\r\n        if (cond.mainType === 'series' && cond.subType) {\r\n            seriesType = cond.subType;\r\n        }\r\n    };\r\n    function mockMethods(target, Clz) {\r\n        for (var name_1 in Clz.prototype) {\r\n            target[name_1] = noop;\r\n        }\r\n    }\n\n    var colorAll = [\r\n        '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n        '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n    ];\r\n    var lightTheme = {\r\n        color: colorAll,\r\n        colorLayer: [\r\n            ['#37A2DA', '#ffd85c', '#fd7b5f'],\r\n            ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],\r\n            ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'],\r\n            colorAll\r\n        ]\r\n    };\n\n    var contrastColor = '#B9B8CE';\r\n    var backgroundColor = '#100C2A';\r\n    var axisCommon = function () {\r\n        return {\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: contrastColor\r\n                }\r\n            },\r\n            splitLine: {\r\n                lineStyle: {\r\n                    color: '#484753'\r\n                }\r\n            },\r\n            splitArea: {\r\n                areaStyle: {\r\n                    color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\r\n                }\r\n            },\r\n            minorSplitLine: {\r\n                lineStyle: {\r\n                    color: '#20203B'\r\n                }\r\n            }\r\n        };\r\n    };\r\n    var colorPalette = [\r\n        '#4992ff',\r\n        '#7cffb2',\r\n        '#fddd60',\r\n        '#ff6e76',\r\n        '#58d9f9',\r\n        '#05c091',\r\n        '#ff8a45',\r\n        '#8d48e3',\r\n        '#dd79ff'\r\n    ];\r\n    var theme = {\r\n        darkMode: true,\r\n        color: colorPalette,\r\n        backgroundColor: backgroundColor,\r\n        axisPointer: {\r\n            lineStyle: {\r\n                color: '#817f91'\r\n            },\r\n            crossStyle: {\r\n                color: '#817f91'\r\n            },\r\n            label: {\r\n                color: '#fff'\r\n            }\r\n        },\r\n        legend: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        textStyle: {\r\n            color: contrastColor\r\n        },\r\n        title: {\r\n            textStyle: {\r\n                color: '#EEF1FA'\r\n            },\r\n            subtextStyle: {\r\n                color: '#B9B8CE'\r\n            }\r\n        },\r\n        toolbox: {\r\n            iconStyle: {\r\n                normal: {\r\n                    borderColor: contrastColor\r\n                }\r\n            }\r\n        },\r\n        dataZoom: {\r\n            borderColor: '#71708A',\r\n            textStyle: {\r\n                color: contrastColor\r\n            },\r\n            brushStyle: {\r\n                color: 'rgba(135,163,206,0.3)'\r\n            },\r\n            handleStyle: {\r\n                color: '#353450',\r\n                borderColor: '#C5CBE3'\r\n            },\r\n            moveHandleStyle: {\r\n                color: '#B0B6C3',\r\n                opacity: 0.3\r\n            },\r\n            fillerColor: 'rgba(135,163,206,0.2)',\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#91B7F2',\r\n                    color: '#4D587D'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#636D9A',\r\n                    opacity: 0.7\r\n                }\r\n            },\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#71708A',\r\n                    width: 1\r\n                },\r\n                areaStyle: {\r\n                    color: '#71708A'\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#87A3CE'\r\n                },\r\n                areaStyle: {\r\n                    color: '#87A3CE'\r\n                }\r\n            }\r\n        },\r\n        visualMap: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeline: {\r\n            lineStyle: {\r\n                color: contrastColor\r\n            },\r\n            label: {\r\n                textStyle: {\r\n                    color: contrastColor\r\n                }\r\n            },\r\n            controlStyle: {\r\n                color: contrastColor,\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        calendar: {\r\n            itemStyle: {\r\n                color: backgroundColor\r\n            },\r\n            dayLabel: {\r\n                color: contrastColor\r\n            },\r\n            monthLabel: {\r\n                color: contrastColor\r\n            },\r\n            yearLabel: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeAxis: axisCommon(),\r\n        logAxis: axisCommon(),\r\n        valueAxis: axisCommon(),\r\n        categoryAxis: axisCommon(),\r\n        line: {\r\n            symbol: 'circle'\r\n        },\r\n        graph: {\r\n            color: colorPalette\r\n        },\r\n        gauge: {\r\n            title: {\r\n                textStyle: {\r\n                    color: contrastColor\r\n                }\r\n            }\r\n        },\r\n        candlestick: {\r\n            itemStyle: {\r\n                normal: {\r\n                    color: '#FD1050',\r\n                    color0: '#0CF49B',\r\n                    borderColor: '#FD1050',\r\n                    borderColor0: '#0CF49B'\r\n                }\r\n            }\r\n        }\r\n    };\r\n    theme.categoryAxis.splitLine.show = false;\n\n    var DatasetModel = (function (_super) {\r\n        __extends(DatasetModel, _super);\r\n        function DatasetModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetModel.prototype.init = function (option, parentModel, ecModel) {\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            this._sourceManager = new SourceManager(this);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\r\n            _super.prototype.mergeOption.call(this, newOption, ecModel);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.optionUpdated = function () {\r\n            this._sourceManager.dirty();\r\n        };\r\n        DatasetModel.prototype.getSourceManager = function () {\r\n            return this._sourceManager;\r\n        };\r\n        DatasetModel.type = 'dataset';\r\n        DatasetModel.defaultOption = {\r\n            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\r\n        };\r\n        return DatasetModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(DatasetModel);\r\n    var DatasetView = (function (_super) {\r\n        __extends(DatasetView, _super);\r\n        function DatasetView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetView.type = 'dataset';\r\n        return DatasetView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DatasetView);\n\n    var storage = createHashMap();\r\n    var mapDataStorage = {\r\n        registerMap: function (mapName, rawDef, rawSpecialAreas) {\r\n            var records;\r\n            if (isArray(rawDef)) {\r\n                records = rawDef;\r\n            }\r\n            else if (rawDef.svg) {\r\n                records = [{\r\n                        type: 'svg',\r\n                        source: rawDef.svg,\r\n                        specialAreas: rawDef.specialAreas\r\n                    }];\r\n            }\r\n            else {\r\n                var geoSource = rawDef.geoJson\r\n                    || rawDef.geoJSON;\r\n                if (geoSource && !rawDef.features) {\r\n                    rawSpecialAreas = rawDef.specialAreas;\r\n                    rawDef = geoSource;\r\n                }\r\n                records = [{\r\n                        type: 'geoJSON',\r\n                        source: rawDef,\r\n                        specialAreas: rawSpecialAreas\r\n                    }];\r\n            }\r\n            each(records, function (record) {\r\n                var type = record.type;\r\n                type === 'geoJson' && (type = record.type = 'geoJSON');\r\n                var parse = parsers[type];\r\n                if (__DEV__) {\r\n                    assert(parse, 'Illegal map type: ' + type);\r\n                }\r\n                parse(record);\r\n            });\r\n            return storage.set(mapName, records);\r\n        },\r\n        retrieveMap: function (mapName) {\r\n            return storage.get(mapName);\r\n        }\r\n    };\r\n    var parsers = {\r\n        geoJSON: function (record) {\r\n            var source = record.source;\r\n            record.geoJSON = !isString(source)\r\n                ? source\r\n                : (typeof JSON !== 'undefined' && JSON.parse)\r\n                    ? JSON.parse(source)\r\n                    : (new Function('return (' + source + ');'))();\r\n        },\r\n        svg: function (record) {\r\n            record.svgXML = parseXML(record.source);\r\n        }\r\n    };\n\n    var ECEventProcessor = (function () {\r\n        function ECEventProcessor() {\r\n        }\r\n        ECEventProcessor.prototype.normalizeQuery = function (query) {\r\n            var cptQuery = {};\r\n            var dataQuery = {};\r\n            var otherQuery = {};\r\n            if (isString(query)) {\r\n                var condCptType = parseClassType(query);\r\n                cptQuery.mainType = condCptType.main || null;\r\n                cptQuery.subType = condCptType.sub || null;\r\n            }\r\n            else {\r\n                var suffixes_1 = ['Index', 'Name', 'Id'];\r\n                var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 };\r\n                each(query, function (val, key) {\r\n                    var reserved = false;\r\n                    for (var i = 0; i < suffixes_1.length; i++) {\r\n                        var propSuffix = suffixes_1[i];\r\n                        var suffixPos = key.lastIndexOf(propSuffix);\r\n                        if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\r\n                            var mainType = key.slice(0, suffixPos);\r\n                            if (mainType !== 'data') {\r\n                                cptQuery.mainType = mainType;\r\n                                cptQuery[propSuffix.toLowerCase()] = val;\r\n                                reserved = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (dataKeys_1.hasOwnProperty(key)) {\r\n                        dataQuery[key] = val;\r\n                        reserved = true;\r\n                    }\r\n                    if (!reserved) {\r\n                        otherQuery[key] = val;\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                cptQuery: cptQuery,\r\n                dataQuery: dataQuery,\r\n                otherQuery: otherQuery\r\n            };\r\n        };\r\n        ECEventProcessor.prototype.filter = function (eventType, query) {\r\n            var eventInfo = this.eventInfo;\r\n            if (!eventInfo) {\r\n                return true;\r\n            }\r\n            var targetEl = eventInfo.targetEl;\r\n            var packedEvent = eventInfo.packedEvent;\r\n            var model = eventInfo.model;\r\n            var view = eventInfo.view;\r\n            if (!model || !view) {\r\n                return true;\r\n            }\r\n            var cptQuery = query.cptQuery;\r\n            var dataQuery = query.dataQuery;\r\n            return check(cptQuery, model, 'mainType')\r\n                && check(cptQuery, model, 'subType')\r\n                && check(cptQuery, model, 'index', 'componentIndex')\r\n                && check(cptQuery, model, 'name')\r\n                && check(cptQuery, model, 'id')\r\n                && check(dataQuery, packedEvent, 'name')\r\n                && check(dataQuery, packedEvent, 'dataIndex')\r\n                && check(dataQuery, packedEvent, 'dataType')\r\n                && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\r\n            function check(query, host, prop, propOnHost) {\r\n                return query[prop] == null || host[propOnHost || prop] === query[prop];\r\n            }\r\n        };\r\n        ECEventProcessor.prototype.afterTrigger = function () {\r\n            this.eventInfo = null;\r\n        };\r\n        return ECEventProcessor;\r\n    }());\n\n    var seriesSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            if (seriesModel.legendSymbol) {\r\n                data.setVisual('legendSymbol', seriesModel.legendSymbol);\r\n            }\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            var symbolType = seriesModel.get('symbol');\r\n            var symbolSize = seriesModel.get('symbolSize');\r\n            var keepAspect = seriesModel.get('symbolKeepAspect');\r\n            var symbolRotate = seriesModel.get('symbolRotate');\r\n            var hasSymbolTypeCallback = isFunction(symbolType);\r\n            var hasSymbolSizeCallback = isFunction(symbolSize);\r\n            var hasSymbolRotateCallback = isFunction(symbolRotate);\r\n            var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\r\n            var seriesSymbol = (!hasSymbolTypeCallback && symbolType) ? symbolType : seriesModel.defaultSymbol;\r\n            var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\r\n            var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null;\r\n            data.setVisual({\r\n                legendSymbol: seriesModel.legendSymbol || seriesSymbol,\r\n                symbol: seriesSymbol,\r\n                symbolSize: seriesSymbolSize,\r\n                symbolKeepAspect: keepAspect,\r\n                symbolRotate: seriesSymbolRotate\r\n            });\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            function dataEach(data, idx) {\r\n                var rawValue = seriesModel.getRawValue(idx);\r\n                var params = seriesModel.getDataParams(idx);\r\n                hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\r\n                hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\r\n                hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\r\n            }\r\n            return { dataEach: hasCallback ? dataEach : null };\r\n        }\r\n    };\r\n    var dataSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            function dataEach(data, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var itemSymbolType = itemModel.getShallow('symbol', true);\r\n                var itemSymbolSize = itemModel.getShallow('symbolSize', true);\r\n                var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\r\n                var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true);\r\n                if (itemSymbolType != null) {\r\n                    data.setItemVisual(idx, 'symbol', itemSymbolType);\r\n                }\r\n                if (itemSymbolSize != null) {\r\n                    data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\r\n                }\r\n                if (itemSymbolRotate != null) {\r\n                    data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\r\n                }\r\n                if (itemSymbolKeepAspect != null) {\r\n                    data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\r\n                }\r\n            }\r\n            return { dataEach: data.hasItemOption ? dataEach : null };\r\n        }\r\n    };\n\n    function getItemVisualFromData(data, dataIndex, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getItemVisual(dataIndex, 'style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getItemVisual(dataIndex, 'style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getItemVisual(dataIndex, key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\r\n    function getVisualFromData(data, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getVisual('style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getVisual('style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getVisual(key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\n\n    var PI2$5 = Math.PI * 2;\r\n    var CMD$3 = PathProxy.CMD;\r\n    var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\n    function getCandidateAnchor(pos, distance, rect, outPt, outDir) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        switch (pos) {\r\n            case 'top':\r\n                outPt.set(rect.x + width / 2, rect.y - distance);\r\n                outDir.set(0, -1);\r\n                break;\r\n            case 'bottom':\r\n                outPt.set(rect.x + width / 2, rect.y + height + distance);\r\n                outDir.set(0, 1);\r\n                break;\r\n            case 'left':\r\n                outPt.set(rect.x - distance, rect.y + height / 2);\r\n                outDir.set(-1, 0);\r\n                break;\r\n            case 'right':\r\n                outPt.set(rect.x + width + distance, rect.y + height / 2);\r\n                outDir.set(1, 0);\r\n                break;\r\n        }\r\n    }\r\n    function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        x /= d;\r\n        y /= d;\r\n        var ox = x * r + cx;\r\n        var oy = y * r + cy;\r\n        if (Math.abs(startAngle - endAngle) % PI2$5 < 1e-4) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$5;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$5;\r\n        }\r\n        if ((angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$5 >= startAngle && angle + PI2$5 <= endAngle)) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        var x1 = r * Math.cos(startAngle) + cx;\r\n        var y1 = r * Math.sin(startAngle) + cy;\r\n        var x2 = r * Math.cos(endAngle) + cx;\r\n        var y2 = r * Math.sin(endAngle) + cy;\r\n        var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\r\n        var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\r\n        if (d1 < d2) {\r\n            out[0] = x1;\r\n            out[1] = y1;\r\n            return Math.sqrt(d1);\r\n        }\r\n        else {\r\n            out[0] = x2;\r\n            out[1] = y2;\r\n            return Math.sqrt(d2);\r\n        }\r\n    }\r\n    function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\r\n        var dx = x - x1;\r\n        var dy = y - y1;\r\n        var dx1 = x2 - x1;\r\n        var dy1 = y2 - y1;\r\n        var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n        dx1 /= lineLen;\r\n        dy1 /= lineLen;\r\n        var projectedLen = dx * dx1 + dy * dy1;\r\n        var t = projectedLen / lineLen;\r\n        if (limitToEnds) {\r\n            t = Math.min(Math.max(t, 0), 1);\r\n        }\r\n        t *= lineLen;\r\n        var ox = out[0] = x1 + t * dx1;\r\n        var oy = out[1] = y1 + t * dy1;\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    function projectPointToRect(x1, y1, width, height, x, y, out) {\r\n        if (width < 0) {\r\n            x1 = x1 + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y1 = y1 + height;\r\n            height = -height;\r\n        }\r\n        var x2 = x1 + width;\r\n        var y2 = y1 + height;\r\n        var ox = out[0] = Math.min(Math.max(x, x1), x2);\r\n        var oy = out[1] = Math.min(Math.max(y, y1), y2);\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    var tmpPt = [];\r\n    function nearestPointOnRect(pt, rect, out) {\r\n        var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\r\n        out.set(tmpPt[0], tmpPt[1]);\r\n        return dist;\r\n    }\r\n    function nearestPointOnPath(pt, path, out) {\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        var minDist = Infinity;\r\n        var data = path.data;\r\n        var x = pt.x;\r\n        var y = pt.y;\r\n        for (var i = 0; i < data.length;) {\r\n            var cmd = data[i++];\r\n            if (i === 1) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            var d = minDist;\r\n            switch (cmd) {\r\n                case CMD$3.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$3.L:\r\n                    d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.C:\r\n                    d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.Q:\r\n                    d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (i <= 1) {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$3.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\r\n                    break;\r\n                case CMD$3.Z:\r\n                    d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n            if (d < minDist) {\r\n                minDist = d;\r\n                out.set(tmpPt[0], tmpPt[1]);\r\n            }\r\n        }\r\n        return minDist;\r\n    }\r\n    var pt0 = new Point();\r\n    var pt1 = new Point();\r\n    var pt2 = new Point();\r\n    var dir = new Point();\r\n    var dir2 = new Point();\r\n    function updateLabelLinePoints(target, labelLineModel) {\r\n        if (!target) {\r\n            return;\r\n        }\r\n        var labelLine = target.getTextGuideLine();\r\n        var label = target.getTextContent();\r\n        if (!(label && labelLine)) {\r\n            return;\r\n        }\r\n        var labelGuideConfig = target.textGuideLineConfig || {};\r\n        var points = [[0, 0], [0, 0], [0, 0]];\r\n        var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\r\n        var labelRect = label.getBoundingRect().clone();\r\n        labelRect.applyTransform(label.getComputedTransform());\r\n        var minDist = Infinity;\r\n        var anchorPoint = labelGuideConfig && labelGuideConfig.anchor;\r\n        var targetTransform = target.getComputedTransform();\r\n        var targetInversedTransform = targetTransform && invert([], targetTransform);\r\n        var len = labelLineModel.get('length2') || 0;\r\n        if (anchorPoint) {\r\n            pt2.copy(anchorPoint);\r\n        }\r\n        for (var i = 0; i < searchSpace.length; i++) {\r\n            var candidate = searchSpace[i];\r\n            getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\r\n            Point.scaleAndAdd(pt1, pt0, dir, len);\r\n            pt1.transform(targetInversedTransform);\r\n            var boundingRect = target.getBoundingRect();\r\n            var dist = anchorPoint ? anchorPoint.distance(pt1)\r\n                : (target instanceof Path\r\n                    ? nearestPointOnPath(pt1, target.path, pt2)\r\n                    : nearestPointOnRect(pt1, boundingRect, pt2));\r\n            if (dist < minDist) {\r\n                minDist = dist;\r\n                pt1.transform(targetTransform);\r\n                pt2.transform(targetTransform);\r\n                pt2.toArray(points[0]);\r\n                pt1.toArray(points[1]);\r\n                pt0.toArray(points[2]);\r\n            }\r\n        }\r\n        limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\r\n        labelLine.setShape({ points: points });\r\n    }\r\n    var tmpArr = [];\r\n    var tmpProjPoint = new Point();\r\n    function limitTurnAngle(linePoints, minTurnAngle) {\r\n        if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\r\n            return;\r\n        }\r\n        minTurnAngle = minTurnAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt0, pt1);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(dir2);\r\n        var minTurnAngleCos = Math.cos(minTurnAngle);\r\n        if (minTurnAngleCos < angleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\r\n            var t = pt2.x !== pt1.x\r\n                ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n            if (isNaN(t)) {\r\n                return;\r\n            }\r\n            if (t < 0) {\r\n                Point.copy(tmpProjPoint, pt1);\r\n            }\r\n            else if (t > 1) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\r\n        if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\r\n            return;\r\n        }\r\n        maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt1, pt0);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(surfaceNormal);\r\n        var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\r\n        if (angleCos < maxSurfaceAngleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            var HALF_PI = Math.PI / 2;\r\n            var angle2 = Math.acos(dir2.dot(surfaceNormal));\r\n            var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\r\n            if (newAngle >= HALF_PI) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            else {\r\n                tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\r\n                var t = pt2.x !== pt1.x\r\n                    ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                    : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n                if (isNaN(t)) {\r\n                    return;\r\n                }\r\n                if (t < 0) {\r\n                    Point.copy(tmpProjPoint, pt1);\r\n                }\r\n                else if (t > 1) {\r\n                    Point.copy(tmpProjPoint, pt2);\r\n                }\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function setLabelLineState(labelLine, ignore, stateName, stateModel) {\r\n        var isNormal = stateName === 'normal';\r\n        var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\r\n        stateObj.ignore = ignore;\r\n        var smooth = stateModel.get('smooth');\r\n        if (smooth && smooth === true) {\r\n            smooth = 0.3;\r\n        }\r\n        stateObj.shape = stateObj.shape || {};\r\n        if (smooth > 0) {\r\n            stateObj.shape.smooth = smooth;\r\n        }\r\n        var styleObj = stateModel.getModel('lineStyle').getLineStyle();\r\n        isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\r\n    }\r\n    function buildLabelLinePath(path, shape) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (!points) {\r\n            return;\r\n        }\r\n        path.moveTo(points[0][0], points[0][1]);\r\n        if (smooth > 0 && points.length >= 3) {\r\n            var len1 = dist(points[0], points[1]);\r\n            var len2 = dist(points[1], points[2]);\r\n            if (!len1 || !len2) {\r\n                path.lineTo(points[1][0], points[1][1]);\r\n                path.lineTo(points[2][0], points[2][1]);\r\n                return;\r\n            }\r\n            var moveLen = Math.min(len1, len2) * smooth;\r\n            var midPoint0 = lerp([], points[1], points[0], moveLen / len1);\r\n            var midPoint2 = lerp([], points[1], points[2], moveLen / len2);\r\n            var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);\r\n            path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\r\n            path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\r\n        }\r\n        else {\r\n            for (var i = 1; i < points.length; i++) {\r\n                path.lineTo(points[i][0], points[i][1]);\r\n            }\r\n        }\r\n    }\r\n    function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\r\n        var labelLine = targetEl.getTextGuideLine();\r\n        var label = targetEl.getTextContent();\r\n        if (!label) {\r\n            if (labelLine) {\r\n                targetEl.removeTextGuideLine();\r\n            }\r\n            return;\r\n        }\r\n        var normalModel = statesModels.normal;\r\n        var showNormal = normalModel.get('show');\r\n        var labelIgnoreNormal = label.ignore;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateName = DISPLAY_STATES[i];\r\n            var stateModel = statesModels[stateName];\r\n            var isNormal = stateName === 'normal';\r\n            if (stateModel) {\r\n                var stateShow = stateModel.get('show');\r\n                var isLabelIgnored = isNormal\r\n                    ? labelIgnoreNormal\r\n                    : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\r\n                if (isLabelIgnored\r\n                    || !retrieve2(stateShow, showNormal)) {\r\n                    var stateObj = isNormal ? labelLine : (labelLine && labelLine.states.normal);\r\n                    if (stateObj) {\r\n                        stateObj.ignore = true;\r\n                    }\r\n                    continue;\r\n                }\r\n                if (!labelLine) {\r\n                    labelLine = new Polyline();\r\n                    targetEl.setTextGuideLine(labelLine);\r\n                    if (!isNormal && (labelIgnoreNormal || !showNormal)) {\r\n                        setLabelLineState(labelLine, true, 'normal', statesModels.normal);\r\n                    }\r\n                    if (targetEl.stateProxy) {\r\n                        labelLine.stateProxy = targetEl.stateProxy;\r\n                    }\r\n                }\r\n                setLabelLineState(labelLine, false, stateName, stateModel);\r\n            }\r\n        }\r\n        if (labelLine) {\r\n            defaults(labelLine.style, defaultStyle);\r\n            labelLine.style.fill = null;\r\n            labelLine.buildPath = buildLabelLinePath;\r\n        }\r\n    }\r\n    function getLabelLineStatesModels(itemModel, labelLineName) {\r\n        labelLineName = (labelLineName || 'labelLine');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelLineName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\r\n        }\r\n        return statesModels;\r\n    }\n\n    function prepareLayoutList(input) {\r\n        var list = [];\r\n        for (var i = 0; i < input.length; i++) {\r\n            var rawItem = input[i];\r\n            if (rawItem.defaultAttr.ignore) {\r\n                continue;\r\n            }\r\n            var label = rawItem.label;\r\n            var transform = label.getComputedTransform();\r\n            var localRect = label.getBoundingRect();\r\n            var isAxisAligned = !transform || (transform[1] < 1e-5 && transform[2] < 1e-5);\r\n            var minMargin = label.style.margin || 0;\r\n            var globalRect = localRect.clone();\r\n            globalRect.applyTransform(transform);\r\n            globalRect.x -= minMargin / 2;\r\n            globalRect.y -= minMargin / 2;\r\n            globalRect.width += minMargin;\r\n            globalRect.height += minMargin;\r\n            var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\r\n            list.push({\r\n                label: label,\r\n                labelLine: rawItem.labelLine,\r\n                rect: globalRect,\r\n                localRect: localRect,\r\n                obb: obb,\r\n                priority: rawItem.priority,\r\n                defaultAttr: rawItem.defaultAttr,\r\n                layoutOption: rawItem.computedLayoutOption,\r\n                axisAligned: isAxisAligned,\r\n                transform: transform\r\n            });\r\n        }\r\n        return list;\r\n    }\r\n    function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\r\n        var len = list.length;\r\n        if (len < 2) {\r\n            return;\r\n        }\r\n        list.sort(function (a, b) {\r\n            return a.rect[xyDim] - b.rect[xyDim];\r\n        });\r\n        var lastPos = 0;\r\n        var delta;\r\n        var adjusted = false;\r\n        var totalShifts = 0;\r\n        for (var i = 0; i < len; i++) {\r\n            var item = list[i];\r\n            var rect = item.rect;\r\n            delta = rect[xyDim] - lastPos;\r\n            if (delta < 0) {\r\n                rect[xyDim] -= delta;\r\n                item.label[xyDim] -= delta;\r\n                adjusted = true;\r\n            }\r\n            var shift = Math.max(-delta, 0);\r\n            totalShifts += shift;\r\n            lastPos = rect[xyDim] + rect[sizeDim];\r\n        }\r\n        if (totalShifts > 0 && balanceShift) {\r\n            shiftList(-totalShifts / len, 0, len);\r\n        }\r\n        var first = list[0];\r\n        var last = list[len - 1];\r\n        var minGap;\r\n        var maxGap;\r\n        updateMinMaxGap();\r\n        minGap < 0 && squeezeGaps(-minGap, 0.8);\r\n        maxGap < 0 && squeezeGaps(maxGap, 0.8);\r\n        updateMinMaxGap();\r\n        takeBoundsGap(minGap, maxGap, 1);\r\n        takeBoundsGap(maxGap, minGap, -1);\r\n        updateMinMaxGap();\r\n        if (minGap < 0) {\r\n            squeezeWhenBailout(-minGap);\r\n        }\r\n        if (maxGap < 0) {\r\n            squeezeWhenBailout(maxGap);\r\n        }\r\n        function updateMinMaxGap() {\r\n            minGap = first.rect[xyDim] - minBound;\r\n            maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\r\n        }\r\n        function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\r\n            if (gapThisBound < 0) {\r\n                var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\r\n                if (moveFromMaxGap > 0) {\r\n                    shiftList(moveFromMaxGap * moveDir, 0, len);\r\n                    var remained = moveFromMaxGap + gapThisBound;\r\n                    if (remained < 0) {\r\n                        squeezeGaps(-remained * moveDir, 1);\r\n                    }\r\n                }\r\n                else {\r\n                    squeezeGaps(-gapThisBound * moveDir, 1);\r\n                }\r\n            }\r\n        }\r\n        function shiftList(delta, start, end) {\r\n            if (delta !== 0) {\r\n                adjusted = true;\r\n            }\r\n            for (var i = start; i < end; i++) {\r\n                var item = list[i];\r\n                var rect = item.rect;\r\n                rect[xyDim] += delta;\r\n                item.label[xyDim] += delta;\r\n            }\r\n        }\r\n        function squeezeGaps(delta, maxSqeezePercent) {\r\n            var gaps = [];\r\n            var totalGaps = 0;\r\n            for (var i = 1; i < len; i++) {\r\n                var prevItemRect = list[i - 1].rect;\r\n                var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\r\n                gaps.push(gap);\r\n                totalGaps += gap;\r\n            }\r\n            if (!totalGaps) {\r\n                return;\r\n            }\r\n            var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\r\n            if (delta > 0) {\r\n                for (var i = 0; i < len - 1; i++) {\r\n                    var movement = gaps[i] * squeezePercent;\r\n                    shiftList(movement, 0, i + 1);\r\n                }\r\n            }\r\n            else {\r\n                for (var i = len - 1; i > 0; i--) {\r\n                    var movement = gaps[i - 1] * squeezePercent;\r\n                    shiftList(-movement, i, len);\r\n                }\r\n            }\r\n        }\r\n        function squeezeWhenBailout(delta) {\r\n            var dir = delta < 0 ? -1 : 1;\r\n            delta = Math.abs(delta);\r\n            var moveForEachLabel = Math.ceil(delta / (len - 1));\r\n            for (var i = 0; i < len - 1; i++) {\r\n                if (dir > 0) {\r\n                    shiftList(moveForEachLabel, 0, i + 1);\r\n                }\r\n                else {\r\n                    shiftList(-moveForEachLabel, len - i - 1, len);\r\n                }\r\n                delta -= moveForEachLabel;\r\n                if (delta <= 0) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        return adjusted;\r\n    }\r\n    function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n        return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n    }\r\n    function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n        return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n    }\r\n    function hideOverlap(labelList) {\r\n        var displayedLabels = [];\r\n        labelList.sort(function (a, b) {\r\n            return b.priority - a.priority;\r\n        });\r\n        var globalRect = new BoundingRect(0, 0, 0, 0);\r\n        for (var i = 0; i < labelList.length; i++) {\r\n            var labelItem = labelList[i];\r\n            var isAxisAligned = labelItem.axisAligned;\r\n            var localRect = labelItem.localRect;\r\n            var transform = labelItem.transform;\r\n            var label = labelItem.label;\r\n            var labelLine = labelItem.labelLine;\r\n            globalRect.copy(labelItem.rect);\r\n            globalRect.width -= 0.1;\r\n            globalRect.height -= 0.1;\r\n            globalRect.x += 0.05;\r\n            globalRect.y += 0.05;\r\n            var obb = labelItem.obb;\r\n            var overlapped = false;\r\n            for (var j = 0; j < displayedLabels.length; j++) {\r\n                var existsTextCfg = displayedLabels[j];\r\n                if (!globalRect.intersect(existsTextCfg.rect)) {\r\n                    continue;\r\n                }\r\n                if (isAxisAligned && existsTextCfg.axisAligned) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n                if (!existsTextCfg.obb) {\r\n                    existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\r\n                }\r\n                if (!obb) {\r\n                    obb = new OrientedBoundingRect(localRect, transform);\r\n                }\r\n                if (obb.intersect(existsTextCfg.obb)) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n            }\r\n            if (overlapped) {\r\n                label.hide();\r\n                labelLine && labelLine.hide();\r\n            }\r\n            else {\r\n                label.attr('ignore', labelItem.defaultAttr.ignore);\r\n                labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\r\n                displayedLabels.push(labelItem);\r\n            }\r\n        }\r\n    }\n\n    function cloneArr(points) {\r\n        if (points) {\r\n            var newPoints = [];\r\n            for (var i = 0; i < points.length; i++) {\r\n                newPoints.push(points[i].slice());\r\n            }\r\n            return newPoints;\r\n        }\r\n    }\r\n    function prepareLayoutCallbackParams(labelItem, hostEl) {\r\n        var labelAttr = labelItem.defaultAttr;\r\n        var label = labelItem.label;\r\n        var labelLine = hostEl && hostEl.getTextGuideLine();\r\n        return {\r\n            dataIndex: labelItem.dataIndex,\r\n            dataType: labelItem.dataType,\r\n            seriesIndex: labelItem.seriesModel.seriesIndex,\r\n            text: labelItem.label.style.text,\r\n            rect: labelItem.hostRect,\r\n            labelRect: labelAttr.rect,\r\n            align: label.style.align,\r\n            verticalAlign: label.style.verticalAlign,\r\n            labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\r\n        };\r\n    }\r\n    var LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\n    var dummyTransformable = new Transformable();\r\n    var labelLayoutInnerStore = makeInner();\r\n    var labelLineAnimationStore = makeInner();\r\n    function extendWithKeys(target, source, keys) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            if (source[key] != null) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n    }\r\n    var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\n    var LabelManager = (function () {\r\n        function LabelManager() {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        }\r\n        LabelManager.prototype.clearLabels = function () {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        };\r\n        LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\r\n            var labelStyle = label.style;\r\n            var hostEl = label.__hostTarget;\r\n            var textConfig = hostEl.textConfig || {};\r\n            var labelTransform = label.getComputedTransform();\r\n            var labelRect = label.getBoundingRect().plain();\r\n            BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\r\n            if (labelTransform) {\r\n                dummyTransformable.setLocalTransform(labelTransform);\r\n            }\r\n            else {\r\n                dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation =\r\n                    dummyTransformable.originX = dummyTransformable.originY = 0;\r\n                dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\r\n            }\r\n            var host = label.__hostTarget;\r\n            var hostRect;\r\n            if (host) {\r\n                hostRect = host.getBoundingRect().plain();\r\n                var transform = host.getComputedTransform();\r\n                BoundingRect.applyTransform(hostRect, hostRect, transform);\r\n            }\r\n            var labelGuide = hostRect && host.getTextGuideLine();\r\n            this._labelList.push({\r\n                label: label,\r\n                labelLine: labelGuide,\r\n                seriesModel: seriesModel,\r\n                dataIndex: dataIndex,\r\n                dataType: dataType,\r\n                layoutOption: layoutOption,\r\n                computedLayoutOption: null,\r\n                hostRect: hostRect,\r\n                priority: hostRect ? hostRect.width * hostRect.height : 0,\r\n                defaultAttr: {\r\n                    ignore: label.ignore,\r\n                    labelGuideIgnore: labelGuide && labelGuide.ignore,\r\n                    x: dummyTransformable.x,\r\n                    y: dummyTransformable.y,\r\n                    rotation: dummyTransformable.rotation,\r\n                    rect: labelRect,\r\n                    style: {\r\n                        x: labelStyle.x,\r\n                        y: labelStyle.y,\r\n                        align: labelStyle.align,\r\n                        verticalAlign: labelStyle.verticalAlign,\r\n                        width: labelStyle.width,\r\n                        height: labelStyle.height,\r\n                        fontSize: labelStyle.fontSize\r\n                    },\r\n                    cursor: label.cursor,\r\n                    attachedPos: textConfig.position,\r\n                    attachedRot: textConfig.rotation\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.addLabelsOfSeries = function (chartView) {\r\n            var _this = this;\r\n            this._chartViewList.push(chartView);\r\n            var seriesModel = chartView.__model;\r\n            var layoutOption = seriesModel.get('labelLayout');\r\n            if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\r\n                return;\r\n            }\r\n            chartView.group.traverse(function (child) {\r\n                if (child.ignore) {\r\n                    return true;\r\n                }\r\n                var textEl = child.getTextContent();\r\n                var ecData = getECData(child);\r\n                var dataIndex = ecData.dataIndex;\r\n                if (textEl && dataIndex != null && !textEl.disableLabelLayout) {\r\n                    _this._addLabel(dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.updateLayoutConfig = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            function createDragHandler(el, labelLineModel) {\r\n                return function () {\r\n                    updateLabelLinePoints(el, labelLineModel);\r\n                };\r\n            }\r\n            for (var i = 0; i < this._labelList.length; i++) {\r\n                var labelItem = this._labelList[i];\r\n                var label = labelItem.label;\r\n                var hostEl = label.__hostTarget;\r\n                var defaultLabelAttr = labelItem.defaultAttr;\r\n                var layoutOption = void 0;\r\n                if (typeof labelItem.layoutOption === 'function') {\r\n                    layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\r\n                }\r\n                else {\r\n                    layoutOption = labelItem.layoutOption;\r\n                }\r\n                layoutOption = layoutOption || {};\r\n                labelItem.computedLayoutOption = layoutOption;\r\n                var degreeToRadian = Math.PI / 180;\r\n                if (hostEl) {\r\n                    hostEl.setTextConfig({\r\n                        local: false,\r\n                        position: (layoutOption.x != null || layoutOption.y != null)\r\n                            ? null : defaultLabelAttr.attachedPos,\r\n                        rotation: layoutOption.rotate != null\r\n                            ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\r\n                        offset: [layoutOption.dx || 0, layoutOption.dy || 0]\r\n                    });\r\n                }\r\n                var needsUpdateLabelLine = false;\r\n                if (layoutOption.x != null) {\r\n                    label.x = parsePercent$2(layoutOption.x, width);\r\n                    label.setStyle('x', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.x = defaultLabelAttr.x;\r\n                    label.setStyle('x', defaultLabelAttr.style.x);\r\n                }\r\n                if (layoutOption.y != null) {\r\n                    label.y = parsePercent$2(layoutOption.y, height);\r\n                    label.setStyle('y', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.y = defaultLabelAttr.y;\r\n                    label.setStyle('y', defaultLabelAttr.style.y);\r\n                }\r\n                if (layoutOption.labelLinePoints) {\r\n                    var guideLine = hostEl.getTextGuideLine();\r\n                    if (guideLine) {\r\n                        guideLine.setShape({ points: layoutOption.labelLinePoints });\r\n                        needsUpdateLabelLine = false;\r\n                    }\r\n                }\r\n                var labelLayoutStore = labelLayoutInnerStore(label);\r\n                labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\r\n                label.rotation = layoutOption.rotate != null\r\n                    ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\r\n                for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\r\n                    var key = LABEL_OPTION_TO_STYLE_KEYS[k];\r\n                    label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\r\n                }\r\n                if (layoutOption.draggable) {\r\n                    label.draggable = true;\r\n                    label.cursor = 'move';\r\n                    if (hostEl) {\r\n                        var data = labelItem.seriesModel.getData(labelItem.dataType);\r\n                        var itemModel = data.getItemModel(labelItem.dataIndex);\r\n                        label.on('drag', createDragHandler(hostEl, itemModel.getModel('labelLine')));\r\n                    }\r\n                }\r\n                else {\r\n                    label.off('drag');\r\n                    label.cursor = defaultLabelAttr.cursor;\r\n                }\r\n            }\r\n        };\r\n        LabelManager.prototype.layout = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            var labelList = prepareLayoutList(this._labelList);\r\n            var labelsNeedsAdjustOnX = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftX';\r\n            });\r\n            var labelsNeedsAdjustOnY = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftY';\r\n            });\r\n            shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\r\n            shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\r\n            var labelsNeedsHideOverlap = filter(labelList, function (item) {\r\n                return item.layoutOption.hideOverlap;\r\n            });\r\n            hideOverlap(labelsNeedsHideOverlap);\r\n        };\r\n        LabelManager.prototype.processLabelsOverall = function () {\r\n            var _this = this;\r\n            each(this._chartViewList, function (chartView) {\r\n                var seriesModel = chartView.__model;\r\n                var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\r\n                var animationEnabled = seriesModel.isAnimationEnabled();\r\n                chartView.group.traverse(function (child) {\r\n                    if (child.ignore) {\r\n                        return true;\r\n                    }\r\n                    var needsUpdateLabelLine = !ignoreLabelLineUpdate;\r\n                    var label = child.getTextContent();\r\n                    if (!needsUpdateLabelLine && label) {\r\n                        needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\r\n                    }\r\n                    if (needsUpdateLabelLine) {\r\n                        _this._updateLabelLine(child, seriesModel);\r\n                    }\r\n                    if (animationEnabled) {\r\n                        _this._animateLabels(child, seriesModel);\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var ecData = getECData(el);\r\n            var dataIndex = ecData.dataIndex;\r\n            if (textEl && dataIndex != null) {\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var defaultStyle = {};\r\n                var visualStyle = data.getItemVisual(dataIndex, 'style');\r\n                var visualType = data.getVisual('drawType');\r\n                defaultStyle.stroke = visualStyle[visualType];\r\n                var labelLineModel = itemModel.getModel('labelLine');\r\n                setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\r\n                updateLabelLinePoints(el, labelLineModel);\r\n            }\r\n        };\r\n        LabelManager.prototype._animateLabels = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var guideLine = el.getTextGuideLine();\r\n            if (textEl && !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation) {\r\n                var layoutStore = labelLayoutInnerStore(textEl);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var newProps = {\r\n                    x: textEl.x,\r\n                    y: textEl.y,\r\n                    rotation: textEl.rotation\r\n                };\r\n                if (!oldLayout) {\r\n                    textEl.attr(newProps);\r\n                    var oldOpacity = retrieve2(textEl.style.opacity, 1);\r\n                    textEl.style.opacity = 0;\r\n                    initProps(textEl, {\r\n                        style: { opacity: oldOpacity }\r\n                    }, seriesModel);\r\n                }\r\n                else {\r\n                    textEl.attr(oldLayout);\r\n                    var prevStates = el.prevStates;\r\n                    if (prevStates) {\r\n                        if (indexOf(prevStates, 'select') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutSelect);\r\n                        }\r\n                        if (indexOf(prevStates, 'emphasis') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutEmphasis);\r\n                        }\r\n                    }\r\n                    updateProps(textEl, newProps, seriesModel);\r\n                }\r\n                layoutStore.oldLayout = newProps;\r\n                if (textEl.states.select) {\r\n                    var layoutSelect = layoutStore.oldLayoutSelect = {};\r\n                    extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\r\n                }\r\n                if (textEl.states.emphasis) {\r\n                    var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\r\n                    extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\r\n                }\r\n            }\r\n            if (guideLine && !guideLine.ignore && !guideLine.invisible) {\r\n                var layoutStore = labelLineAnimationStore(guideLine);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var newLayout = { points: guideLine.shape.points };\r\n                if (!oldLayout) {\r\n                    guideLine.setShape(newLayout);\r\n                    guideLine.style.strokePercent = 0;\r\n                    initProps(guideLine, {\r\n                        style: { strokePercent: 1 }\r\n                    }, seriesModel);\r\n                }\r\n                else {\r\n                    guideLine.attr({ shape: oldLayout });\r\n                    updateProps(guideLine, {\r\n                        shape: newLayout\r\n                    }, seriesModel);\r\n                }\r\n                layoutStore.oldLayout = newLayout;\r\n            }\r\n        };\r\n        return LabelManager;\r\n    }());\n\n    function createLegacyDataSelectAction(seriesType, ecRegisterAction) {\r\n        function getSeriesIndices(ecModel, payload) {\r\n            var seriesIndices = [];\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: seriesType, query: payload\r\n            }, function (seriesModel) {\r\n                seriesIndices.push(seriesModel.seriesIndex);\r\n            });\r\n            return seriesIndices;\r\n        }\r\n        each([\r\n            [seriesType + 'ToggleSelect', 'toggleSelect'],\r\n            [seriesType + 'Select', 'select'],\r\n            [seriesType + 'UnSelect', 'unselect']\r\n        ], function (eventsMap) {\r\n            ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\r\n                payload = extend({}, payload);\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(payload.type, eventsMap[1]);\r\n                }\r\n                api.dispatchAction(extend(payload, {\r\n                    type: eventsMap[1],\r\n                    seriesIndex: getSeriesIndices(ecModel, payload)\r\n                }));\r\n            });\r\n        });\r\n    }\r\n    function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, payload) {\r\n        var legacyEventName = type + eventPostfix;\r\n        if (!ecIns.isSilent(legacyEventName)) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\r\n            }\r\n            var ecModel = ecIns.getModel();\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: 'pie'\r\n            }, function (seriesModel) {\r\n                var seriesIndex = seriesModel.seriesIndex;\r\n                var selected = payload.selected;\r\n                for (var i = 0; i < selected.length; i++) {\r\n                    if (selected[i].seriesIndex === seriesIndex) {\r\n                        var data = seriesModel.getData();\r\n                        var dataIndex = queryDataIndex(data, payload.fromActionPayload);\r\n                        ecIns.trigger(legacyEventName, {\r\n                            type: legacyEventName,\r\n                            seriesId: seriesModel.id,\r\n                            name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\r\n                            selected: extend({}, seriesModel.option.selectedMap)\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function handleLegacySelectEvents(messageCenter, ecIns) {\r\n        messageCenter.on('selectchanged', function (params) {\r\n            if (params.isFromClick) {\r\n                handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, params);\r\n            }\r\n            else if (params.fromAction === 'select') {\r\n                handleSeriesLegacySelectEvents('map', 'selected', ecIns, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selected', ecIns, params);\r\n            }\r\n            else if (params.fromAction === 'unselect') {\r\n                handleSeriesLegacySelectEvents('map', 'unselected', ecIns, params);\r\n                handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, params);\r\n            }\r\n        });\r\n    }\n\n    function createLinearGradient(ctx, obj, rect) {\r\n        var x = obj.x == null ? 0 : obj.x;\r\n        var x2 = obj.x2 == null ? 1 : obj.x2;\r\n        var y = obj.y == null ? 0 : obj.y;\r\n        var y2 = obj.y2 == null ? 0 : obj.y2;\r\n        if (!obj.global) {\r\n            x = x * rect.width + rect.x;\r\n            x2 = x2 * rect.width + rect.x;\r\n            y = y * rect.height + rect.y;\r\n            y2 = y2 * rect.height + rect.y;\r\n        }\r\n        x = isNaN(x) ? 0 : x;\r\n        x2 = isNaN(x2) ? 1 : x2;\r\n        y = isNaN(y) ? 0 : y;\r\n        y2 = isNaN(y2) ? 0 : y2;\r\n        var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\r\n        return canvasGradient;\r\n    }\r\n    function createRadialGradient(ctx, obj, rect) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var min = Math.min(width, height);\r\n        var x = obj.x == null ? 0.5 : obj.x;\r\n        var y = obj.y == null ? 0.5 : obj.y;\r\n        var r = obj.r == null ? 0.5 : obj.r;\r\n        if (!obj.global) {\r\n            x = x * width + rect.x;\r\n            y = y * height + rect.y;\r\n            r = r * min;\r\n        }\r\n        var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\r\n        return canvasGradient;\r\n    }\r\n    function getCanvasGradient(ctx, obj, rect) {\r\n        var canvasGradient = obj.type === 'radial'\r\n            ? createRadialGradient(ctx, obj, rect)\r\n            : createLinearGradient(ctx, obj, rect);\r\n        var colorStops = obj.colorStops;\r\n        for (var i = 0; i < colorStops.length; i++) {\r\n            canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\r\n        }\r\n        return canvasGradient;\r\n    }\n\n    var pathProxyForDraw = new PathProxy(true);\r\n    function styleHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n    }\r\n    function styleHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== 'none';\r\n    }\r\n    function doFillPath(ctx, style) {\r\n        if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n            ctx.fill();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.fill();\r\n        }\r\n    }\r\n    function doStrokePath(ctx, style) {\r\n        if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n            ctx.stroke();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.stroke();\r\n        }\r\n    }\r\n    function createCanvasPattern(ctx, pattern, el) {\r\n        var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n        if (isImageReady(image)) {\r\n            return ctx.createPattern(image, pattern.repeat || 'repeat');\r\n        }\r\n    }\r\n    function brushPath(ctx, el, style, inBatch) {\r\n        var hasStroke = styleHasStroke(style);\r\n        var hasFill = styleHasFill(style);\r\n        var strokePercent = style.strokePercent;\r\n        var strokePart = strokePercent < 1;\r\n        var firstDraw = !el.path;\r\n        if ((!el.silent || strokePart) && firstDraw) {\r\n            el.createPathProxy();\r\n        }\r\n        var path = el.path || pathProxyForDraw;\r\n        if (!inBatch) {\r\n            var fill = style.fill;\r\n            var stroke = style.stroke;\r\n            var hasFillGradient = hasFill && !!fill.colorStops;\r\n            var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n            var hasFillPattern = hasFill && !!fill.image;\r\n            var hasStrokePattern = hasStroke && !!stroke.image;\r\n            var fillGradient = void 0;\r\n            var strokeGradient = void 0;\r\n            var fillPattern = void 0;\r\n            var strokePattern = void 0;\r\n            var rect = void 0;\r\n            if (hasFillGradient || hasStrokeGradient) {\r\n                rect = el.getBoundingRect();\r\n            }\r\n            if (hasFillGradient) {\r\n                fillGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, fill, rect)\r\n                    : el.__canvasFillGradient;\r\n                el.__canvasFillGradient = fillGradient;\r\n            }\r\n            if (hasStrokeGradient) {\r\n                strokeGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, stroke, rect)\r\n                    : el.__canvasStrokeGradient;\r\n                el.__canvasStrokeGradient = strokeGradient;\r\n            }\r\n            if (hasFillPattern) {\r\n                fillPattern = (el.__dirty || !el.__canvasFillPattern)\r\n                    ? createCanvasPattern(ctx, fill, el)\r\n                    : el.__canvasFillPattern;\r\n                el.__canvasFillPattern = fillPattern;\r\n            }\r\n            if (hasStrokePattern) {\r\n                strokePattern = (el.__dirty || !el.__canvasStrokePattern)\r\n                    ? createCanvasPattern(ctx, stroke, el)\r\n                    : el.__canvasStrokePattern;\r\n                el.__canvasStrokePattern = fillPattern;\r\n            }\r\n            if (hasFillGradient) {\r\n                ctx.fillStyle = fillGradient;\r\n            }\r\n            else if (hasFillPattern) {\r\n                if (fillPattern) {\r\n                    ctx.fillStyle = fillPattern;\r\n                }\r\n                else {\r\n                    hasFill = false;\r\n                }\r\n            }\r\n            if (hasStrokeGradient) {\r\n                ctx.strokeStyle = strokeGradient;\r\n            }\r\n            else if (hasStrokePattern) {\r\n                if (strokePattern) {\r\n                    ctx.strokeStyle = strokePattern;\r\n                }\r\n                else {\r\n                    hasStroke = false;\r\n                }\r\n            }\r\n        }\r\n        var lineDash = style.lineDash;\r\n        var lineDashOffset = style.lineDashOffset;\r\n        var ctxLineDash = !!ctx.setLineDash;\r\n        var scale = el.getGlobalScale();\r\n        path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n        if (lineDash) {\r\n            var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n            if (lineScale_1 && lineScale_1 !== 1) {\r\n                lineDash = map(lineDash, function (rawVal) {\r\n                    return rawVal / lineScale_1;\r\n                });\r\n                lineDashOffset /= lineScale_1;\r\n            }\r\n        }\r\n        var needsRebuild = true;\r\n        if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\r\n            || (lineDash && !ctxLineDash && hasStroke)) {\r\n            path.setDPR(ctx.dpr);\r\n            if (strokePart) {\r\n                path.setContext(null);\r\n            }\r\n            else {\r\n                path.setContext(ctx);\r\n                needsRebuild = false;\r\n            }\r\n            path.reset();\r\n            if (lineDash && !ctxLineDash) {\r\n                path.setLineDash(lineDash);\r\n                path.setLineDashOffset(lineDashOffset);\r\n            }\r\n            el.buildPath(path, el.shape, inBatch);\r\n            path.toStatic();\r\n            el.pathUpdated();\r\n        }\r\n        if (needsRebuild) {\r\n            path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash(lineDash);\r\n            ctx.lineDashOffset = lineDashOffset;\r\n        }\r\n        if (!inBatch) {\r\n            if (style.strokeFirst) {\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n            }\r\n            else {\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n            }\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash([]);\r\n        }\r\n    }\r\n    function brushImage(ctx, el, style) {\r\n        var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n        if (!image || !isImageReady(image)) {\r\n            return;\r\n        }\r\n        var x = style.x || 0;\r\n        var y = style.y || 0;\r\n        var width = style.width;\r\n        var height = style.height;\r\n        var aspect = image.width / image.height;\r\n        if (width == null && height != null) {\r\n            width = height * aspect;\r\n        }\r\n        else if (height == null && width != null) {\r\n            height = width / aspect;\r\n        }\r\n        else if (width == null && height == null) {\r\n            width = image.width;\r\n            height = image.height;\r\n        }\r\n        if (style.sWidth && style.sHeight) {\r\n            var sx = style.sx || 0;\r\n            var sy = style.sy || 0;\r\n            ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n        }\r\n        else if (style.sx && style.sy) {\r\n            var sx = style.sx;\r\n            var sy = style.sy;\r\n            var sWidth = width - sx;\r\n            var sHeight = height - sy;\r\n            ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n        }\r\n        else {\r\n            ctx.drawImage(image, x, y, width, height);\r\n        }\r\n    }\r\n    function brushText(ctx, el, style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        if (text) {\r\n            ctx.font = style.font || DEFAULT_FONT;\r\n            ctx.textAlign = style.textAlign;\r\n            ctx.textBaseline = style.textBaseline;\r\n            if (ctx.setLineDash) {\r\n                var lineDash = style.lineDash;\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (lineDash) {\r\n                    var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n                    if (lineScale_2 && lineScale_2 !== 1) {\r\n                        lineDash = map(lineDash, function (rawVal) {\r\n                            return rawVal / lineScale_2;\r\n                        });\r\n                        lineDashOffset /= lineScale_2;\r\n                    }\r\n                }\r\n                ctx.setLineDash(lineDash || []);\r\n                ctx.lineDashOffset = lineDashOffset;\r\n            }\r\n            if (style.strokeFirst) {\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n            }\r\n            else {\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\n    var STROKE_PROPS = [\r\n        ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n    ];\r\n    function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n        var styleChanged = false;\r\n        if (!forceSetAll) {\r\n            prevStyle = prevStyle || {};\r\n            if (style === prevStyle) {\r\n                return false;\r\n            }\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? DEFAULT_COMMON_STYLE.opacity : style.opacity;\r\n        }\r\n        if (forceSetAll || style.blend !== prevStyle.blend) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n        }\r\n        for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n            var propName = SHADOW_NUMBER_PROPS[i];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n            }\r\n        }\r\n        if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        var style = getStyle(el, scope.inHover);\r\n        var prevStyle = forceSetAll\r\n            ? null\r\n            : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n        if (style === prevStyle) {\r\n            return false;\r\n        }\r\n        var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n        if (forceSetAll || style.fill !== prevStyle.fill) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.fillStyle = style.fill;\r\n        }\r\n        if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.strokeStyle = style.stroke;\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n        }\r\n        if (el.hasStroke()) {\r\n            var lineWidth = style.lineWidth;\r\n            var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\r\n            if (ctx.lineWidth !== newLineWidth) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx.lineWidth = newLineWidth;\r\n            }\r\n        }\r\n        for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n            var prop = STROKE_PROPS[i];\r\n            var propName = prop[0];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = style[propName] || prop[1];\r\n            }\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n    }\r\n    function setContextTransform(ctx, el) {\r\n        var m = el.transform;\r\n        var dpr = ctx.dpr || 1;\r\n        if (m) {\r\n            ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n        }\r\n        else {\r\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n        }\r\n    }\r\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n    var viewRect = new BoundingRect(0, 0, 0, 0);\r\n    function isDisplayableCulled(el, width, height) {\r\n        tmpRect.copy(el.getBoundingRect());\r\n        if (el.transform) {\r\n            tmpRect.applyTransform(el.transform);\r\n        }\r\n        viewRect.width = width;\r\n        viewRect.height = height;\r\n        return !tmpRect.intersect(viewRect);\r\n    }\r\n    function isClipPathChanged(clipPaths, prevClipPaths) {\r\n        if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\r\n            return false;\r\n        }\r\n        if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            if (clipPaths[i] !== prevClipPaths[i]) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function updateClipStatus(clipPaths, ctx, scope) {\r\n        var allClipped = false;\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            var clipPath = clipPaths[i];\r\n            allClipped = allClipped || clipPath.isZeroArea();\r\n            setContextTransform(ctx, clipPath);\r\n            ctx.beginPath();\r\n            clipPath.buildPath(ctx, clipPath.shape);\r\n            ctx.clip();\r\n        }\r\n        scope.allClipped = allClipped;\r\n    }\r\n    function isTransformChanged(m0, m1) {\r\n        if (m0 && m1) {\r\n            return m0[0] !== m1[0]\r\n                || m0[1] !== m1[1]\r\n                || m0[2] !== m1[2]\r\n                || m0[3] !== m1[3]\r\n                || m0[4] !== m1[4]\r\n                || m0[5] !== m1[5];\r\n        }\r\n        else if (!m0 && !m1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    var DRAW_TYPE_PATH = 1;\r\n    var DRAW_TYPE_IMAGE = 2;\r\n    var DRAW_TYPE_TEXT = 3;\r\n    var DRAW_TYPE_INCREMENTAL = 4;\r\n    function canPathBatch(style) {\r\n        var hasFill = styleHasFill(style);\r\n        var hasStroke = styleHasStroke(style);\r\n        return !(style.lineDash\r\n            || !(+hasFill ^ +hasStroke)\r\n            || (hasFill && typeof style.fill !== 'string')\r\n            || (hasStroke && typeof style.stroke !== 'string')\r\n            || style.strokePercent < 1\r\n            || style.strokeOpacity < 1\r\n            || style.fillOpacity < 1);\r\n    }\r\n    function flushPathDrawn(ctx, scope) {\r\n        scope.batchFill && ctx.fill();\r\n        scope.batchStroke && ctx.stroke();\r\n        scope.batchFill = '';\r\n        scope.batchStroke = '';\r\n    }\r\n    function getStyle(el, inHover) {\r\n        return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n    }\r\n    function brush(ctx, el, scope, isLast) {\r\n        var m = el.transform;\r\n        if (el.invisible\r\n            || el.style.opacity === 0\r\n            || (el.culling && isDisplayableCulled(el, scope.viewWidth, scope.viewHeight))\r\n            || (m && !m[0] && !m[3])) {\r\n            el.__dirty = 0;\r\n            return;\r\n        }\r\n        var clipPaths = el.__clipPaths;\r\n        var prevElClipPaths = scope.prevElClipPaths;\r\n        var forceSetTransform = false;\r\n        var forceSetStyle = false;\r\n        if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n            if (prevElClipPaths && prevElClipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.restore();\r\n                forceSetStyle = forceSetTransform = true;\r\n                scope.prevElClipPaths = null;\r\n                scope.allClipped = false;\r\n                scope.prevEl = null;\r\n            }\r\n            if (clipPaths && clipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.save();\r\n                updateClipStatus(clipPaths, ctx, scope);\r\n                forceSetTransform = true;\r\n            }\r\n            scope.prevElClipPaths = clipPaths;\r\n        }\r\n        if (scope.allClipped) {\r\n            return;\r\n        }\r\n        el.beforeBrush && el.beforeBrush();\r\n        el.innerBeforeBrush();\r\n        var prevEl = scope.prevEl;\r\n        if (!prevEl) {\r\n            forceSetStyle = forceSetTransform = true;\r\n        }\r\n        var canBatchPath = el instanceof Path\r\n            && el.autoBatch\r\n            && canPathBatch(el.style);\r\n        if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n            flushPathDrawn(ctx, scope);\r\n            setContextTransform(ctx, el);\r\n        }\r\n        else if (!canBatchPath) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        var style = getStyle(el, scope.inHover);\r\n        if (el instanceof Path) {\r\n            if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n                forceSetStyle = true;\r\n                scope.lastDrawType = DRAW_TYPE_PATH;\r\n            }\r\n            bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n            if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n                ctx.beginPath();\r\n            }\r\n            brushPath(ctx, el, style, canBatchPath);\r\n            if (canBatchPath) {\r\n                scope.batchFill = style.fill || '';\r\n                scope.batchStroke = style.stroke || '';\r\n            }\r\n        }\r\n        else {\r\n            if (el instanceof TSpan) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_TEXT;\r\n                }\r\n                bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushText(ctx, el, style);\r\n            }\r\n            else if (el instanceof ZRImage) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n                }\r\n                bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushImage(ctx, el, style);\r\n            }\r\n            else if (el instanceof IncrementalDisplayble) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n                }\r\n                brushIncremental(ctx, el, scope);\r\n            }\r\n        }\r\n        if (canBatchPath && isLast) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        el.innerAfterBrush();\r\n        el.afterBrush && el.afterBrush();\r\n        scope.prevEl = el;\r\n        el.__dirty = 0;\r\n    }\r\n    function brushIncremental(ctx, el, scope) {\r\n        var displayables = el.getDisplayables();\r\n        var temporalDisplayables = el.getTemporalDisplayables();\r\n        ctx.save();\r\n        var innerScope = {\r\n            prevElClipPaths: null,\r\n            prevEl: null,\r\n            allClipped: false,\r\n            viewWidth: scope.viewWidth,\r\n            viewHeight: scope.viewHeight,\r\n            inHover: scope.inHover\r\n        };\r\n        var i;\r\n        var len;\r\n        for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n            var displayable = displayables[i];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i === len - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        for (var i_1 = 0, len_1 = temporalDisplayables.length - 1; i_1 < len_1; i_1++) {\r\n            var displayable = temporalDisplayables[i_1];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        el.clearTemporalDisplayables();\r\n        el.notClear = true;\r\n        ctx.restore();\r\n    }\n\n    function returnFalse() {\r\n        return false;\r\n    }\r\n    function createDom(id, painter, dpr) {\r\n        var newDom = createCanvas();\r\n        var width = painter.getWidth();\r\n        var height = painter.getHeight();\r\n        var newDomStyle = newDom.style;\r\n        if (newDomStyle) {\r\n            newDomStyle.position = 'absolute';\r\n            newDomStyle.left = '0';\r\n            newDomStyle.top = '0';\r\n            newDomStyle.width = width + 'px';\r\n            newDomStyle.height = height + 'px';\r\n            newDom.setAttribute('data-zr-dom-id', id);\r\n        }\r\n        newDom.width = width * dpr;\r\n        newDom.height = height * dpr;\r\n        return newDom;\r\n    }\r\n    var Layer = (function (_super) {\r\n        __extends(Layer, _super);\r\n        function Layer(id, painter, dpr) {\r\n            var _this = _super.call(this) || this;\r\n            _this.motionBlur = false;\r\n            _this.lastFrameAlpha = 0.7;\r\n            _this.dpr = 1;\r\n            _this.virtual = false;\r\n            _this.config = {};\r\n            _this.incremental = false;\r\n            _this.zlevel = 0;\r\n            _this.__dirty = true;\r\n            _this.__used = false;\r\n            _this.__drawIndex = 0;\r\n            _this.__startIndex = 0;\r\n            _this.__endIndex = 0;\r\n            var dom;\r\n            dpr = dpr || devicePixelRatio;\r\n            if (typeof id === 'string') {\r\n                dom = createDom(id, painter, dpr);\r\n            }\r\n            else if (isObject(id)) {\r\n                dom = id;\r\n                id = dom.id;\r\n            }\r\n            _this.id = id;\r\n            _this.dom = dom;\r\n            var domStyle = dom.style;\r\n            if (domStyle) {\r\n                dom.onselectstart = returnFalse;\r\n                domStyle.webkitUserSelect = 'none';\r\n                domStyle.userSelect = 'none';\r\n                domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\r\n                domStyle['-webkit-touch-callout'] = 'none';\r\n                domStyle.padding = '0';\r\n                domStyle.margin = '0';\r\n                domStyle.borderWidth = '0';\r\n            }\r\n            _this.domBack = null;\r\n            _this.ctxBack = null;\r\n            _this.painter = painter;\r\n            _this.config = null;\r\n            _this.dpr = dpr;\r\n            return _this;\r\n        }\r\n        Layer.prototype.getElementCount = function () {\r\n            return this.__endIndex - this.__startIndex;\r\n        };\r\n        Layer.prototype.initContext = function () {\r\n            this.ctx = this.dom.getContext('2d');\r\n            this.ctx.dpr = this.dpr;\r\n        };\r\n        Layer.prototype.createBackBuffer = function () {\r\n            var dpr = this.dpr;\r\n            this.domBack = createDom('back-' + this.id, this.painter, dpr);\r\n            this.ctxBack = this.domBack.getContext('2d');\r\n            if (dpr !== 1) {\r\n                this.ctxBack.scale(dpr, dpr);\r\n            }\r\n        };\r\n        Layer.prototype.resize = function (width, height) {\r\n            var dpr = this.dpr;\r\n            var dom = this.dom;\r\n            var domStyle = dom.style;\r\n            var domBack = this.domBack;\r\n            if (domStyle) {\r\n                domStyle.width = width + 'px';\r\n                domStyle.height = height + 'px';\r\n            }\r\n            dom.width = width * dpr;\r\n            dom.height = height * dpr;\r\n            if (domBack) {\r\n                domBack.width = width * dpr;\r\n                domBack.height = height * dpr;\r\n                if (dpr !== 1) {\r\n                    this.ctxBack.scale(dpr, dpr);\r\n                }\r\n            }\r\n        };\r\n        Layer.prototype.clear = function (clearAll, clearColor) {\r\n            var dom = this.dom;\r\n            var ctx = this.ctx;\r\n            var width = dom.width;\r\n            var height = dom.height;\r\n            clearColor = clearColor || this.clearColor;\r\n            var haveMotionBLur = this.motionBlur && !clearAll;\r\n            var lastFrameAlpha = this.lastFrameAlpha;\r\n            var dpr = this.dpr;\r\n            var self = this;\r\n            if (haveMotionBLur) {\r\n                if (!this.domBack) {\r\n                    this.createBackBuffer();\r\n                }\r\n                this.ctxBack.globalCompositeOperation = 'copy';\r\n                this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\r\n            }\r\n            ctx.clearRect(0, 0, width, height);\r\n            if (clearColor && clearColor !== 'transparent') {\r\n                var clearColorGradientOrPattern = void 0;\r\n                if (isGradientObject(clearColor)) {\r\n                    clearColorGradientOrPattern = clearColor.__canvasGradient\r\n                        || getCanvasGradient(ctx, clearColor, {\r\n                            x: 0,\r\n                            y: 0,\r\n                            width: width,\r\n                            height: height\r\n                        });\r\n                    clearColor.__canvasGradient = clearColorGradientOrPattern;\r\n                }\r\n                else if (isPatternObject(clearColor)) {\r\n                    clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\r\n                        dirty: function () {\r\n                            self.__painter.refresh();\r\n                        }\r\n                    });\r\n                }\r\n                ctx.save();\r\n                ctx.fillStyle = clearColorGradientOrPattern || clearColor;\r\n                ctx.fillRect(0, 0, width, height);\r\n                ctx.restore();\r\n            }\r\n            if (haveMotionBLur) {\r\n                var domBack = this.domBack;\r\n                ctx.save();\r\n                ctx.globalAlpha = lastFrameAlpha;\r\n                ctx.drawImage(domBack, 0, 0, width, height);\r\n                ctx.restore();\r\n            }\r\n        };\r\n        return Layer;\r\n    }(Eventful));\n\n    var HOVER_LAYER_ZLEVEL = 1e5;\r\n    var CANVAS_ZLEVEL = 314159;\r\n    var EL_AFTER_INCREMENTAL_INC = 0.01;\r\n    var INCREMENTAL_INC = 0.001;\r\n    function parseInt10(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function isLayerValid(layer) {\r\n        if (!layer) {\r\n            return false;\r\n        }\r\n        if (layer.__builtin__) {\r\n            return true;\r\n        }\r\n        if (typeof (layer.resize) !== 'function'\r\n            || typeof (layer.refresh) !== 'function') {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function createRoot(width, height) {\r\n        var domRoot = document.createElement('div');\r\n        domRoot.style.cssText = [\r\n            'position:relative',\r\n            'width:' + width + 'px',\r\n            'height:' + height + 'px',\r\n            'padding:0',\r\n            'margin:0',\r\n            'border-width:0'\r\n        ].join(';') + ';';\r\n        return domRoot;\r\n    }\r\n    var CanvasPainter = (function () {\r\n        function CanvasPainter(root, storage, opts, id) {\r\n            this.type = 'canvas';\r\n            this._zlevelList = [];\r\n            this._layers = {};\r\n            this._layerConfig = {};\r\n            this._needsManuallyCompositing = false;\r\n            this.type = 'canvas';\r\n            var singleCanvas = !root.nodeName\r\n                || root.nodeName.toUpperCase() === 'CANVAS';\r\n            this._opts = opts = extend({}, opts || {});\r\n            this.dpr = opts.devicePixelRatio || devicePixelRatio;\r\n            this._singleCanvas = singleCanvas;\r\n            this.root = root;\r\n            var rootStyle = root.style;\r\n            if (rootStyle) {\r\n                rootStyle.webkitTapHighlightColor = 'transparent';\r\n                rootStyle.webkitUserSelect = 'none';\r\n                rootStyle.userSelect = 'none';\r\n                rootStyle['-webkit-touch-callout'] = 'none';\r\n                root.innerHTML = '';\r\n            }\r\n            this.storage = storage;\r\n            var zlevelList = this._zlevelList;\r\n            var layers = this._layers;\r\n            if (!singleCanvas) {\r\n                this._width = this._getSize(0);\r\n                this._height = this._getSize(1);\r\n                var domRoot = this._domRoot = createRoot(this._width, this._height);\r\n                root.appendChild(domRoot);\r\n            }\r\n            else {\r\n                var rootCanvas = root;\r\n                var width = rootCanvas.width;\r\n                var height = rootCanvas.height;\r\n                if (opts.width != null) {\r\n                    width = opts.width;\r\n                }\r\n                if (opts.height != null) {\r\n                    height = opts.height;\r\n                }\r\n                this.dpr = opts.devicePixelRatio || 1;\r\n                rootCanvas.width = width * this.dpr;\r\n                rootCanvas.height = height * this.dpr;\r\n                this._width = width;\r\n                this._height = height;\r\n                var mainLayer = new Layer(rootCanvas, this, this.dpr);\r\n                mainLayer.__builtin__ = true;\r\n                mainLayer.initContext();\r\n                layers[CANVAS_ZLEVEL] = mainLayer;\r\n                mainLayer.zlevel = CANVAS_ZLEVEL;\r\n                zlevelList.push(CANVAS_ZLEVEL);\r\n                this._domRoot = root;\r\n            }\r\n        }\r\n        CanvasPainter.prototype.getType = function () {\r\n            return 'canvas';\r\n        };\r\n        CanvasPainter.prototype.isSingleCanvas = function () {\r\n            return this._singleCanvas;\r\n        };\r\n        CanvasPainter.prototype.getViewportRoot = function () {\r\n            return this._domRoot;\r\n        };\r\n        CanvasPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        CanvasPainter.prototype.refresh = function (paintAll) {\r\n            var list = this.storage.getDisplayList(true);\r\n            var zlevelList = this._zlevelList;\r\n            this._redrawId = Math.random();\r\n            this._paintList(list, paintAll, this._redrawId);\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__ && layer.refresh) {\r\n                    var clearColor = i === 0 ? this._backgroundColor : null;\r\n                    layer.refresh(clearColor);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.refreshHover = function () {\r\n            this._paintHoverList(this.storage.getDisplayList(false));\r\n        };\r\n        CanvasPainter.prototype._paintHoverList = function (list) {\r\n            var len = list.length;\r\n            var hoverLayer = this._hoverlayer;\r\n            hoverLayer && hoverLayer.clear();\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var scope = {\r\n                inHover: true,\r\n                viewWidth: this._width,\r\n                viewHeight: this._height\r\n            };\r\n            var ctx;\r\n            for (var i = 0; i < len; i++) {\r\n                var el = list[i];\r\n                if (el.__inHover) {\r\n                    if (!hoverLayer) {\r\n                        hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\r\n                    }\r\n                    if (!ctx) {\r\n                        ctx = hoverLayer.ctx;\r\n                        ctx.save();\r\n                    }\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            if (ctx) {\r\n                ctx.restore();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getHoverLayer = function () {\r\n            return this.getLayer(HOVER_LAYER_ZLEVEL);\r\n        };\r\n        CanvasPainter.prototype._paintList = function (list, paintAll, redrawId) {\r\n            if (this._redrawId !== redrawId) {\r\n                return;\r\n            }\r\n            paintAll = paintAll || false;\r\n            this._updateLayerStatus(list);\r\n            var _a = this._doPaintList(list, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\r\n            if (this._needsManuallyCompositing) {\r\n                this._compositeManually();\r\n            }\r\n            if (needsRefreshHover) {\r\n                this._paintHoverList(list);\r\n            }\r\n            if (!finished) {\r\n                var self_1 = this;\r\n                requestAnimationFrame$1(function () {\r\n                    self_1._paintList(list, paintAll, redrawId);\r\n                });\r\n            }\r\n        };\r\n        CanvasPainter.prototype._compositeManually = function () {\r\n            var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\r\n            var width = this._domRoot.width;\r\n            var height = this._domRoot.height;\r\n            ctx.clearRect(0, 0, width, height);\r\n            this.eachBuiltinLayer(function (layer) {\r\n                if (layer.virtual) {\r\n                    ctx.drawImage(layer.dom, 0, 0, width, height);\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype._doPaintList = function (list, paintAll) {\r\n            var layerList = [];\r\n            for (var zi = 0; zi < this._zlevelList.length; zi++) {\r\n                var zlevel = this._zlevelList[zi];\r\n                var layer = this._layers[zlevel];\r\n                if (layer.__builtin__\r\n                    && layer !== this._hoverlayer\r\n                    && (layer.__dirty || paintAll)) {\r\n                    layerList.push(layer);\r\n                }\r\n            }\r\n            var finished = true;\r\n            var needsRefreshHover = false;\r\n            for (var k = 0; k < layerList.length; k++) {\r\n                var layer = layerList[k];\r\n                var ctx = layer.ctx;\r\n                var scope = {\r\n                    inHover: false,\r\n                    allClipped: false,\r\n                    prevEl: null,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                };\r\n                ctx.save();\r\n                var start = paintAll ? layer.__startIndex : layer.__drawIndex;\r\n                var useTimer = !paintAll && layer.incremental && Date.now;\r\n                var startTime = useTimer && Date.now();\r\n                var clearColor = layer.zlevel === this._zlevelList[0]\r\n                    ? this._backgroundColor : null;\r\n                if (layer.__startIndex === layer.__endIndex) {\r\n                    layer.clear(false, clearColor);\r\n                }\r\n                else if (start === layer.__startIndex) {\r\n                    var firstEl = list[start];\r\n                    if (!firstEl.incremental || !firstEl.notClear || paintAll) {\r\n                        layer.clear(false, clearColor);\r\n                    }\r\n                }\r\n                if (start === -1) {\r\n                    console.error('For some unknown reason. drawIndex is -1');\r\n                    start = layer.__startIndex;\r\n                }\r\n                var i = void 0;\r\n                for (i = start; i < layer.__endIndex; i++) {\r\n                    var el = list[i];\r\n                    if (el.__inHover) {\r\n                        needsRefreshHover = true;\r\n                    }\r\n                    brush(ctx, el, scope, i === layer.__endIndex - 1);\r\n                    if (useTimer) {\r\n                        var dTime = Date.now() - startTime;\r\n                        if (dTime > 15) {\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                layer.__drawIndex = i;\r\n                if (layer.__drawIndex < layer.__endIndex) {\r\n                    finished = false;\r\n                }\r\n                if (scope.prevElClipPaths) {\r\n                    ctx.restore();\r\n                }\r\n                ctx.restore();\r\n            }\r\n            if (env.wxa) {\r\n                each(this._layers, function (layer) {\r\n                    if (layer && layer.ctx && layer.ctx.draw) {\r\n                        layer.ctx.draw();\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                finished: finished,\r\n                needsRefreshHover: needsRefreshHover\r\n            };\r\n        };\r\n        CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\r\n            if (this._singleCanvas && !this._needsManuallyCompositing) {\r\n                zlevel = CANVAS_ZLEVEL;\r\n            }\r\n            var layer = this._layers[zlevel];\r\n            if (!layer) {\r\n                layer = new Layer('zr_' + zlevel, this, this.dpr);\r\n                layer.zlevel = zlevel;\r\n                layer.__builtin__ = true;\r\n                if (this._layerConfig[zlevel]) {\r\n                    merge(layer, this._layerConfig[zlevel], true);\r\n                }\r\n                else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\r\n                    merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\r\n                }\r\n                if (virtual) {\r\n                    layer.virtual = virtual;\r\n                }\r\n                this.insertLayer(zlevel, layer);\r\n                layer.initContext();\r\n            }\r\n            return layer;\r\n        };\r\n        CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\r\n            var layersMap = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var len = zlevelList.length;\r\n            var domRoot = this._domRoot;\r\n            var prevLayer = null;\r\n            var i = -1;\r\n            if (layersMap[zlevel]) {\r\n                logError('ZLevel ' + zlevel + ' has been used already');\r\n                return;\r\n            }\r\n            if (!isLayerValid(layer)) {\r\n                logError('Layer of zlevel ' + zlevel + ' is not valid');\r\n                return;\r\n            }\r\n            if (len > 0 && zlevel > zlevelList[0]) {\r\n                for (i = 0; i < len - 1; i++) {\r\n                    if (zlevelList[i] < zlevel\r\n                        && zlevelList[i + 1] > zlevel) {\r\n                        break;\r\n                    }\r\n                }\r\n                prevLayer = layersMap[zlevelList[i]];\r\n            }\r\n            zlevelList.splice(i + 1, 0, zlevel);\r\n            layersMap[zlevel] = layer;\r\n            if (!layer.virtual) {\r\n                if (prevLayer) {\r\n                    var prevDom = prevLayer.dom;\r\n                    if (prevDom.nextSibling) {\r\n                        domRoot.insertBefore(layer.dom, prevDom.nextSibling);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n                else {\r\n                    if (domRoot.firstChild) {\r\n                        domRoot.insertBefore(layer.dom, domRoot.firstChild);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n            }\r\n            layer.__painter = this;\r\n        };\r\n        CanvasPainter.prototype.eachLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                cb.call(context, this._layers[z], z);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayers = function () {\r\n            return this._layers;\r\n        };\r\n        CanvasPainter.prototype._updateLayerStatus = function (list) {\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                layer.__dirty = layer.__used = false;\r\n            });\r\n            function updatePrevLayer(idx) {\r\n                if (prevLayer) {\r\n                    if (prevLayer.__endIndex !== idx) {\r\n                        prevLayer.__dirty = true;\r\n                    }\r\n                    prevLayer.__endIndex = idx;\r\n                }\r\n            }\r\n            if (this._singleCanvas) {\r\n                for (var i_1 = 1; i_1 < list.length; i_1++) {\r\n                    var el = list[i_1];\r\n                    if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\r\n                        this._needsManuallyCompositing = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            var prevLayer = null;\r\n            var incrementalLayerCount = 0;\r\n            var prevZlevel;\r\n            var i;\r\n            for (i = 0; i < list.length; i++) {\r\n                var el = list[i];\r\n                var zlevel = el.zlevel;\r\n                var layer = void 0;\r\n                if (prevZlevel !== zlevel) {\r\n                    prevZlevel = zlevel;\r\n                    incrementalLayerCount = 0;\r\n                }\r\n                if (el.incremental) {\r\n                    layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\r\n                    layer.incremental = true;\r\n                    incrementalLayerCount = 1;\r\n                }\r\n                else {\r\n                    layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\r\n                }\r\n                if (!layer.__builtin__) {\r\n                    logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\r\n                }\r\n                if (layer !== prevLayer) {\r\n                    layer.__used = true;\r\n                    if (layer.__startIndex !== i) {\r\n                        layer.__dirty = true;\r\n                    }\r\n                    layer.__startIndex = i;\r\n                    if (!layer.incremental) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                    else {\r\n                        layer.__drawIndex = -1;\r\n                    }\r\n                    updatePrevLayer(i);\r\n                    prevLayer = layer;\r\n                }\r\n                if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\r\n                    layer.__dirty = true;\r\n                    if (layer.incremental && layer.__drawIndex < 0) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                }\r\n            }\r\n            updatePrevLayer(i);\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                if (!layer.__used && layer.getElementCount() > 0) {\r\n                    layer.__dirty = true;\r\n                    layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\r\n                }\r\n                if (layer.__dirty && layer.__drawIndex < 0) {\r\n                    layer.__drawIndex = layer.__startIndex;\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype.clear = function () {\r\n            this.eachBuiltinLayer(this._clearLayer);\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype._clearLayer = function (layer) {\r\n            layer.clear();\r\n        };\r\n        CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            this._backgroundColor = backgroundColor;\r\n        };\r\n        CanvasPainter.prototype.configLayer = function (zlevel, config) {\r\n            if (config) {\r\n                var layerConfig = this._layerConfig;\r\n                if (!layerConfig[zlevel]) {\r\n                    layerConfig[zlevel] = config;\r\n                }\r\n                else {\r\n                    merge(layerConfig[zlevel], config, true);\r\n                }\r\n                for (var i = 0; i < this._zlevelList.length; i++) {\r\n                    var _zlevel = this._zlevelList[i];\r\n                    if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\r\n                        var layer = this._layers[_zlevel];\r\n                        merge(layer, layerConfig[zlevel], true);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.delLayer = function (zlevel) {\r\n            var layers = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var layer = layers[zlevel];\r\n            if (!layer) {\r\n                return;\r\n            }\r\n            layer.dom.parentNode.removeChild(layer.dom);\r\n            delete layers[zlevel];\r\n            zlevelList.splice(indexOf(zlevelList, zlevel), 1);\r\n        };\r\n        CanvasPainter.prototype.resize = function (width, height) {\r\n            if (!this._domRoot.style) {\r\n                if (width == null || height == null) {\r\n                    return;\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n                this.getLayer(CANVAS_ZLEVEL).resize(width, height);\r\n            }\r\n            else {\r\n                var domRoot = this._domRoot;\r\n                domRoot.style.display = 'none';\r\n                var opts = this._opts;\r\n                width != null && (opts.width = width);\r\n                height != null && (opts.height = height);\r\n                width = this._getSize(0);\r\n                height = this._getSize(1);\r\n                domRoot.style.display = '';\r\n                if (this._width !== width || height !== this._height) {\r\n                    domRoot.style.width = width + 'px';\r\n                    domRoot.style.height = height + 'px';\r\n                    for (var id in this._layers) {\r\n                        if (this._layers.hasOwnProperty(id)) {\r\n                            this._layers[id].resize(width, height);\r\n                        }\r\n                    }\r\n                    this.refresh(true);\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.clearLayer = function (zlevel) {\r\n            var layer = this._layers[zlevel];\r\n            if (layer) {\r\n                layer.clear();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this.root =\r\n                this.storage =\r\n                    this._domRoot =\r\n                        this._layers = null;\r\n        };\r\n        CanvasPainter.prototype.getRenderedCanvas = function (opts) {\r\n            opts = opts || {};\r\n            if (this._singleCanvas && !this._compositeManually) {\r\n                return this._layers[CANVAS_ZLEVEL].dom;\r\n            }\r\n            var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\r\n            var ctx = imageLayer.ctx;\r\n            imageLayer.initContext();\r\n            imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\r\n            if (opts.pixelRatio <= this.dpr) {\r\n                this.refresh();\r\n                var width_1 = imageLayer.dom.width;\r\n                var height_1 = imageLayer.dom.height;\r\n                var ctx_1 = imageLayer.ctx;\r\n                this.eachLayer(function (layer) {\r\n                    if (layer.__builtin__) {\r\n                        ctx_1.drawImage(layer.dom, 0, 0, width_1, height_1);\r\n                    }\r\n                    else if (layer.renderToCanvas) {\r\n                        imageLayer.ctx.save();\r\n                        layer.renderToCanvas(imageLayer.ctx);\r\n                        imageLayer.ctx.restore();\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var scope = {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                };\r\n                var displayList = this.storage.getDisplayList(true);\r\n                for (var i = 0, len = displayList.length; i < len; i++) {\r\n                    var el = displayList[i];\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            return imageLayer.dom;\r\n        };\r\n        CanvasPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        CanvasPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        CanvasPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\r\n                - (parseInt10(stl[plt]) || 0)\r\n                - (parseInt10(stl[prb]) || 0)) | 0;\r\n        };\r\n        CanvasPainter.prototype.pathToImage = function (path, dpr) {\r\n            dpr = dpr || this.dpr;\r\n            var canvas = document.createElement('canvas');\r\n            var ctx = canvas.getContext('2d');\r\n            var rect = path.getBoundingRect();\r\n            var style = path.style;\r\n            var shadowBlurSize = style.shadowBlur * dpr;\r\n            var shadowOffsetX = style.shadowOffsetX * dpr;\r\n            var shadowOffsetY = style.shadowOffsetY * dpr;\r\n            var lineWidth = path.hasStroke() ? style.lineWidth : 0;\r\n            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\r\n            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\r\n            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\r\n            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\r\n            var width = rect.width + leftMargin + rightMargin;\r\n            var height = rect.height + topMargin + bottomMargin;\r\n            canvas.width = width * dpr;\r\n            canvas.height = height * dpr;\r\n            ctx.scale(dpr, dpr);\r\n            ctx.clearRect(0, 0, width, height);\r\n            ctx.dpr = dpr;\r\n            var pathTransform = {\r\n                x: path.x,\r\n                y: path.y,\r\n                scaleX: path.scaleX,\r\n                scaleY: path.scaleY,\r\n                rotation: path.rotation,\r\n                originX: path.originX,\r\n                originY: path.originY\r\n            };\r\n            path.x = leftMargin - rect.x;\r\n            path.y = topMargin - rect.y;\r\n            path.rotation = 0;\r\n            path.scaleX = 1;\r\n            path.scaleY = 1;\r\n            path.updateTransform();\r\n            if (path) {\r\n                brush(ctx, path, {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                }, true);\r\n            }\r\n            var imgShape = new ZRImage({\r\n                style: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    image: canvas\r\n                }\r\n            });\r\n            extend(path, pathTransform);\r\n            return imgShape;\r\n        };\r\n        return CanvasPainter;\r\n    }());\n\n    registerPainter('canvas', CanvasPainter);\n\n    var assert$1 = assert;\r\n    var each$3 = each;\r\n    var isFunction$1 = isFunction;\r\n    var isObject$2 = isObject;\r\n    var version = '5.0.0-alpha.2';\r\n    var dependencies = {\r\n        zrender: '5.0.0-alpha.2'\r\n    };\r\n    var TEST_FRAME_REMAIN_TIME = 1;\r\n    var PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\n    var PRIORITY_PROCESSOR_DATASTACK = 900;\r\n    var PRIORITY_PROCESSOR_FILTER = 1000;\r\n    var PRIORITY_PROCESSOR_DEFAULT = 2000;\r\n    var PRIORITY_PROCESSOR_STATISTIC = 5000;\r\n    var PRIORITY_VISUAL_LAYOUT = 1000;\r\n    var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\n    var PRIORITY_VISUAL_GLOBAL = 2000;\r\n    var PRIORITY_VISUAL_CHART = 3000;\r\n    var PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\r\n    var PRIORITY_VISUAL_COMPONENT = 4000;\r\n    var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\n    var PRIORITY_VISUAL_BRUSH = 5000;\r\n    var PRIORITY = {\r\n        PROCESSOR: {\r\n            FILTER: PRIORITY_PROCESSOR_FILTER,\r\n            SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\r\n            STATISTIC: PRIORITY_PROCESSOR_STATISTIC\r\n        },\r\n        VISUAL: {\r\n            LAYOUT: PRIORITY_VISUAL_LAYOUT,\r\n            PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\r\n            GLOBAL: PRIORITY_VISUAL_GLOBAL,\r\n            CHART: PRIORITY_VISUAL_CHART,\r\n            POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\r\n            COMPONENT: PRIORITY_VISUAL_COMPONENT,\r\n            BRUSH: PRIORITY_VISUAL_BRUSH,\r\n            CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM\r\n        }\r\n    };\r\n    var IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\n    var OPTION_UPDATED_KEY = '__optionUpdated';\r\n    var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\n    var ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\n    var CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\n    var CONNECT_STATUS_PENDING = 0;\r\n    var CONNECT_STATUS_UPDATING = 1;\r\n    var CONNECT_STATUS_UPDATED = 2;\r\n    function createRegisterEventWithLowercaseECharts(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.isDisposed()) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function createRegisterEventWithLowercaseMessageCenter(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function toLowercaseNameAndCallEventful(host, method, args) {\r\n        args[0] = args[0] && args[0].toLowerCase();\r\n        return Eventful.prototype[method].apply(host, args);\r\n    }\r\n    var MessageCenter = (function (_super) {\r\n        __extends(MessageCenter, _super);\r\n        function MessageCenter() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return MessageCenter;\r\n    }(Eventful));\r\n    var messageCenterProto = MessageCenter.prototype;\r\n    messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\n    messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\n    var prepare;\r\n    var prepareView;\r\n    var updateDirectly;\r\n    var updateMethods;\r\n    var doConvertPixel;\r\n    var updateStreamModes;\r\n    var doDispatchAction;\r\n    var flushPendingActions;\r\n    var triggerUpdatedEvent;\r\n    var bindRenderedEvent;\r\n    var bindMouseEvent;\r\n    var clearColorPalette;\r\n    var render;\r\n    var renderComponents;\r\n    var renderSeries;\r\n    var performPostUpdateFuncs;\r\n    var createExtensionAPI;\r\n    var enableConnect;\r\n    var markStatusToUpdate;\r\n    var applyChangedStates;\r\n    var ECharts = (function (_super) {\r\n        __extends(ECharts, _super);\r\n        function ECharts(dom, theme, opts) {\r\n            var _this = _super.call(this, new ECEventProcessor()) || this;\r\n            _this._chartsViews = [];\r\n            _this._chartsMap = {};\r\n            _this._componentsViews = [];\r\n            _this._componentsMap = {};\r\n            _this._pendingActions = [];\r\n            opts = opts || {};\r\n            if (typeof theme === 'string') {\r\n                theme = themeStorage[theme];\r\n            }\r\n            _this._dom = dom;\r\n            var defaultRenderer = 'canvas';\r\n            if (__DEV__) {\r\n                defaultRenderer = (typeof window === 'undefined' ? global : window).__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\r\n            }\r\n            var zr = _this._zr = init(dom, {\r\n                renderer: opts.renderer || defaultRenderer,\r\n                devicePixelRatio: opts.devicePixelRatio,\r\n                width: opts.width,\r\n                height: opts.height\r\n            });\r\n            _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\r\n            theme = clone(theme);\r\n            theme && backwardCompat(theme, true);\r\n            _this._theme = theme;\r\n            _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\r\n            _this._coordSysMgr = new CoordinateSystemManager();\r\n            var api = _this._api = createExtensionAPI(_this);\r\n            function prioritySortFunc(a, b) {\r\n                return a.__prio - b.__prio;\r\n            }\r\n            sort(visualFuncs, prioritySortFunc);\r\n            sort(dataProcessorFuncs, prioritySortFunc);\r\n            _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\r\n            _this._messageCenter = new MessageCenter();\r\n            _this._labelManager = new LabelManager();\r\n            _this._initEvents();\r\n            _this.resize = bind(_this.resize, _this);\r\n            zr.animation.on('frame', _this._onframe, _this);\r\n            bindRenderedEvent(zr, _this);\r\n            bindMouseEvent(zr, _this);\r\n            setAsPrimitive(_this);\r\n            return _this;\r\n        }\r\n        ECharts.prototype._onframe = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            applyChangedStates(this);\r\n            var scheduler = this._scheduler;\r\n            if (this[OPTION_UPDATED_KEY]) {\r\n                var silent = this[OPTION_UPDATED_KEY].silent;\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n            else if (scheduler.unfinished) {\r\n                var remainTime = TEST_FRAME_REMAIN_TIME;\r\n                var ecModel = this._model;\r\n                var api = this._api;\r\n                scheduler.unfinished = false;\r\n                do {\r\n                    var startTime = +new Date();\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    scheduler.performDataProcessorTasks(ecModel);\r\n                    updateStreamModes(this, ecModel);\r\n                    scheduler.performVisualTasks(ecModel);\r\n                    renderSeries(this, this._model, api, 'remain');\r\n                    remainTime -= (+new Date() - startTime);\r\n                } while (remainTime > 0 && scheduler.unfinished);\r\n                if (!scheduler.unfinished) {\r\n                    this._zr.flush();\r\n                }\r\n            }\r\n        };\r\n        ECharts.prototype.getDom = function () {\r\n            return this._dom;\r\n        };\r\n        ECharts.prototype.getId = function () {\r\n            return this.id;\r\n        };\r\n        ECharts.prototype.getZr = function () {\r\n            return this._zr;\r\n        };\r\n        ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`setOption` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var silent;\r\n            var replaceMerge;\r\n            if (isObject$2(notMerge)) {\r\n                lazyUpdate = notMerge.lazyUpdate;\r\n                silent = notMerge.silent;\r\n                replaceMerge = notMerge.replaceMerge;\r\n                notMerge = notMerge.notMerge;\r\n            }\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            if (!this._model || notMerge) {\r\n                var optionManager = new OptionManager(this._api);\r\n                var theme = this._theme;\r\n                var ecModel = this._model = new GlobalModel();\r\n                ecModel.scheduler = this._scheduler;\r\n                ecModel.init(null, null, null, theme, this._locale, optionManager);\r\n            }\r\n            this._model.setOption(option, { replaceMerge: replaceMerge }, optionPreprocessorFuncs);\r\n            if (lazyUpdate) {\r\n                this[OPTION_UPDATED_KEY] = { silent: silent };\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n            }\r\n            else {\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n        };\r\n        ECharts.prototype.setTheme = function () {\r\n            console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\r\n        };\r\n        ECharts.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        ECharts.prototype.getOption = function () {\r\n            return this._model && this._model.getOption();\r\n        };\r\n        ECharts.prototype.getWidth = function () {\r\n            return this._zr.getWidth();\r\n        };\r\n        ECharts.prototype.getHeight = function () {\r\n            return this._zr.getHeight();\r\n        };\r\n        ECharts.prototype.getDevicePixelRatio = function () {\r\n            return this._zr.painter.dpr || window.devicePixelRatio || 1;\r\n        };\r\n        ECharts.prototype.getRenderedCanvas = function (opts) {\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            opts = extend({}, opts || {});\r\n            opts.pixelRatio = opts.pixelRatio || 1;\r\n            opts.backgroundColor = opts.backgroundColor\r\n                || this._model.get('backgroundColor');\r\n            var zr = this._zr;\r\n            return zr.painter.getRenderedCanvas(opts);\r\n        };\r\n        ECharts.prototype.getSvgDataURL = function () {\r\n            if (!env.svgSupported) {\r\n                return;\r\n            }\r\n            var zr = this._zr;\r\n            var list = zr.storage.getDisplayList();\r\n            each(list, function (el) {\r\n                el.stopAnimation(null, true);\r\n            });\r\n            return zr.painter.toDataURL();\r\n        };\r\n        ECharts.prototype.getDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            opts = opts || {};\r\n            var excludeComponents = opts.excludeComponents;\r\n            var ecModel = this._model;\r\n            var excludesComponentViews = [];\r\n            var self = this;\r\n            each$3(excludeComponents, function (componentType) {\r\n                ecModel.eachComponent({\r\n                    mainType: componentType\r\n                }, function (component) {\r\n                    var view = self._componentsMap[component.__viewId];\r\n                    if (!view.group.ignore) {\r\n                        excludesComponentViews.push(view);\r\n                        view.group.ignore = true;\r\n                    }\r\n                });\r\n            });\r\n            var url = this._zr.painter.getType() === 'svg'\r\n                ? this.getSvgDataURL()\r\n                : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\r\n            each$3(excludesComponentViews, function (view) {\r\n                view.group.ignore = false;\r\n            });\r\n            return url;\r\n        };\r\n        ECharts.prototype.getConnectedDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            var isSvg = opts.type === 'svg';\r\n            var groupId = this.group;\r\n            var mathMin = Math.min;\r\n            var mathMax = Math.max;\r\n            var MAX_NUMBER = Infinity;\r\n            if (connectedGroups[groupId]) {\r\n                var left_1 = MAX_NUMBER;\r\n                var top_1 = MAX_NUMBER;\r\n                var right_1 = -MAX_NUMBER;\r\n                var bottom_1 = -MAX_NUMBER;\r\n                var canvasList_1 = [];\r\n                var dpr_1 = (opts && opts.pixelRatio) || 1;\r\n                each(instances, function (chart, id) {\r\n                    if (chart.group === groupId) {\r\n                        var canvas = isSvg\r\n                            ? chart.getZr().painter.getSvgDom().innerHTML\r\n                            : chart.getRenderedCanvas(clone(opts));\r\n                        var boundingRect = chart.getDom().getBoundingClientRect();\r\n                        left_1 = mathMin(boundingRect.left, left_1);\r\n                        top_1 = mathMin(boundingRect.top, top_1);\r\n                        right_1 = mathMax(boundingRect.right, right_1);\r\n                        bottom_1 = mathMax(boundingRect.bottom, bottom_1);\r\n                        canvasList_1.push({\r\n                            dom: canvas,\r\n                            left: boundingRect.left,\r\n                            top: boundingRect.top\r\n                        });\r\n                    }\r\n                });\r\n                left_1 *= dpr_1;\r\n                top_1 *= dpr_1;\r\n                right_1 *= dpr_1;\r\n                bottom_1 *= dpr_1;\r\n                var width = right_1 - left_1;\r\n                var height = bottom_1 - top_1;\r\n                var targetCanvas = createCanvas();\r\n                var zr_1 = init(targetCanvas, {\r\n                    renderer: isSvg ? 'svg' : 'canvas'\r\n                });\r\n                zr_1.resize({\r\n                    width: width,\r\n                    height: height\r\n                });\r\n                if (isSvg) {\r\n                    var content_1 = '';\r\n                    each$3(canvasList_1, function (item) {\r\n                        var x = item.left - left_1;\r\n                        var y = item.top - top_1;\r\n                        content_1 += '<g transform=\"translate(' + x + ','\r\n                            + y + ')\">' + item.dom + '</g>';\r\n                    });\r\n                    zr_1.painter.getSvgRoot().innerHTML = content_1;\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\r\n                    }\r\n                    zr_1.refreshImmediately();\r\n                    return zr_1.painter.toDataURL();\r\n                }\r\n                else {\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.add(new Rect({\r\n                            shape: {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            },\r\n                            style: {\r\n                                fill: opts.connectedBackgroundColor\r\n                            }\r\n                        }));\r\n                    }\r\n                    each$3(canvasList_1, function (item) {\r\n                        var img = new ZRImage({\r\n                            style: {\r\n                                x: item.left * dpr_1 - left_1,\r\n                                y: item.top * dpr_1 - top_1,\r\n                                image: item.dom\r\n                            }\r\n                        });\r\n                        zr_1.add(img);\r\n                    });\r\n                    zr_1.refreshImmediately();\r\n                    return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\r\n                }\r\n            }\r\n            else {\r\n                return this.getDataURL(opts);\r\n            }\r\n        };\r\n        ECharts.prototype.convertToPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertToPixel', finder, value);\r\n        };\r\n        ECharts.prototype.convertFromPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertFromPixel', finder, value);\r\n        };\r\n        ECharts.prototype.containPixel = function (finder, value) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var ecModel = this._model;\r\n            var result;\r\n            var findResult = parseFinder(ecModel, finder);\r\n            each(findResult, function (models, key) {\r\n                key.indexOf('Models') >= 0 && each(models, function (model) {\r\n                    var coordSys = model.coordinateSystem;\r\n                    if (coordSys && coordSys.containPoint) {\r\n                        result = result || !!coordSys.containPoint(value);\r\n                    }\r\n                    else if (key === 'seriesModels') {\r\n                        var view = this._chartsMap[model.__viewId];\r\n                        if (view && view.containPoint) {\r\n                            result = result || view.containPoint(value, model);\r\n                        }\r\n                        else {\r\n                            if (__DEV__) {\r\n                                console.warn(key + ': ' + (view\r\n                                    ? 'The found component do not support containPoint.'\r\n                                    : 'No view mapping to the found component.'));\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (__DEV__) {\r\n                            console.warn(key + ': containPoint is not supported');\r\n                        }\r\n                    }\r\n                }, this);\r\n            }, this);\r\n            return !!result;\r\n        };\r\n        ECharts.prototype.getVisual = function (finder, visualType) {\r\n            var ecModel = this._model;\r\n            var parsedFinder = parseFinder(ecModel, finder, {\r\n                defaultMainType: 'series'\r\n            });\r\n            var seriesModel = parsedFinder.seriesModel;\r\n            if (__DEV__) {\r\n                if (!seriesModel) {\r\n                    console.warn('There is no specified seires model');\r\n                }\r\n            }\r\n            var data = seriesModel.getData();\r\n            var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')\r\n                ? parsedFinder.dataIndexInside\r\n                : parsedFinder.hasOwnProperty('dataIndex')\r\n                    ? data.indexOfRawIndex(parsedFinder.dataIndex)\r\n                    : null;\r\n            return dataIndexInside != null\r\n                ? getItemVisualFromData(data, dataIndexInside, visualType)\r\n                : getVisualFromData(data, visualType);\r\n        };\r\n        ECharts.prototype.getViewOfComponentModel = function (componentModel) {\r\n            return this._componentsMap[componentModel.__viewId];\r\n        };\r\n        ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n            return this._chartsMap[seriesModel.__viewId];\r\n        };\r\n        ECharts.prototype._initEvents = function () {\r\n            var _this = this;\r\n            each$3(MOUSE_EVENT_NAMES, function (eveName) {\r\n                var handler = function (e) {\r\n                    var ecModel = _this.getModel();\r\n                    var el = e.target;\r\n                    var params;\r\n                    var isGlobalOut = eveName === 'globalout';\r\n                    var ecData = el && getECData(el);\r\n                    if (isGlobalOut) {\r\n                        params = {};\r\n                    }\r\n                    else if (ecData && ecData.dataIndex != null) {\r\n                        var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n                        params = (dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {});\r\n                    }\r\n                    else if (el && ecData.eventData) {\r\n                        params = extend({}, ecData.eventData);\r\n                    }\r\n                    if (params) {\r\n                        var componentType = params.componentType;\r\n                        var componentIndex = params.componentIndex;\r\n                        if (componentType === 'markLine'\r\n                            || componentType === 'markPoint'\r\n                            || componentType === 'markArea') {\r\n                            componentType = 'series';\r\n                            componentIndex = params.seriesIndex;\r\n                        }\r\n                        var model = componentType && componentIndex != null\r\n                            && ecModel.getComponent(componentType, componentIndex);\r\n                        var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\r\n                        if (__DEV__) {\r\n                            if (!isGlobalOut && !(model && view)) {\r\n                                console.warn('model or view can not be found by params');\r\n                            }\r\n                        }\r\n                        params.event = e;\r\n                        params.type = eveName;\r\n                        _this._$eventProcessor.eventInfo = {\r\n                            targetEl: el,\r\n                            packedEvent: params,\r\n                            model: model,\r\n                            view: view\r\n                        };\r\n                        _this.trigger(eveName, params);\r\n                    }\r\n                };\r\n                handler.zrEventfulCallAtLast = true;\r\n                _this._zr.on(eveName, handler, _this);\r\n            });\r\n            each$3(eventActionMap, function (actionType, eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            each$3(['selectchanged'], function (eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            handleLegacySelectEvents(this._messageCenter, this);\r\n        };\r\n        ECharts.prototype.isDisposed = function () {\r\n            return this._disposed;\r\n        };\r\n        ECharts.prototype.clear = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this.setOption({ series: [] }, true);\r\n        };\r\n        ECharts.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._disposed = true;\r\n            setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\r\n            var api = this._api;\r\n            var ecModel = this._model;\r\n            each$3(this._componentsViews, function (component) {\r\n                component.dispose(ecModel, api);\r\n            });\r\n            each$3(this._chartsViews, function (chart) {\r\n                chart.dispose(ecModel, api);\r\n            });\r\n            this._zr.dispose();\r\n            delete instances[this.id];\r\n        };\r\n        ECharts.prototype.resize = function (opts) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`resize` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._zr.resize(opts);\r\n            var ecModel = this._model;\r\n            this._loadingFX && this._loadingFX.resize();\r\n            if (!ecModel) {\r\n                return;\r\n            }\r\n            var optionChanged = ecModel.resetOption('media');\r\n            var silent = opts && opts.silent;\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            optionChanged && prepare(this);\r\n            updateMethods.update.call(this, {\r\n                type: 'resize',\r\n                animation: {\r\n                    duration: 0\r\n                }\r\n            });\r\n            this[IN_MAIN_PROCESS_KEY] = false;\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.showLoading = function (name, cfg) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (isObject$2(name)) {\r\n                cfg = name;\r\n                name = '';\r\n            }\r\n            name = name || 'default';\r\n            this.hideLoading();\r\n            if (!loadingEffects[name]) {\r\n                if (__DEV__) {\r\n                    console.warn('Loading effects ' + name + ' not exists.');\r\n                }\r\n                return;\r\n            }\r\n            var el = loadingEffects[name](this._api, cfg);\r\n            var zr = this._zr;\r\n            this._loadingFX = el;\r\n            zr.add(el);\r\n        };\r\n        ECharts.prototype.hideLoading = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._loadingFX && this._zr.remove(this._loadingFX);\r\n            this._loadingFX = null;\r\n        };\r\n        ECharts.prototype.makeActionFromEvent = function (eventObj) {\r\n            var payload = extend({}, eventObj);\r\n            payload.type = eventActionMap[eventObj.type];\r\n            return payload;\r\n        };\r\n        ECharts.prototype.dispatchAction = function (payload, opt) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!isObject$2(opt)) {\r\n                opt = { silent: !!opt };\r\n            }\r\n            if (!actions[payload.type]) {\r\n                return;\r\n            }\r\n            if (!this._model) {\r\n                return;\r\n            }\r\n            if (this[IN_MAIN_PROCESS_KEY]) {\r\n                this._pendingActions.push(payload);\r\n                return;\r\n            }\r\n            var silent = opt.silent;\r\n            doDispatchAction.call(this, payload, silent);\r\n            var flush = opt.flush;\r\n            if (flush) {\r\n                this._zr.flush();\r\n            }\r\n            else if (flush !== false && env.browser.weChat) {\r\n                this._throttledZrFlush();\r\n            }\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.updateLabelLayout = function () {\r\n            var labelManager = this._labelManager;\r\n            labelManager.updateLayoutConfig(this._api);\r\n            labelManager.layout(this._api);\r\n            labelManager.processLabelsOverall();\r\n        };\r\n        ECharts.prototype.appendData = function (params) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var seriesIndex = params.seriesIndex;\r\n            var ecModel = this.getModel();\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (__DEV__) {\r\n                assert$1(params.data && seriesModel);\r\n            }\r\n            seriesModel.appendData(params);\r\n            this._scheduler.unfinished = true;\r\n            this.getZr().wakeUp();\r\n        };\r\n        ECharts.internalField = (function () {\r\n            prepare = function (ecIns) {\r\n                var scheduler = ecIns._scheduler;\r\n                scheduler.restorePipelines(ecIns._model);\r\n                scheduler.prepareStageTasks();\r\n                prepareView(ecIns, true);\r\n                prepareView(ecIns, false);\r\n                scheduler.plan();\r\n            };\r\n            prepareView = function (ecIns, isComponent) {\r\n                var ecModel = ecIns._model;\r\n                var scheduler = ecIns._scheduler;\r\n                var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\r\n                var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\r\n                var zr = ecIns._zr;\r\n                var api = ecIns._api;\r\n                for (var i = 0; i < viewList.length; i++) {\r\n                    viewList[i].__alive = false;\r\n                }\r\n                isComponent\r\n                    ? ecModel.eachComponent(function (componentType, model) {\r\n                        componentType !== 'series' && doPrepare(model);\r\n                    })\r\n                    : ecModel.eachSeries(doPrepare);\r\n                function doPrepare(model) {\r\n                    var requireNewView = model.__requireNewView;\r\n                    model.__requireNewView = false;\r\n                    var viewId = '_ec_' + model.id + '_' + model.type;\r\n                    var view = !requireNewView && viewMap[viewId];\r\n                    if (!view) {\r\n                        var classType = parseClassType(model.type);\r\n                        var Clazz = isComponent\r\n                            ? ComponentView.getClass(classType.main, classType.sub)\r\n                            : (ChartView.getClass(classType.sub));\r\n                        if (__DEV__) {\r\n                            assert$1(Clazz, classType.sub + ' does not exist.');\r\n                        }\r\n                        view = new Clazz();\r\n                        view.init(ecModel, api);\r\n                        viewMap[viewId] = view;\r\n                        viewList.push(view);\r\n                        zr.add(view.group);\r\n                    }\r\n                    model.__viewId = view.__id = viewId;\r\n                    view.__alive = true;\r\n                    view.__model = model;\r\n                    view.group.__ecComponentInfo = {\r\n                        mainType: model.mainType,\r\n                        index: model.componentIndex\r\n                    };\r\n                    !isComponent && scheduler.prepareView(view, model, ecModel, api);\r\n                }\r\n                for (var i = 0; i < viewList.length;) {\r\n                    var view = viewList[i];\r\n                    if (!view.__alive) {\r\n                        !isComponent && view.renderTask.dispose();\r\n                        zr.remove(view.group);\r\n                        view.dispose(ecModel, api);\r\n                        viewList.splice(i, 1);\r\n                        if (viewMap[view.__id] === view) {\r\n                            delete viewMap[view.__id];\r\n                        }\r\n                        view.__id = view.group.__ecComponentInfo = null;\r\n                    }\r\n                    else {\r\n                        i++;\r\n                    }\r\n                }\r\n            };\r\n            updateDirectly = function (ecIns, method, payload, mainType, subType) {\r\n                var ecModel = ecIns._model;\r\n                ecModel.setUpdatePayload(payload);\r\n                if (!mainType) {\r\n                    each$3([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\r\n                    return;\r\n                }\r\n                var query = {};\r\n                query[mainType + 'Id'] = payload[mainType + 'Id'];\r\n                query[mainType + 'Index'] = payload[mainType + 'Index'];\r\n                query[mainType + 'Name'] = payload[mainType + 'Name'];\r\n                var condition = { mainType: mainType, query: query };\r\n                subType && (condition.subType = subType);\r\n                var excludeSeriesId = payload.excludeSeriesId;\r\n                var excludeSeriesIdMap;\r\n                if (excludeSeriesId != null) {\r\n                    excludeSeriesIdMap = createHashMap(normalizeToArray(excludeSeriesId));\r\n                }\r\n                ecModel && ecModel.eachComponent(condition, function (model) {\r\n                    if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {\r\n                        if (isHighDownPayload(payload) && !payload.notBlur) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSeriesBlurStateFromPayload(model, payload, ecIns);\r\n                            }\r\n                        }\r\n                        else if (isSelectChangePayload(payload)) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSelectionFromPayload(model, payload);\r\n                                updateSeriesElementSelection(model);\r\n                                markStatusToUpdate(ecIns);\r\n                            }\r\n                        }\r\n                        callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\r\n                    }\r\n                }, ecIns);\r\n                function callView(view) {\r\n                    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\r\n                }\r\n            };\r\n            updateMethods = {\r\n                prepareAndUpdate: function (payload) {\r\n                    prepare(this);\r\n                    updateMethods.update.call(this, payload);\r\n                },\r\n                update: function (payload) {\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    var zr = this._zr;\r\n                    var coordSysMgr = this._coordSysMgr;\r\n                    var scheduler = this._scheduler;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    scheduler.restoreData(ecModel, payload);\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    coordSysMgr.create(ecModel, api);\r\n                    scheduler.performDataProcessorTasks(ecModel, payload);\r\n                    updateStreamModes(this, ecModel);\r\n                    coordSysMgr.update(ecModel, api);\r\n                    clearColorPalette(ecModel);\r\n                    scheduler.performVisualTasks(ecModel, payload);\r\n                    render(this, ecModel, api, payload);\r\n                    var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\r\n                    var darkMode = ecModel.get('darkMode');\r\n                    if (!env.canvasSupported) {\r\n                        var colorArr = parse(backgroundColor);\r\n                        backgroundColor = stringify(colorArr, 'rgb');\r\n                        if (colorArr[3] === 0) {\r\n                            backgroundColor = 'transparent';\r\n                        }\r\n                    }\r\n                    else {\r\n                        zr.setBackgroundColor(backgroundColor);\r\n                        if (darkMode != null && darkMode !== 'auto') {\r\n                            zr.setDarkMode(darkMode);\r\n                        }\r\n                    }\r\n                    performPostUpdateFuncs(ecModel, api);\r\n                },\r\n                updateTransform: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    var componentDirtyList = [];\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType === 'series') {\r\n                            return;\r\n                        }\r\n                        var componentView = _this.getViewOfComponentModel(componentModel);\r\n                        if (componentView && componentView.__alive) {\r\n                            if (componentView.updateTransform) {\r\n                                var result = componentView.updateTransform(componentModel, ecModel, api, payload);\r\n                                result && result.update && componentDirtyList.push(componentView);\r\n                            }\r\n                            else {\r\n                                componentDirtyList.push(componentView);\r\n                            }\r\n                        }\r\n                    });\r\n                    var seriesDirtyMap = createHashMap();\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.updateTransform) {\r\n                            var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\r\n                            result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                        else {\r\n                            seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                    });\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap });\r\n                    renderSeries(this, ecModel, api, payload, seriesDirtyMap);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateView: function (payload) {\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ChartView.markUpdateMethod(payload, 'updateView');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true });\r\n                    render(this, this._model, this._api, payload);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateVisual: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        seriesModel.getData().clearAllVisual();\r\n                    });\r\n                    ChartView.markUpdateMethod(payload, 'updateVisual');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { visualType: 'visual', setDirty: true });\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType !== 'series') {\r\n                            var componentView = _this.getViewOfComponentModel(componentModel);\r\n                            componentView && componentView.__alive\r\n                                && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\r\n                        }\r\n                    });\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\r\n                    });\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateLayout: function (payload) {\r\n                    updateMethods.update.call(this, payload);\r\n                }\r\n            };\r\n            doConvertPixel = function (ecIns, methodName, finder, value) {\r\n                if (ecIns._disposed) {\r\n                    disposedWarning(ecIns.id);\r\n                    return;\r\n                }\r\n                var ecModel = ecIns._model;\r\n                var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\r\n                var result;\r\n                var parsedFinder = parseFinder(ecModel, finder);\r\n                for (var i = 0; i < coordSysList.length; i++) {\r\n                    var coordSys = coordSysList[i];\r\n                    if (coordSys[methodName]\r\n                        && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n                if (__DEV__) {\r\n                    console.warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\r\n                }\r\n            };\r\n            updateStreamModes = function (ecIns, ecModel) {\r\n                var chartsMap = ecIns._chartsMap;\r\n                var scheduler = ecIns._scheduler;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\r\n                });\r\n            };\r\n            doDispatchAction = function (payload, silent) {\r\n                var _this = this;\r\n                var ecModel = this.getModel();\r\n                var payloadType = payload.type;\r\n                var escapeConnect = payload.escapeConnect;\r\n                var actionWrap = actions[payloadType];\r\n                var actionInfo = actionWrap.actionInfo;\r\n                var cptTypeTmp = (actionInfo.update || 'update').split(':');\r\n                var updateMethod = cptTypeTmp.pop();\r\n                var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                var payloads = [payload];\r\n                var batched = false;\r\n                if (payload.batch) {\r\n                    batched = true;\r\n                    payloads = map(payload.batch, function (item) {\r\n                        item = defaults(extend({}, item), payload);\r\n                        item.batch = null;\r\n                        return item;\r\n                    });\r\n                }\r\n                var eventObjBatch = [];\r\n                var eventObj;\r\n                var isSelectChange = isSelectChangePayload(payload);\r\n                var isStatusChange = isHighDownPayload(payload) || isSelectChange;\r\n                each$3(payloads, function (batchItem) {\r\n                    eventObj = actionWrap.action(batchItem, _this._model, _this._api);\r\n                    eventObj = eventObj || extend({}, batchItem);\r\n                    eventObj.type = actionInfo.event || eventObj.type;\r\n                    eventObjBatch.push(eventObj);\r\n                    if (isStatusChange) {\r\n                        updateDirectly(_this, updateMethod, batchItem, 'series');\r\n                        markStatusToUpdate(_this);\r\n                    }\r\n                    else if (cptType) {\r\n                        updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\r\n                    }\r\n                });\r\n                if (payload.statusChanged) {\r\n                    markStatusToUpdate(this);\r\n                }\r\n                if (updateMethod !== 'none' && !isStatusChange && !cptType) {\r\n                    if (this[OPTION_UPDATED_KEY]) {\r\n                        prepare(this);\r\n                        updateMethods.update.call(this, payload);\r\n                        this[OPTION_UPDATED_KEY] = false;\r\n                    }\r\n                    else {\r\n                        updateMethods[updateMethod].call(this, payload);\r\n                    }\r\n                }\r\n                if (batched) {\r\n                    eventObj = {\r\n                        type: actionInfo.event || payloadType,\r\n                        escapeConnect: escapeConnect,\r\n                        batch: eventObjBatch\r\n                    };\r\n                }\r\n                else {\r\n                    eventObj = eventObjBatch[0];\r\n                }\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                if (!silent) {\r\n                    var messageCenter = this._messageCenter;\r\n                    messageCenter.trigger(eventObj.type, eventObj);\r\n                    if (isSelectChange) {\r\n                        var newObj = {\r\n                            type: 'selectchanged',\r\n                            escapeConnect: escapeConnect,\r\n                            selected: getAllSelectedIndices(ecModel),\r\n                            isFromClick: payload.isFromClick || false,\r\n                            fromAction: payload.type,\r\n                            fromActionPayload: payload\r\n                        };\r\n                        messageCenter.trigger(newObj.type, newObj);\r\n                    }\r\n                }\r\n            };\r\n            flushPendingActions = function (silent) {\r\n                var pendingActions = this._pendingActions;\r\n                while (pendingActions.length) {\r\n                    var payload = pendingActions.shift();\r\n                    doDispatchAction.call(this, payload, silent);\r\n                }\r\n            };\r\n            triggerUpdatedEvent = function (silent) {\r\n                !silent && this.trigger('updated');\r\n            };\r\n            bindRenderedEvent = function (zr, ecIns) {\r\n                zr.on('rendered', function (params) {\r\n                    ecIns.trigger('rendered', params);\r\n                    if (zr.animation.isFinished()\r\n                        && !ecIns[OPTION_UPDATED_KEY]\r\n                        && !ecIns._scheduler.unfinished\r\n                        && !ecIns._pendingActions.length) {\r\n                        ecIns.trigger('finished');\r\n                    }\r\n                });\r\n            };\r\n            bindMouseEvent = function (zr, ecIns) {\r\n                function getDispatcher(target, det) {\r\n                    while (target && !det(target)) {\r\n                        if (target.__hostTarget) {\r\n                            target = target.__hostTarget;\r\n                        }\r\n                        else {\r\n                            target = target.parent;\r\n                        }\r\n                    }\r\n                    return target;\r\n                }\r\n                zr.on('mouseover', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = getDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns, true);\r\n                        enterEmphasisWhenMouseOver(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('mouseout', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = getDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns, false);\r\n                        leaveEmphasisWhenMouseOut(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('click', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = getDispatcher(el, function (target) { return getECData(target).dataIndex != null; });\r\n                    if (dispatcher) {\r\n                        var actionType = dispatcher.selected ? 'unselect' : 'select';\r\n                        var ecData = getECData(dispatcher);\r\n                        ecIns._api.dispatchAction({\r\n                            type: actionType,\r\n                            dataType: ecData.dataType,\r\n                            dataIndexInside: ecData.dataIndex,\r\n                            seriesIndex: ecData.seriesIndex,\r\n                            isFromClick: true\r\n                        });\r\n                    }\r\n                });\r\n            };\r\n            clearColorPalette = function (ecModel) {\r\n                ecModel.clearColorPalette();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    seriesModel.clearColorPalette();\r\n                });\r\n            };\r\n            render = function (ecIns, ecModel, api, payload) {\r\n                renderComponents(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    chart.__alive = false;\r\n                });\r\n                renderSeries(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    if (!chart.__alive) {\r\n                        chart.remove(ecModel, api);\r\n                    }\r\n                });\r\n            };\r\n            renderComponents = function (ecIns, ecModel, api, payload, dirtyList) {\r\n                each$3(dirtyList || ecIns._componentsViews, function (componentView) {\r\n                    var componentModel = componentView.__model;\r\n                    clearStates(componentModel, componentView);\r\n                    componentView.render(componentModel, ecModel, api, payload);\r\n                    updateZ(componentModel, componentView);\r\n                    updateStates(componentModel, componentView);\r\n                });\r\n            };\r\n            renderSeries = function (ecIns, ecModel, api, payload, dirtyMap) {\r\n                var scheduler = ecIns._scheduler;\r\n                var labelManager = ecIns._labelManager;\r\n                labelManager.clearLabels();\r\n                var unfinished = false;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    chartView.__alive = true;\r\n                    var renderTask = chartView.renderTask;\r\n                    scheduler.updatePayload(renderTask, payload);\r\n                    clearStates(seriesModel, chartView);\r\n                    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\r\n                        renderTask.dirty();\r\n                    }\r\n                    if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\r\n                        unfinished = true;\r\n                    }\r\n                    chartView.group.silent = !!seriesModel.get('silent');\r\n                    updateZ(seriesModel, chartView);\r\n                    updateBlend(seriesModel, chartView);\r\n                    updateSeriesElementSelection(seriesModel);\r\n                    labelManager.addLabelsOfSeries(chartView);\r\n                });\r\n                scheduler.unfinished = unfinished || scheduler.unfinished;\r\n                labelManager.updateLayoutConfig(api);\r\n                labelManager.layout(api);\r\n                labelManager.processLabelsOverall();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    updateStates(seriesModel, chartView);\r\n                });\r\n                updateHoverLayerStatus(ecIns, ecModel);\r\n                aria(ecIns._zr.dom, ecModel);\r\n            };\r\n            performPostUpdateFuncs = function (ecModel, api) {\r\n                each$3(postUpdateFuncs, function (func) {\r\n                    func(ecModel, api);\r\n                });\r\n            };\r\n            markStatusToUpdate = function (ecIns) {\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = true;\r\n                ecIns.getZr().wakeUp();\r\n            };\r\n            applyChangedStates = function (ecIns) {\r\n                if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\r\n                    return;\r\n                }\r\n                ecIns.getZr().storage.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    applyElementStates(el);\r\n                });\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\r\n            };\r\n            function applyElementStates(el) {\r\n                var newStates = [];\r\n                var oldStates = el.currentStates;\r\n                for (var i = 0; i < oldStates.length; i++) {\r\n                    var stateName = oldStates[i];\r\n                    if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\r\n                        newStates.push(stateName);\r\n                    }\r\n                }\r\n                if (el.selected && el.states.select) {\r\n                    newStates.push('select');\r\n                }\r\n                if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\r\n                    newStates.push('emphasis');\r\n                }\r\n                else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\r\n                    newStates.push('blur');\r\n                }\r\n                el.useStates(newStates);\r\n            }\r\n            function updateHoverLayerStatus(ecIns, ecModel) {\r\n                var zr = ecIns._zr;\r\n                var storage = zr.storage;\r\n                var elCount = 0;\r\n                storage.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        elCount++;\r\n                    }\r\n                });\r\n                if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        if (seriesModel.preventUsingHoverLayer) {\r\n                            return;\r\n                        }\r\n                        var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.__alive) {\r\n                            chartView.group.traverse(function (el) {\r\n                                if (el.states.emphasis) {\r\n                                    el.states.emphasis.hoverLayer = true;\r\n                                }\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function updateBlend(seriesModel, chartView) {\r\n                var blendMode = seriesModel.get('blendMode') || null;\r\n                if (__DEV__) {\r\n                    if (!env.canvasSupported && blendMode && blendMode !== 'source-over') {\r\n                        console.warn('Only canvas support blendMode');\r\n                    }\r\n                }\r\n                chartView.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        el.style.blend = blendMode;\r\n                    }\r\n                    if (el.eachPendingDisplayable) {\r\n                        el.eachPendingDisplayable(function (displayable) {\r\n                            displayable.style.blend = blendMode;\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            function updateZ(model, view) {\r\n                if (model.preventAutoZ) {\r\n                    return;\r\n                }\r\n                var z = model.get('z');\r\n                var zlevel = model.get('zlevel');\r\n                view.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        z != null && (el.z = z);\r\n                        zlevel != null && (el.zlevel = zlevel);\r\n                        var label = el.getTextContent();\r\n                        var labelLine = el.getTextGuideLine();\r\n                        if (label) {\r\n                            label.z = el.z;\r\n                            label.zlevel = el.zlevel;\r\n                            label.z2 = el.z2 + 1;\r\n                        }\r\n                        if (labelLine) {\r\n                            labelLine.z = el.z;\r\n                            labelLine.zlevel = el.zlevel;\r\n                            labelLine.z2 = el.z2 - 1;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            function clearStates(model, view) {\r\n                view.group.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    var textContent = el.getTextContent();\r\n                    var textGuide = el.getTextGuideLine();\r\n                    if (el.stateTransition) {\r\n                        el.stateTransition = null;\r\n                    }\r\n                    if (textContent && textContent.stateTransition) {\r\n                        textContent.stateTransition = null;\r\n                    }\r\n                    if (textGuide && textGuide.stateTransition) {\r\n                        textGuide.stateTransition = null;\r\n                    }\r\n                    if (el.hasState()) {\r\n                        el.prevStates = el.currentStates;\r\n                        el.clearStates();\r\n                    }\r\n                    else if (el.prevStates) {\r\n                        el.prevStates = null;\r\n                    }\r\n                });\r\n            }\r\n            function updateStates(model, view) {\r\n                var stateAnimationModel = model.getModel('stateAnimation');\r\n                var enableAnimation = model.isAnimationEnabled();\r\n                var duration = stateAnimationModel.get('duration');\r\n                var stateTransition = duration > 0 ? {\r\n                    duration: duration,\r\n                    delay: stateAnimationModel.get('delay'),\r\n                    easing: stateAnimationModel.get('easing')\r\n                } : null;\r\n                view.group.traverse(function (el) {\r\n                    if (el.states && el.states.emphasis) {\r\n                        if (isElementRemoved(el)) {\r\n                            return;\r\n                        }\r\n                        if (el instanceof Path) {\r\n                            savePathStates(el);\r\n                        }\r\n                        if (el.__dirty) {\r\n                            var prevStates = el.prevStates;\r\n                            if (prevStates) {\r\n                                el.useStates(prevStates);\r\n                            }\r\n                        }\r\n                        if (enableAnimation) {\r\n                            el.stateTransition = stateTransition;\r\n                            var textContent = el.getTextContent();\r\n                            var textGuide = el.getTextGuideLine();\r\n                            if (textContent) {\r\n                                textContent.stateTransition = stateTransition;\r\n                            }\r\n                            if (textGuide) {\r\n                                textGuide.stateTransition = stateTransition;\r\n                            }\r\n                        }\r\n                        if (el.__dirty) {\r\n                            applyElementStates(el);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            createExtensionAPI = function (ecIns) {\r\n                return new ((function (_super) {\r\n                    __extends(class_1, _super);\r\n                    function class_1() {\r\n                        return _super !== null && _super.apply(this, arguments) || this;\r\n                    }\r\n                    class_1.prototype.getCoordinateSystems = function () {\r\n                        return ecIns._coordSysMgr.getCoordinateSystems();\r\n                    };\r\n                    class_1.prototype.getComponentByElement = function (el) {\r\n                        while (el) {\r\n                            var modelInfo = el.__ecComponentInfo;\r\n                            if (modelInfo != null) {\r\n                                return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\r\n                            }\r\n                            el = el.parent;\r\n                        }\r\n                    };\r\n                    class_1.prototype.enterEmphasis = function (el, highlightDigit) {\r\n                        enterEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\r\n                        leaveEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterBlur = function (el) {\r\n                        enterBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveBlur = function (el) {\r\n                        leaveBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterSelect = function (el) {\r\n                        enterSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveSelect = function (el) {\r\n                        leaveSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    return class_1;\r\n                }(ExtensionAPI)))(ecIns);\r\n            };\r\n            enableConnect = function (chart) {\r\n                function updateConnectedChartsStatus(charts, status) {\r\n                    for (var i = 0; i < charts.length; i++) {\r\n                        var otherChart = charts[i];\r\n                        otherChart[CONNECT_STATUS_KEY] = status;\r\n                    }\r\n                }\r\n                each$3(eventActionMap, function (actionType, eventType) {\r\n                    chart._messageCenter.on(eventType, function (event) {\r\n                        if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\r\n                            if (event && event.escapeConnect) {\r\n                                return;\r\n                            }\r\n                            var action_1 = chart.makeActionFromEvent(event);\r\n                            var otherCharts_1 = [];\r\n                            each$3(instances, function (otherChart) {\r\n                                if (otherChart !== chart && otherChart.group === chart.group) {\r\n                                    otherCharts_1.push(otherChart);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\r\n                            each$3(otherCharts_1, function (otherChart) {\r\n                                if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\r\n                                    otherChart.dispatchAction(action_1);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n        })();\r\n        return ECharts;\r\n    }(Eventful));\r\n    var echartsProto = ECharts.prototype;\r\n    echartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\n    echartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\n    echartsProto.one = function (eventName, cb, ctx) {\r\n        var self = this;\r\n        deprecateLog('ECharts#one is deprecated.');\r\n        function wrapped() {\r\n            var args2 = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args2[_i] = arguments[_i];\r\n            }\r\n            cb && cb.apply && cb.apply(this, args2);\r\n            self.off(eventName, wrapped);\r\n        }\r\n        this.on.call(this, eventName, wrapped, ctx);\r\n    };\r\n    var MOUSE_EVENT_NAMES = [\r\n        'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n        'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n    ];\r\n    function disposedWarning(id) {\r\n        if (__DEV__) {\r\n            console.warn('Instance ' + id + ' has been disposed');\r\n        }\r\n    }\r\n    var actions = {};\r\n    var eventActionMap = {};\r\n    var dataProcessorFuncs = [];\r\n    var optionPreprocessorFuncs = [];\r\n    var postUpdateFuncs = [];\r\n    var visualFuncs = [];\r\n    var themeStorage = {};\r\n    var loadingEffects = {};\r\n    var instances = {};\r\n    var connectedGroups = {};\r\n    var idBase = +(new Date()) - 0;\r\n    var groupIdBase = +(new Date()) - 0;\r\n    var DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\n    function init$1(dom, theme, opts) {\r\n        if (__DEV__) {\r\n            if (!dom) {\r\n                throw new Error('Initialize failed: invalid dom.');\r\n            }\r\n        }\r\n        var existInstance = getInstanceByDom(dom);\r\n        if (existInstance) {\r\n            if (__DEV__) {\r\n                console.warn('There is a chart instance already initialized on the dom.');\r\n            }\r\n            return existInstance;\r\n        }\r\n        if (__DEV__) {\r\n            if (isDom(dom)\r\n                && dom.nodeName.toUpperCase() !== 'CANVAS'\r\n                && ((!dom.clientWidth && (!opts || opts.width == null))\r\n                    || (!dom.clientHeight && (!opts || opts.height == null)))) {\r\n                console.warn('Can\\'t get DOM width or height. Please check '\r\n                    + 'dom.clientWidth and dom.clientHeight. They should not be 0.'\r\n                    + 'For example, you may need to call this in the callback '\r\n                    + 'of window.onload.');\r\n            }\r\n        }\r\n        var chart = new ECharts(dom, theme, opts);\r\n        chart.id = 'ec_' + idBase++;\r\n        instances[chart.id] = chart;\r\n        setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\r\n        enableConnect(chart);\r\n        return chart;\r\n    }\r\n    function connect(groupId) {\r\n        if (isArray(groupId)) {\r\n            var charts = groupId;\r\n            groupId = null;\r\n            each$3(charts, function (chart) {\r\n                if (chart.group != null) {\r\n                    groupId = chart.group;\r\n                }\r\n            });\r\n            groupId = groupId || ('g_' + groupIdBase++);\r\n            each$3(charts, function (chart) {\r\n                chart.group = groupId;\r\n            });\r\n        }\r\n        connectedGroups[groupId] = true;\r\n        return groupId;\r\n    }\r\n    function disConnect(groupId) {\r\n        connectedGroups[groupId] = false;\r\n    }\r\n    var disconnect = disConnect;\r\n    function dispose(chart) {\r\n        if (typeof chart === 'string') {\r\n            chart = instances[chart];\r\n        }\r\n        else if (!(chart instanceof ECharts)) {\r\n            chart = getInstanceByDom(chart);\r\n        }\r\n        if ((chart instanceof ECharts) && !chart.isDisposed()) {\r\n            chart.dispose();\r\n        }\r\n    }\r\n    function getInstanceByDom(dom) {\r\n        return instances[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n    }\r\n    function getInstanceById(key) {\r\n        return instances[key];\r\n    }\r\n    function registerTheme(name, theme) {\r\n        themeStorage[name] = theme;\r\n    }\r\n    function registerPreprocessor(preprocessorFunc) {\r\n        optionPreprocessorFuncs.push(preprocessorFunc);\r\n    }\r\n    function registerProcessor(priority, processor) {\r\n        normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n    }\r\n    function registerPostUpdate(postUpdateFunc) {\r\n        postUpdateFuncs.push(postUpdateFunc);\r\n    }\r\n    function registerAction(actionInfo, eventName, action) {\r\n        if (typeof eventName === 'function') {\r\n            action = eventName;\r\n            eventName = '';\r\n        }\r\n        var actionType = isObject$2(actionInfo)\r\n            ? actionInfo.type\r\n            : ([actionInfo, actionInfo = {\r\n                    event: eventName\r\n                }][0]);\r\n        actionInfo.event = (actionInfo.event || actionType).toLowerCase();\r\n        eventName = actionInfo.event;\r\n        assert$1(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\r\n        if (!actions[actionType]) {\r\n            actions[actionType] = { action: action, actionInfo: actionInfo };\r\n        }\r\n        eventActionMap[eventName] = actionType;\r\n    }\r\n    function registerCoordinateSystem(type, coordSysCreator) {\r\n        CoordinateSystemManager.register(type, coordSysCreator);\r\n    }\r\n    function getCoordinateSystemDimensions(type) {\r\n        var coordSysCreator = CoordinateSystemManager.get(type);\r\n        if (coordSysCreator) {\r\n            return coordSysCreator.getDimensionsInfo\r\n                ? coordSysCreator.getDimensionsInfo()\r\n                : coordSysCreator.dimensions.slice();\r\n        }\r\n    }\r\n    function registerLayout(priority, layoutTask) {\r\n        normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n    }\r\n    function registerVisual(priority, visualTask) {\r\n        normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n    }\r\n    function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\r\n        if (isFunction$1(priority) || isObject$2(priority)) {\r\n            fn = priority;\r\n            priority = defaultPriority;\r\n        }\r\n        if (__DEV__) {\r\n            if (isNaN(priority) || priority == null) {\r\n                throw new Error('Illegal priority');\r\n            }\r\n            each$3(targetList, function (wrap) {\r\n                assert$1(wrap.__raw !== fn);\r\n            });\r\n        }\r\n        var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\r\n        stageHandler.__prio = priority;\r\n        stageHandler.__raw = fn;\r\n        targetList.push(stageHandler);\r\n    }\r\n    function registerLoading(name, loadingFx) {\r\n        loadingEffects[name] = loadingFx;\r\n    }\r\n    function extendComponentModel(proto) {\r\n        return ComponentModel.extend(proto);\r\n    }\r\n    function extendComponentView(proto) {\r\n        return ComponentView.extend(proto);\r\n    }\r\n    function extendSeriesModel(proto) {\r\n        return SeriesModel.extend(proto);\r\n    }\r\n    function extendChartView(proto) {\r\n        return ChartView.extend(proto);\r\n    }\r\n    function setCanvasCreator(creator) {\r\n        $override('createCanvas', creator);\r\n    }\r\n    function registerMap(mapName, geoJson, specialAreas) {\r\n        mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n    }\r\n    function getMap(mapName) {\r\n        var records = mapDataStorage.retrieveMap(mapName);\r\n        return records && records[0] && {\r\n            geoJson: records[0].geoJSON,\r\n            specialAreas: records[0].specialAreas\r\n        };\r\n    }\r\n    var registerTransform = registerExternalTransform;\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\n    registerPreprocessor(backwardCompat);\r\n    registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\n    registerLoading('default', loadingDefault);\r\n    registerAction({\r\n        type: HIGHLIGHT_ACTION_TYPE,\r\n        event: HIGHLIGHT_ACTION_TYPE,\r\n        update: HIGHLIGHT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: DOWNPLAY_ACTION_TYPE,\r\n        event: DOWNPLAY_ACTION_TYPE,\r\n        update: DOWNPLAY_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: SELECT_ACTION_TYPE,\r\n        event: SELECT_ACTION_TYPE,\r\n        update: SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: UNSELECT_ACTION_TYPE,\r\n        event: UNSELECT_ACTION_TYPE,\r\n        update: UNSELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: TOGGLE_SELECT_ACTION_TYPE,\r\n        event: TOGGLE_SELECT_ACTION_TYPE,\r\n        update: TOGGLE_SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerTheme('light', lightTheme);\r\n    registerTheme('dark', theme);\r\n    var dataTool = {};\n\n    function defaultKeyGetter(item) {\r\n        return item;\r\n    }\r\n    var DataDiffer = (function () {\r\n        function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\r\n            this._old = oldArr;\r\n            this._new = newArr;\r\n            this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\r\n            this._newKeyGetter = newKeyGetter || defaultKeyGetter;\r\n            this.context = context;\r\n        }\r\n        DataDiffer.prototype.add = function (func) {\r\n            this._add = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.update = function (func) {\r\n            this._update = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.remove = function (func) {\r\n            this._remove = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.execute = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var oldDataIndexMap = {};\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = [];\r\n            var newDataKeyArr = [];\r\n            var i;\r\n            this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (i = 0; i < oldArr.length; i++) {\r\n                var key = oldDataKeyArr[i];\r\n                var idx = newDataIndexMap[key];\r\n                if (idx != null) {\r\n                    var len = idx.length;\r\n                    if (len) {\r\n                        len === 1 && (newDataIndexMap[key] = null);\r\n                        idx = idx.shift();\r\n                    }\r\n                    else {\r\n                        newDataIndexMap[key] = null;\r\n                    }\r\n                    this._update && this._update(idx, i);\r\n                }\r\n                else {\r\n                    this._remove && this._remove(i);\r\n                }\r\n            }\r\n            for (i = 0; i < newDataKeyArr.length; i++) {\r\n                var key = newDataKeyArr[i];\r\n                if (newDataIndexMap.hasOwnProperty(key)) {\r\n                    var idx = newDataIndexMap[key];\r\n                    if (idx == null) {\r\n                        continue;\r\n                    }\r\n                    if (!idx.length) {\r\n                        this._add && this._add(idx);\r\n                    }\r\n                    else {\r\n                        for (var j = 0, len = idx.length; j < len; j++) {\r\n                            this._add && this._add(idx[j]);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        DataDiffer.prototype._initIndexMap = function (arr, map, keyArr, keyGetterName) {\r\n            for (var i = 0; i < arr.length; i++) {\r\n                var key = '_ec_' + this[keyGetterName](arr[i], i);\r\n                var existence = map[key];\r\n                if (existence == null) {\r\n                    keyArr.push(key);\r\n                    map[key] = i;\r\n                }\r\n                else {\r\n                    if (!existence.length) {\r\n                        map[key] = existence = [existence];\r\n                    }\r\n                    existence.push(i);\r\n                }\r\n            }\r\n        };\r\n        return DataDiffer;\r\n    }());\n\n    function summarizeDimensions(data) {\r\n        var summary = {};\r\n        var encode = summary.encode = {};\r\n        var notExtraCoordDimMap = createHashMap();\r\n        var defaultedLabel = [];\r\n        var defaultedTooltip = [];\r\n        var userOutput = summary.userOutput = {\r\n            dimensionNames: data.dimensions.slice(),\r\n            encode: {}\r\n        };\r\n        each(data.dimensions, function (dimName) {\r\n            var dimItem = data.getDimensionInfo(dimName);\r\n            var coordDim = dimItem.coordDim;\r\n            if (coordDim) {\r\n                if (__DEV__) {\r\n                    assert(VISUAL_DIMENSIONS.get(coordDim) == null);\r\n                }\r\n                var coordDimIndex = dimItem.coordDimIndex;\r\n                getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\r\n                if (!dimItem.isExtraCoord) {\r\n                    notExtraCoordDimMap.set(coordDim, 1);\r\n                    if (mayLabelDimType(dimItem.type)) {\r\n                        defaultedLabel[0] = dimName;\r\n                    }\r\n                    getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\r\n                }\r\n                if (dimItem.defaultTooltip) {\r\n                    defaultedTooltip.push(dimName);\r\n                }\r\n            }\r\n            VISUAL_DIMENSIONS.each(function (v, otherDim) {\r\n                var encodeArr = getOrCreateEncodeArr(encode, otherDim);\r\n                var dimIndex = dimItem.otherDims[otherDim];\r\n                if (dimIndex != null && dimIndex !== false) {\r\n                    encodeArr[dimIndex] = dimItem.name;\r\n                }\r\n            });\r\n        });\r\n        var dataDimsOnCoord = [];\r\n        var encodeFirstDimNotExtra = {};\r\n        notExtraCoordDimMap.each(function (v, coordDim) {\r\n            var dimArr = encode[coordDim];\r\n            encodeFirstDimNotExtra[coordDim] = dimArr[0];\r\n            dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\r\n        });\r\n        summary.dataDimsOnCoord = dataDimsOnCoord;\r\n        summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\r\n        var encodeLabel = encode.label;\r\n        if (encodeLabel && encodeLabel.length) {\r\n            defaultedLabel = encodeLabel.slice();\r\n        }\r\n        var encodeTooltip = encode.tooltip;\r\n        if (encodeTooltip && encodeTooltip.length) {\r\n            defaultedTooltip = encodeTooltip.slice();\r\n        }\r\n        else if (!defaultedTooltip.length) {\r\n            defaultedTooltip = defaultedLabel.slice();\r\n        }\r\n        encode.defaultedLabel = defaultedLabel;\r\n        encode.defaultedTooltip = defaultedTooltip;\r\n        return summary;\r\n    }\r\n    function getOrCreateEncodeArr(encode, dim) {\r\n        if (!encode.hasOwnProperty(dim)) {\r\n            encode[dim] = [];\r\n        }\r\n        return encode[dim];\r\n    }\r\n    function getDimensionTypeByAxis(axisType) {\r\n        return axisType === 'category'\r\n            ? 'ordinal'\r\n            : axisType === 'time'\r\n                ? 'time'\r\n                : 'float';\r\n    }\r\n    function mayLabelDimType(dimType) {\r\n        return !(dimType === 'ordinal' || dimType === 'time');\r\n    }\n\n    var DataDimensionInfo = (function () {\r\n        function DataDimensionInfo(opt) {\r\n            this.otherDims = {};\r\n            if (opt != null) {\r\n                extend(this, opt);\r\n            }\r\n        }\r\n        return DataDimensionInfo;\r\n    }());\n\n    var isObject$3 = isObject;\r\n    var UNDEFINED = 'undefined';\r\n    var INDEX_NOT_FOUND = -1;\r\n    var ID_PREFIX = 'e\\0\\0';\r\n    var dataCtors = {\r\n        'float': typeof Float64Array === UNDEFINED\r\n            ? Array : Float64Array,\r\n        'int': typeof Int32Array === UNDEFINED\r\n            ? Array : Int32Array,\r\n        'ordinal': Array,\r\n        'number': Array,\r\n        'time': Array\r\n    };\r\n    var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\n    var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\n    var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\n    var TRANSFERABLE_PROPERTIES = [\r\n        'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n        '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter',\r\n        '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'\r\n    ];\r\n    var CLONE_PROPERTIES = [\r\n        '_extent', '_approximateExtent', '_rawExtent'\r\n    ];\r\n    var defaultDimValueGetters;\r\n    var prepareInvertedIndex;\r\n    var getRawValueFromStore;\r\n    var getIndicesCtor;\r\n    var prepareChunks;\r\n    var getRawIndexWithoutIndices;\r\n    var getRawIndexWithIndices;\r\n    var getId;\r\n    var normalizeDimensions;\r\n    var validateDimensions;\r\n    var cloneListForMapAndSample;\r\n    var cloneDimStore;\r\n    var getInitialExtent;\r\n    var setItemDataAndSeriesIndex;\r\n    var transferProperties;\r\n    var List = (function () {\r\n        function List(dimensions, hostModel) {\r\n            this.type = 'list';\r\n            this._count = 0;\r\n            this._rawCount = 0;\r\n            this._storage = {};\r\n            this._nameList = [];\r\n            this._idList = [];\r\n            this._visual = {};\r\n            this._layout = {};\r\n            this._itemVisuals = [];\r\n            this._itemLayouts = [];\r\n            this._graphicEls = [];\r\n            this._chunkSize = 1e5;\r\n            this._chunkCount = 0;\r\n            this._rawExtent = {};\r\n            this._extent = {};\r\n            this._approximateExtent = {};\r\n            this._calculationInfo = {};\r\n            this.hasItemOption = true;\r\n            this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map'];\r\n            this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\r\n            this.getRawIndex = getRawIndexWithoutIndices;\r\n            dimensions = dimensions || ['x', 'y'];\r\n            var dimensionInfos = {};\r\n            var dimensionNames = [];\r\n            var invertedIndicesMap = {};\r\n            for (var i = 0; i < dimensions.length; i++) {\r\n                var dimInfoInput = dimensions[i];\r\n                var dimensionInfo = isString(dimInfoInput)\r\n                    ? new DataDimensionInfo({ name: dimInfoInput })\r\n                    : !(dimInfoInput instanceof DataDimensionInfo)\r\n                        ? new DataDimensionInfo(dimInfoInput)\r\n                        : dimInfoInput;\r\n                var dimensionName = dimensionInfo.name;\r\n                dimensionInfo.type = dimensionInfo.type || 'float';\r\n                if (!dimensionInfo.coordDim) {\r\n                    dimensionInfo.coordDim = dimensionName;\r\n                    dimensionInfo.coordDimIndex = 0;\r\n                }\r\n                dimensionInfo.otherDims = dimensionInfo.otherDims || {};\r\n                dimensionNames.push(dimensionName);\r\n                dimensionInfos[dimensionName] = dimensionInfo;\r\n                dimensionInfo.index = i;\r\n                if (dimensionInfo.createInvertedIndices) {\r\n                    invertedIndicesMap[dimensionName] = [];\r\n                }\r\n            }\r\n            this.dimensions = dimensionNames;\r\n            this._dimensionInfos = dimensionInfos;\r\n            this.hostModel = hostModel;\r\n            this._dimensionsSummary = summarizeDimensions(this);\r\n            this._invertedIndicesMap = invertedIndicesMap;\r\n            this.userOutput = this._dimensionsSummary.userOutput;\r\n        }\r\n        List.prototype.getDimension = function (dim) {\r\n            if (typeof dim === 'number'\r\n                || (!isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim))) {\r\n                dim = this.dimensions[dim];\r\n            }\r\n            return dim;\r\n        };\r\n        List.prototype.getDimensionInfo = function (dim) {\r\n            return this._dimensionInfos[this.getDimension(dim)];\r\n        };\r\n        List.prototype.getDimensionsOnCoord = function () {\r\n            return this._dimensionsSummary.dataDimsOnCoord.slice();\r\n        };\r\n        List.prototype.mapDimension = function (coordDim, idx) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            if (idx == null) {\r\n                return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\r\n            }\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return dims ? dims[idx] : null;\r\n        };\r\n        List.prototype.mapDimensionsAll = function (coordDim) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return (dims || []).slice();\r\n        };\r\n        List.prototype.initData = function (data, nameList, dimValueGetter) {\r\n            var notProvider = data instanceof Source || isArrayLike(data);\r\n            if (notProvider) {\r\n                data = new DefaultDataProvider(data, this.dimensions.length);\r\n            }\r\n            if (__DEV__) {\r\n                if (!notProvider\r\n                    && (typeof data.getItem !== 'function' || typeof data.count !== 'function')) {\r\n                    throw new Error('Inavlid data provider.');\r\n                }\r\n            }\r\n            this._rawData = data;\r\n            this._storage = {};\r\n            this._indices = null;\r\n            this._nameList = nameList || [];\r\n            this._idList = [];\r\n            this._nameRepeatCount = {};\r\n            if (!dimValueGetter) {\r\n                this.hasItemOption = false;\r\n            }\r\n            this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat];\r\n            this._dimValueGetter = dimValueGetter = dimValueGetter\r\n                || this.defaultDimValueGetter;\r\n            this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows;\r\n            this._rawExtent = {};\r\n            this._initDataFromProvider(0, data.count());\r\n            if (data.pure) {\r\n                this.hasItemOption = false;\r\n            }\r\n        };\r\n        List.prototype.getProvider = function () {\r\n            return this._rawData;\r\n        };\r\n        List.prototype.appendData = function (data) {\r\n            if (__DEV__) {\r\n                assert(!this._indices, 'appendData can only be called on raw data.');\r\n            }\r\n            var rawData = this._rawData;\r\n            var start = this.count();\r\n            rawData.appendData(data);\r\n            var end = rawData.count();\r\n            if (!rawData.persistent) {\r\n                end += start;\r\n            }\r\n            this._initDataFromProvider(start, end);\r\n        };\r\n        List.prototype.appendValues = function (values, names) {\r\n            var chunkSize = this._chunkSize;\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var rawExtent = this._rawExtent;\r\n            var start = this.count();\r\n            var end = start + Math.max(values.length, names ? names.length : 0);\r\n            var originalChunkCount = this._chunkCount;\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                if (!storage[dim]) {\r\n                    storage[dim] = [];\r\n                }\r\n                prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\r\n                this._chunkCount = storage[dim].length;\r\n            }\r\n            var emptyDataItem = new Array(dimLen);\r\n            for (var idx = start; idx < end; idx++) {\r\n                var sourceIdx = idx - start;\r\n                var chunkIndex = Math.floor(idx / chunkSize);\r\n                var chunkOffset = idx % chunkSize;\r\n                for (var k = 0; k < dimLen; k++) {\r\n                    var dim = dimensions[k];\r\n                    var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\r\n                    storage[dim][chunkIndex][chunkOffset] = val;\r\n                    var dimRawExtent = rawExtent[dim];\r\n                    val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                    val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                }\r\n                if (names) {\r\n                    this._nameList[idx] = names[sourceIdx];\r\n                }\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype._initDataFromProvider = function (start, end) {\r\n            if (start >= end) {\r\n                return;\r\n            }\r\n            var chunkSize = this._chunkSize;\r\n            var rawData = this._rawData;\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var dimensionInfoMap = this._dimensionInfos;\r\n            var nameList = this._nameList;\r\n            var idList = this._idList;\r\n            var rawExtent = this._rawExtent;\r\n            var nameRepeatCount = this._nameRepeatCount = {};\r\n            var nameDimIdx;\r\n            var originalChunkCount = this._chunkCount;\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                var dimInfo = dimensionInfoMap[dim];\r\n                if (dimInfo.otherDims.itemName === 0) {\r\n                    nameDimIdx = this._nameDimIdx = i;\r\n                }\r\n                if (dimInfo.otherDims.itemId === 0) {\r\n                    this._idDimIdx = i;\r\n                }\r\n                if (!storage[dim]) {\r\n                    storage[dim] = [];\r\n                }\r\n                prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\r\n                this._chunkCount = storage[dim].length;\r\n            }\r\n            var dataItem = new Array(dimLen);\r\n            for (var idx = start; idx < end; idx++) {\r\n                dataItem = rawData.getItem(idx, dataItem);\r\n                var chunkIndex = Math.floor(idx / chunkSize);\r\n                var chunkOffset = idx % chunkSize;\r\n                for (var k = 0; k < dimLen; k++) {\r\n                    var dim = dimensions[k];\r\n                    var dimStorage = storage[dim][chunkIndex];\r\n                    var val = this._dimValueGetter(dataItem, dim, idx, k);\r\n                    dimStorage[chunkOffset] = val;\r\n                    var dimRawExtent = rawExtent[dim];\r\n                    val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                    val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                }\r\n                if (!rawData.pure) {\r\n                    var name_1 = nameList[idx];\r\n                    if (dataItem && name_1 == null) {\r\n                        if (dataItem.name != null) {\r\n                            nameList[idx] = name_1 = dataItem.name;\r\n                        }\r\n                        else if (nameDimIdx != null) {\r\n                            var nameDim = dimensions[nameDimIdx];\r\n                            var nameDimChunk = storage[nameDim][chunkIndex];\r\n                            if (nameDimChunk) {\r\n                                name_1 = nameDimChunk[chunkOffset];\r\n                                var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\r\n                                if (ordinalMeta && ordinalMeta.categories.length) {\r\n                                    name_1 = ordinalMeta.categories[name_1];\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    var id = dataItem == null ? null : dataItem.id;\r\n                    if (id == null && name_1 != null) {\r\n                        nameRepeatCount[name_1] = nameRepeatCount[name_1] || 0;\r\n                        id = name_1;\r\n                        if (nameRepeatCount[name_1] > 0) {\r\n                            id += '__ec__' + nameRepeatCount[name_1];\r\n                        }\r\n                        nameRepeatCount[name_1]++;\r\n                    }\r\n                    id != null && (idList[idx] = id);\r\n                }\r\n            }\r\n            if (!rawData.persistent && rawData.clean) {\r\n                rawData.clean();\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype.count = function () {\r\n            return this._count;\r\n        };\r\n        List.prototype.getIndices = function () {\r\n            var newIndices;\r\n            var indices = this._indices;\r\n            if (indices) {\r\n                var Ctor = indices.constructor;\r\n                var thisCount = this._count;\r\n                if (Ctor === Array) {\r\n                    newIndices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        newIndices[i] = indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    newIndices = new Ctor(indices.buffer, 0, thisCount);\r\n                }\r\n            }\r\n            else {\r\n                var Ctor = getIndicesCtor(this);\r\n                newIndices = new Ctor(this.count());\r\n                for (var i = 0; i < newIndices.length; i++) {\r\n                    newIndices[i] = i;\r\n                }\r\n            }\r\n            return newIndices;\r\n        };\r\n        List.prototype.get = function (dim, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var storage = this._storage;\r\n            if (!storage[dim]) {\r\n                return NaN;\r\n            }\r\n            idx = this.getRawIndex(idx);\r\n            var chunkIndex = Math.floor(idx / this._chunkSize);\r\n            var chunkOffset = idx % this._chunkSize;\r\n            var chunkStore = storage[dim][chunkIndex];\r\n            var value = chunkStore[chunkOffset];\r\n            return value;\r\n        };\r\n        List.prototype.getByRawIndex = function (dim, rawIdx) {\r\n            if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            if (!dimStore) {\r\n                return NaN;\r\n            }\r\n            var chunkIndex = Math.floor(rawIdx / this._chunkSize);\r\n            var chunkOffset = rawIdx % this._chunkSize;\r\n            var chunkStore = dimStore[chunkIndex];\r\n            return chunkStore[chunkOffset];\r\n        };\r\n        List.prototype._getFast = function (dim, rawIdx) {\r\n            var chunkIndex = Math.floor(rawIdx / this._chunkSize);\r\n            var chunkOffset = rawIdx % this._chunkSize;\r\n            var chunkStore = this._storage[dim][chunkIndex];\r\n            return chunkStore[chunkOffset];\r\n        };\r\n        List.prototype.getValues = function (dimensions, idx) {\r\n            var values = [];\r\n            if (!isArray(dimensions)) {\r\n                idx = dimensions;\r\n                dimensions = this.dimensions;\r\n            }\r\n            for (var i = 0, len = dimensions.length; i < len; i++) {\r\n                values.push(this.get(dimensions[i], idx));\r\n            }\r\n            return values;\r\n        };\r\n        List.prototype.hasValue = function (idx) {\r\n            var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\r\n            for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\r\n                if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        List.prototype.getDataExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            var dimData = this._storage[dim];\r\n            var initialExtent = getInitialExtent();\r\n            if (!dimData) {\r\n                return initialExtent;\r\n            }\r\n            var currEnd = this.count();\r\n            var useRaw = !this._indices;\r\n            var dimExtent;\r\n            if (useRaw) {\r\n                return this._rawExtent[dim].slice();\r\n            }\r\n            dimExtent = this._extent[dim];\r\n            if (dimExtent) {\r\n                return dimExtent.slice();\r\n            }\r\n            dimExtent = initialExtent;\r\n            var min = dimExtent[0];\r\n            var max = dimExtent[1];\r\n            for (var i = 0; i < currEnd; i++) {\r\n                var value = this._getFast(dim, this.getRawIndex(i));\r\n                value < min && (min = value);\r\n                value > max && (max = value);\r\n            }\r\n            dimExtent = [min, max];\r\n            this._extent[dim] = dimExtent;\r\n            return dimExtent;\r\n        };\r\n        List.prototype.getApproximateExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            return this._approximateExtent[dim] || this.getDataExtent(dim);\r\n        };\r\n        List.prototype.setApproximateExtent = function (extent, dim) {\r\n            dim = this.getDimension(dim);\r\n            this._approximateExtent[dim] = extent.slice();\r\n        };\r\n        List.prototype.getCalculationInfo = function (key) {\r\n            return this._calculationInfo[key];\r\n        };\r\n        List.prototype.setCalculationInfo = function (key, value) {\r\n            isObject$3(key)\r\n                ? extend(this._calculationInfo, key)\r\n                : (this._calculationInfo[key] = value);\r\n        };\r\n        List.prototype.getSum = function (dim) {\r\n            var dimData = this._storage[dim];\r\n            var sum = 0;\r\n            if (dimData) {\r\n                for (var i = 0, len = this.count(); i < len; i++) {\r\n                    var value = this.get(dim, i);\r\n                    if (!isNaN(value)) {\r\n                        sum += value;\r\n                    }\r\n                }\r\n            }\r\n            return sum;\r\n        };\r\n        List.prototype.getMedian = function (dim) {\r\n            var dimDataArray = [];\r\n            this.each(dim, function (val) {\r\n                if (!isNaN(val)) {\r\n                    dimDataArray.push(val);\r\n                }\r\n            });\r\n            var sortedDimDataArray = dimDataArray.sort(function (a, b) {\r\n                return a - b;\r\n            });\r\n            var len = this.count();\r\n            return len === 0\r\n                ? 0\r\n                : len % 2 === 1\r\n                    ? sortedDimDataArray[(len - 1) / 2]\r\n                    : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\r\n        };\r\n        List.prototype.rawIndexOf = function (dim, value) {\r\n            var invertedIndices = dim && this._invertedIndicesMap[dim];\r\n            if (__DEV__) {\r\n                if (!invertedIndices) {\r\n                    throw new Error('Do not supported yet');\r\n                }\r\n            }\r\n            var rawIndex = invertedIndices[value];\r\n            if (rawIndex == null || isNaN(rawIndex)) {\r\n                return INDEX_NOT_FOUND;\r\n            }\r\n            return rawIndex;\r\n        };\r\n        List.prototype.indexOfName = function (name) {\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                if (this.getName(i) === name) {\r\n                    return i;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indexOfRawIndex = function (rawIndex) {\r\n            if (rawIndex >= this._rawCount || rawIndex < 0) {\r\n                return -1;\r\n            }\r\n            if (!this._indices) {\r\n                return rawIndex;\r\n            }\r\n            var indices = this._indices;\r\n            var rawDataIndex = indices[rawIndex];\r\n            if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\r\n                return rawIndex;\r\n            }\r\n            var left = 0;\r\n            var right = this._count - 1;\r\n            while (left <= right) {\r\n                var mid = (left + right) / 2 | 0;\r\n                if (indices[mid] < rawIndex) {\r\n                    left = mid + 1;\r\n                }\r\n                else if (indices[mid] > rawIndex) {\r\n                    right = mid - 1;\r\n                }\r\n                else {\r\n                    return mid;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indicesOfNearest = function (dim, value, maxDistance) {\r\n            var storage = this._storage;\r\n            var dimData = storage[dim];\r\n            var nearestIndices = [];\r\n            if (!dimData) {\r\n                return nearestIndices;\r\n            }\r\n            if (maxDistance == null) {\r\n                maxDistance = Infinity;\r\n            }\r\n            var minDist = Infinity;\r\n            var minDiff = -1;\r\n            var nearestIndicesLen = 0;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var diff = value - this.get(dim, i);\r\n                var dist = Math.abs(diff);\r\n                if (dist <= maxDistance) {\r\n                    if (dist < minDist\r\n                        || (dist === minDist && diff >= 0 && minDiff < 0)) {\r\n                        minDist = dist;\r\n                        minDiff = diff;\r\n                        nearestIndicesLen = 0;\r\n                    }\r\n                    if (diff === minDiff) {\r\n                        nearestIndices[nearestIndicesLen++] = i;\r\n                    }\r\n                }\r\n            }\r\n            nearestIndices.length = nearestIndicesLen;\r\n            return nearestIndices;\r\n        };\r\n        List.prototype.getRawDataItem = function (idx) {\r\n            if (!this._rawData.persistent) {\r\n                var val = [];\r\n                for (var i = 0; i < this.dimensions.length; i++) {\r\n                    var dim = this.dimensions[i];\r\n                    val.push(this.get(dim, idx));\r\n                }\r\n                return val;\r\n            }\r\n            else {\r\n                return this._rawData.getItem(this.getRawIndex(idx));\r\n            }\r\n        };\r\n        List.prototype.getName = function (idx) {\r\n            var rawIndex = this.getRawIndex(idx);\r\n            return this._nameList[rawIndex]\r\n                || getRawValueFromStore(this, this._nameDimIdx, rawIndex)\r\n                || '';\r\n        };\r\n        List.prototype.getId = function (idx) {\r\n            return getId(this, this.getRawIndex(idx));\r\n        };\r\n        List.prototype.each = function (dims, cb, ctx, ctxCompat) {\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var dimSize = dimNames.length;\r\n            for (var i = 0; i < this.count(); i++) {\r\n                switch (dimSize) {\r\n                    case 0:\r\n                        cb.call(fCtx, i);\r\n                        break;\r\n                    case 1:\r\n                        cb.call(fCtx, this.get(dimNames[0], i), i);\r\n                        break;\r\n                    case 2:\r\n                        cb.call(fCtx, this.get(dimNames[0], i), this.get(dimNames[1], i), i);\r\n                        break;\r\n                    default:\r\n                        var k = 0;\r\n                        var value = [];\r\n                        for (; k < dimSize; k++) {\r\n                            value[k] = this.get(dimNames[k], i);\r\n                        }\r\n                        value[k] = i;\r\n                        cb.apply(fCtx, value);\r\n                }\r\n            }\r\n        };\r\n        List.prototype.filterSelf = function (dims, cb, ctx, ctxCompat) {\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var count = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(count);\r\n            var value = [];\r\n            var dimSize = dimNames.length;\r\n            var offset = 0;\r\n            var dim0 = dimNames[0];\r\n            for (var i = 0; i < count; i++) {\r\n                var keep = void 0;\r\n                var rawIdx = this.getRawIndex(i);\r\n                if (dimSize === 0) {\r\n                    keep = cb.call(fCtx, i);\r\n                }\r\n                else if (dimSize === 1) {\r\n                    var val = this._getFast(dim0, rawIdx);\r\n                    keep = cb.call(fCtx, val, i);\r\n                }\r\n                else {\r\n                    var k = 0;\r\n                    for (; k < dimSize; k++) {\r\n                        value[k] = this._getFast(dim0, rawIdx);\r\n                    }\r\n                    value[k] = i;\r\n                    keep = cb.apply(fCtx, value);\r\n                }\r\n                if (keep) {\r\n                    newIndices[offset++] = rawIdx;\r\n                }\r\n            }\r\n            if (offset < count) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.selectRange = function (range) {\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            var dimensions = [];\r\n            for (var dim in range) {\r\n                if (range.hasOwnProperty(dim)) {\r\n                    dimensions.push(dim);\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimensions);\r\n            }\r\n            var dimSize = dimensions.length;\r\n            if (!dimSize) {\r\n                return;\r\n            }\r\n            var originalCount = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(originalCount);\r\n            var offset = 0;\r\n            var dim0 = dimensions[0];\r\n            var min = range[dim0][0];\r\n            var max = range[dim0][1];\r\n            var quickFinished = false;\r\n            if (!this._indices) {\r\n                var idx = 0;\r\n                if (dimSize === 1) {\r\n                    var dimStorage = this._storage[dimensions[0]];\r\n                    for (var k = 0; k < this._chunkCount; k++) {\r\n                        var chunkStorage = dimStorage[k];\r\n                        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\r\n                        for (var i = 0; i < len; i++) {\r\n                            var val = chunkStorage[i];\r\n                            if ((val >= min && val <= max) || isNaN(val)) {\r\n                                newIndices[offset++] = idx;\r\n                            }\r\n                            idx++;\r\n                        }\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n                else if (dimSize === 2) {\r\n                    var dimStorage = this._storage[dim0];\r\n                    var dimStorage2 = this._storage[dimensions[1]];\r\n                    var min2 = range[dimensions[1]][0];\r\n                    var max2 = range[dimensions[1]][1];\r\n                    for (var k = 0; k < this._chunkCount; k++) {\r\n                        var chunkStorage = dimStorage[k];\r\n                        var chunkStorage2 = dimStorage2[k];\r\n                        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\r\n                        for (var i = 0; i < len; i++) {\r\n                            var val = chunkStorage[i];\r\n                            var val2 = chunkStorage2[i];\r\n                            if (((val >= min && val <= max) || isNaN(val))\r\n                                && ((val2 >= min2 && val2 <= max2) || isNaN(val2))) {\r\n                                newIndices[offset++] = idx;\r\n                            }\r\n                            idx++;\r\n                        }\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n            }\r\n            if (!quickFinished) {\r\n                if (dimSize === 1) {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        var val = this._getFast(dim0, rawIndex);\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = rawIndex;\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var keep = true;\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        for (var k = 0; k < dimSize; k++) {\r\n                            var dimk = dimensions[k];\r\n                            var val = this._getFast(dimk, rawIndex);\r\n                            if (val < range[dimk][0] || val > range[dimk][1]) {\r\n                                keep = false;\r\n                            }\r\n                        }\r\n                        if (keep) {\r\n                            newIndices[offset++] = this.getRawIndex(i);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (offset < originalCount) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.mapArray = function (dims, cb, ctx, ctxCompat) {\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            ctx = (ctx || ctxCompat || this);\r\n            var result = [];\r\n            this.each(dims, function () {\r\n                result.push(cb && cb.apply(this, arguments));\r\n            }, ctx);\r\n            return result;\r\n        };\r\n        List.prototype.map = function (dims, cb, ctx, ctxCompat) {\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var list = cloneListForMapAndSample(this, dimNames);\r\n            list._indices = this._indices;\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            var storage = list._storage;\r\n            var tmpRetValue = [];\r\n            var chunkSize = this._chunkSize;\r\n            var dimSize = dimNames.length;\r\n            var dataCount = this.count();\r\n            var values = [];\r\n            var rawExtent = list._rawExtent;\r\n            for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\r\n                for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\r\n                    values[dimIndex] = this.get(dimNames[dimIndex], dataIndex);\r\n                }\r\n                values[dimSize] = dataIndex;\r\n                var retValue = cb && cb.apply(fCtx, values);\r\n                if (retValue != null) {\r\n                    if (typeof retValue !== 'object') {\r\n                        tmpRetValue[0] = retValue;\r\n                        retValue = tmpRetValue;\r\n                    }\r\n                    var rawIndex = this.getRawIndex(dataIndex);\r\n                    var chunkIndex = Math.floor(rawIndex / chunkSize);\r\n                    var chunkOffset = rawIndex % chunkSize;\r\n                    for (var i = 0; i < retValue.length; i++) {\r\n                        var dim = dimNames[i];\r\n                        var val = retValue[i];\r\n                        var rawExtentOnDim = rawExtent[dim];\r\n                        var dimStore = storage[dim];\r\n                        if (dimStore) {\r\n                            dimStore[chunkIndex][chunkOffset] = val;\r\n                        }\r\n                        if (val < rawExtentOnDim[0]) {\r\n                            rawExtentOnDim[0] = val;\r\n                        }\r\n                        if (val > rawExtentOnDim[1]) {\r\n                            rawExtentOnDim[1] = val;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return list;\r\n        };\r\n        List.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\r\n            var list = cloneListForMapAndSample(this, [dimension]);\r\n            var targetStorage = list._storage;\r\n            var frameValues = [];\r\n            var frameSize = Math.floor(1 / rate);\r\n            var dimStore = targetStorage[dimension];\r\n            var len = this.count();\r\n            var chunkSize = this._chunkSize;\r\n            var rawExtentOnDim = list._rawExtent[dimension];\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var offset = 0;\r\n            for (var i = 0; i < len; i += frameSize) {\r\n                if (frameSize > len - i) {\r\n                    frameSize = len - i;\r\n                    frameValues.length = frameSize;\r\n                }\r\n                for (var k = 0; k < frameSize; k++) {\r\n                    var dataIdx = this.getRawIndex(i + k);\r\n                    var originalChunkIndex = Math.floor(dataIdx / chunkSize);\r\n                    var originalChunkOffset = dataIdx % chunkSize;\r\n                    frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\r\n                }\r\n                var value = sampleValue(frameValues);\r\n                var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\r\n                var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\r\n                var sampleChunkOffset = sampleFrameIdx % chunkSize;\r\n                dimStore[sampleChunkIndex][sampleChunkOffset] = value;\r\n                if (value < rawExtentOnDim[0]) {\r\n                    rawExtentOnDim[0] = value;\r\n                }\r\n                if (value > rawExtentOnDim[1]) {\r\n                    rawExtentOnDim[1] = value;\r\n                }\r\n                newIndices[offset++] = sampleFrameIdx;\r\n            }\r\n            list._count = offset;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.getItemModel = function (idx) {\r\n            var hostModel = this.hostModel;\r\n            var dataItem = this.getRawDataItem(idx);\r\n            return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\r\n        };\r\n        List.prototype.diff = function (otherList) {\r\n            var thisList = this;\r\n            return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\r\n                return getId(otherList, idx);\r\n            }, function (idx) {\r\n                return getId(thisList, idx);\r\n            });\r\n        };\r\n        List.prototype.getVisual = function (key) {\r\n            var visual = this._visual;\r\n            return visual && visual[key];\r\n        };\r\n        List.prototype.setVisual = function (kvObj, val) {\r\n            this._visual = this._visual || {};\r\n            if (isObject$3(kvObj)) {\r\n                extend(this._visual, kvObj);\r\n            }\r\n            else {\r\n                this._visual[kvObj] = val;\r\n            }\r\n        };\r\n        List.prototype.getItemVisual = function (idx, key) {\r\n            var itemVisual = this._itemVisuals[idx];\r\n            var val = itemVisual && itemVisual[key];\r\n            if (val == null) {\r\n                return this.getVisual(key);\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.ensureUniqueItemVisual = function (idx, key) {\r\n            var itemVisuals = this._itemVisuals;\r\n            var itemVisual = itemVisuals[idx];\r\n            if (!itemVisual) {\r\n                itemVisual = itemVisuals[idx] = {};\r\n            }\r\n            var val = itemVisual[key];\r\n            if (!val) {\r\n                val = this.getVisual(key);\r\n                if (isArray(val)) {\r\n                    val = val.slice();\r\n                }\r\n                else if (isObject$3(val)) {\r\n                    val = extend({}, val);\r\n                }\r\n                itemVisual[key] = val;\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.setItemVisual = function (idx, key, value) {\r\n            var itemVisual = this._itemVisuals[idx] || {};\r\n            this._itemVisuals[idx] = itemVisual;\r\n            if (isObject$3(key)) {\r\n                extend(itemVisual, key);\r\n            }\r\n            else {\r\n                itemVisual[key] = value;\r\n            }\r\n        };\r\n        List.prototype.clearAllVisual = function () {\r\n            this._visual = {};\r\n            this._itemVisuals = [];\r\n        };\r\n        List.prototype.setLayout = function (key, val) {\r\n            if (isObject$3(key)) {\r\n                for (var name_2 in key) {\r\n                    if (key.hasOwnProperty(name_2)) {\r\n                        this.setLayout(name_2, key[name_2]);\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n            this._layout[key] = val;\r\n        };\r\n        List.prototype.getLayout = function (key) {\r\n            return this._layout[key];\r\n        };\r\n        List.prototype.getItemLayout = function (idx) {\r\n            return this._itemLayouts[idx];\r\n        };\r\n        List.prototype.setItemLayout = function (idx, layout, merge) {\r\n            this._itemLayouts[idx] = merge\r\n                ? extend(this._itemLayouts[idx] || {}, layout)\r\n                : layout;\r\n        };\r\n        List.prototype.clearItemLayouts = function () {\r\n            this._itemLayouts.length = 0;\r\n        };\r\n        List.prototype.setItemGraphicEl = function (idx, el) {\r\n            var hostModel = this.hostModel;\r\n            if (el) {\r\n                var ecData = getECData(el);\r\n                ecData.dataIndex = idx;\r\n                ecData.dataType = this.dataType;\r\n                ecData.seriesIndex = hostModel && hostModel.seriesIndex;\r\n                if (el.type === 'group') {\r\n                    el.traverse(setItemDataAndSeriesIndex, el);\r\n                }\r\n            }\r\n            this._graphicEls[idx] = el;\r\n        };\r\n        List.prototype.getItemGraphicEl = function (idx) {\r\n            return this._graphicEls[idx];\r\n        };\r\n        List.prototype.eachItemGraphicEl = function (cb, context) {\r\n            each(this._graphicEls, function (el, idx) {\r\n                if (el) {\r\n                    cb && cb.call(context, el, idx);\r\n                }\r\n            });\r\n        };\r\n        List.prototype.cloneShallow = function (list) {\r\n            if (!list) {\r\n                var dimensionInfoList = map(this.dimensions, this.getDimensionInfo, this);\r\n                list = new List(dimensionInfoList, this.hostModel);\r\n            }\r\n            list._storage = this._storage;\r\n            transferProperties(list, this);\r\n            if (this._indices) {\r\n                var Ctor = this._indices.constructor;\r\n                if (Ctor === Array) {\r\n                    var thisCount = this._indices.length;\r\n                    list._indices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        list._indices[i] = this._indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    list._indices = new Ctor(this._indices);\r\n                }\r\n            }\r\n            else {\r\n                list._indices = null;\r\n            }\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return list;\r\n        };\r\n        List.prototype.wrapMethod = function (methodName, injectFunction) {\r\n            var originalMethod = this[methodName];\r\n            if (typeof originalMethod !== 'function') {\r\n                return;\r\n            }\r\n            this.__wrappedMethods = this.__wrappedMethods || [];\r\n            this.__wrappedMethods.push(methodName);\r\n            this[methodName] = function () {\r\n                var res = originalMethod.apply(this, arguments);\r\n                return injectFunction.apply(this, [res].concat(slice(arguments)));\r\n            };\r\n        };\r\n        List.internalField = (function () {\r\n            defaultDimValueGetters = {\r\n                arrayRows: getDimValueSimply,\r\n                objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return parseDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\r\n                },\r\n                keyedColumns: getDimValueSimply,\r\n                original: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\r\n                    if (!this._rawData.pure && isDataItemOption(dataItem)) {\r\n                        this.hasItemOption = true;\r\n                    }\r\n                    return parseDataValue((value instanceof Array)\r\n                        ? value[dimIndex]\r\n                        : value, this._dimensionInfos[dimName]);\r\n                },\r\n                typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return dataItem[dimIndex];\r\n                }\r\n            };\r\n            function getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\r\n                return parseDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\r\n            }\r\n            prepareInvertedIndex = function (list) {\r\n                var invertedIndicesMap = list._invertedIndicesMap;\r\n                each(invertedIndicesMap, function (invertedIndices, dim) {\r\n                    var dimInfo = list._dimensionInfos[dim];\r\n                    var ordinalMeta = dimInfo.ordinalMeta;\r\n                    if (ordinalMeta) {\r\n                        invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);\r\n                        for (var i = 0; i < invertedIndices.length; i++) {\r\n                            invertedIndices[i] = INDEX_NOT_FOUND;\r\n                        }\r\n                        for (var i = 0; i < list._count; i++) {\r\n                            invertedIndices[list.get(dim, i)] = i;\r\n                        }\r\n                    }\r\n                });\r\n            };\r\n            getRawValueFromStore = function (list, dimIndex, rawIndex) {\r\n                var val;\r\n                if (dimIndex != null) {\r\n                    var chunkSize = list._chunkSize;\r\n                    var chunkIndex = Math.floor(rawIndex / chunkSize);\r\n                    var chunkOffset = rawIndex % chunkSize;\r\n                    var dim = list.dimensions[dimIndex];\r\n                    var chunk = list._storage[dim][chunkIndex];\r\n                    if (chunk) {\r\n                        val = chunk[chunkOffset];\r\n                        var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\r\n                        if (ordinalMeta && ordinalMeta.categories.length) {\r\n                            val = ordinalMeta.categories[val];\r\n                        }\r\n                    }\r\n                }\r\n                return val;\r\n            };\r\n            getIndicesCtor = function (list) {\r\n                return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\r\n            };\r\n            prepareChunks = function (storage, dimInfo, chunkSize, chunkCount, end) {\r\n                var DataCtor = dataCtors[dimInfo.type];\r\n                var lastChunkIndex = chunkCount - 1;\r\n                var dim = dimInfo.name;\r\n                var resizeChunkArray = storage[dim][lastChunkIndex];\r\n                if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\r\n                    var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize));\r\n                    for (var j = 0; j < resizeChunkArray.length; j++) {\r\n                        newStore[j] = resizeChunkArray[j];\r\n                    }\r\n                    storage[dim][lastChunkIndex] = newStore;\r\n                }\r\n                for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\r\n                    storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\r\n                }\r\n            };\r\n            getRawIndexWithoutIndices = function (idx) {\r\n                return idx;\r\n            };\r\n            getRawIndexWithIndices = function (idx) {\r\n                if (idx < this._count && idx >= 0) {\r\n                    return this._indices[idx];\r\n                }\r\n                return -1;\r\n            };\r\n            getId = function (list, rawIndex) {\r\n                var id = list._idList[rawIndex];\r\n                if (id == null) {\r\n                    id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\r\n                }\r\n                if (id == null) {\r\n                    id = ID_PREFIX + rawIndex;\r\n                }\r\n                return id;\r\n            };\r\n            normalizeDimensions = function (dimensions) {\r\n                if (!isArray(dimensions)) {\r\n                    dimensions = [dimensions];\r\n                }\r\n                return dimensions;\r\n            };\r\n            validateDimensions = function (list, dims) {\r\n                for (var i = 0; i < dims.length; i++) {\r\n                    if (!list._dimensionInfos[dims[i]]) {\r\n                        console.error('Unkown dimension ' + dims[i]);\r\n                    }\r\n                }\r\n            };\r\n            cloneListForMapAndSample = function (original, excludeDimensions) {\r\n                var allDimensions = original.dimensions;\r\n                var list = new List(map(allDimensions, original.getDimensionInfo, original), original.hostModel);\r\n                transferProperties(list, original);\r\n                var storage = list._storage = {};\r\n                var originalStorage = original._storage;\r\n                for (var i = 0; i < allDimensions.length; i++) {\r\n                    var dim = allDimensions[i];\r\n                    if (originalStorage[dim]) {\r\n                        if (indexOf(excludeDimensions, dim) >= 0) {\r\n                            storage[dim] = cloneDimStore(originalStorage[dim]);\r\n                            list._rawExtent[dim] = getInitialExtent();\r\n                            list._extent[dim] = null;\r\n                        }\r\n                        else {\r\n                            storage[dim] = originalStorage[dim];\r\n                        }\r\n                    }\r\n                }\r\n                return list;\r\n            };\r\n            cloneDimStore = function (originalDimStore) {\r\n                var newDimStore = new Array(originalDimStore.length);\r\n                for (var j = 0; j < originalDimStore.length; j++) {\r\n                    newDimStore[j] = cloneChunk(originalDimStore[j]);\r\n                }\r\n                return newDimStore;\r\n            };\r\n            function cloneChunk(originalChunk) {\r\n                var Ctor = originalChunk.constructor;\r\n                return Ctor === Array\r\n                    ? originalChunk.slice()\r\n                    : new Ctor(originalChunk);\r\n            }\r\n            getInitialExtent = function () {\r\n                return [Infinity, -Infinity];\r\n            };\r\n            setItemDataAndSeriesIndex = function (child) {\r\n                var childECData = getECData(child);\r\n                var thisECData = getECData(this);\r\n                childECData.seriesIndex = thisECData.seriesIndex;\r\n                childECData.dataIndex = thisECData.dataIndex;\r\n                childECData.dataType = thisECData.dataType;\r\n            };\r\n            transferProperties = function (target, source) {\r\n                each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\r\n                    if (source.hasOwnProperty(propName)) {\r\n                        target[propName] = source[propName];\r\n                    }\r\n                });\r\n                target.__wrappedMethods = source.__wrappedMethods;\r\n                each(CLONE_PROPERTIES, function (propName) {\r\n                    target[propName] = clone(source[propName]);\r\n                });\r\n                target._calculationInfo = extend({}, source._calculationInfo);\r\n            };\r\n        })();\r\n        return List;\r\n    }());\n\n    function completeDimensions(sysDims, source, opt) {\r\n        if (!(source instanceof Source)) {\r\n            source = Source.seriesDataToSource(source);\r\n        }\r\n        opt = opt || {};\r\n        sysDims = (sysDims || []).slice();\r\n        var dimsDef = (opt.dimsDef || []).slice();\r\n        var dataDimNameMap = createHashMap();\r\n        var coordDimNameMap = createHashMap();\r\n        var result = [];\r\n        var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);\r\n        for (var i = 0; i < dimCount; i++) {\r\n            var dimDefItemRaw = dimsDef[i];\r\n            var dimDefItem = dimsDef[i] = extend({}, isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw });\r\n            var userDimName = dimDefItem.name;\r\n            var resultItem = result[i] = new DataDimensionInfo();\r\n            if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\r\n                resultItem.name = resultItem.displayName = userDimName;\r\n                dataDimNameMap.set(userDimName, i);\r\n            }\r\n            dimDefItem.type != null && (resultItem.type = dimDefItem.type);\r\n            dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\r\n        }\r\n        var encodeDef = opt.encodeDef;\r\n        if (!encodeDef && opt.encodeDefaulter) {\r\n            encodeDef = opt.encodeDefaulter(source, dimCount);\r\n        }\r\n        var encodeDefMap = createHashMap(encodeDef);\r\n        encodeDefMap.each(function (dataDimsRaw, coordDim) {\r\n            var dataDims = normalizeToArray(dataDimsRaw).slice();\r\n            if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\r\n                encodeDefMap.set(coordDim, false);\r\n                return;\r\n            }\r\n            var validDataDims = encodeDefMap.set(coordDim, []);\r\n            each(dataDims, function (resultDimIdxOrName, idx) {\r\n                var resultDimIdx = isString(resultDimIdxOrName)\r\n                    ? dataDimNameMap.get(resultDimIdxOrName)\r\n                    : resultDimIdxOrName;\r\n                if (resultDimIdx != null && resultDimIdx < dimCount) {\r\n                    validDataDims[idx] = resultDimIdx;\r\n                    applyDim(result[resultDimIdx], coordDim, idx);\r\n                }\r\n            });\r\n        });\r\n        var availDimIdx = 0;\r\n        each(sysDims, function (sysDimItemRaw) {\r\n            var coordDim;\r\n            var sysDimItemDimsDef;\r\n            var sysDimItemOtherDims;\r\n            var sysDimItem;\r\n            if (isString(sysDimItemRaw)) {\r\n                coordDim = sysDimItemRaw;\r\n                sysDimItem = {};\r\n            }\r\n            else {\r\n                sysDimItem = sysDimItemRaw;\r\n                coordDim = sysDimItem.name;\r\n                var ordinalMeta = sysDimItem.ordinalMeta;\r\n                sysDimItem.ordinalMeta = null;\r\n                sysDimItem = clone(sysDimItem);\r\n                sysDimItem.ordinalMeta = ordinalMeta;\r\n                sysDimItemDimsDef = sysDimItem.dimsDef;\r\n                sysDimItemOtherDims = sysDimItem.otherDims;\r\n                sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex =\r\n                    sysDimItem.dimsDef = sysDimItem.otherDims = null;\r\n            }\r\n            var dataDims = encodeDefMap.get(coordDim);\r\n            if (dataDims === false) {\r\n                return;\r\n            }\r\n            dataDims = normalizeToArray(dataDims);\r\n            if (!dataDims.length) {\r\n                for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\r\n                    while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\r\n                        availDimIdx++;\r\n                    }\r\n                    availDimIdx < result.length && dataDims.push(availDimIdx++);\r\n                }\r\n            }\r\n            each(dataDims, function (resultDimIdx, coordDimIndex) {\r\n                var resultItem = result[resultDimIdx];\r\n                applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\r\n                if (resultItem.name == null && sysDimItemDimsDef) {\r\n                    var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\r\n                    !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem });\r\n                    resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\r\n                    resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\r\n                }\r\n                sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\r\n            });\r\n        });\r\n        function applyDim(resultItem, coordDim, coordDimIndex) {\r\n            if (VISUAL_DIMENSIONS.get(coordDim) != null) {\r\n                resultItem.otherDims[coordDim] = coordDimIndex;\r\n            }\r\n            else {\r\n                resultItem.coordDim = coordDim;\r\n                resultItem.coordDimIndex = coordDimIndex;\r\n                coordDimNameMap.set(coordDim, true);\r\n            }\r\n        }\r\n        var generateCoord = opt.generateCoord;\r\n        var generateCoordCount = opt.generateCoordCount;\r\n        var fromZero = generateCoordCount != null;\r\n        generateCoordCount = generateCoord ? (generateCoordCount || 1) : 0;\r\n        var extra = generateCoord || 'value';\r\n        for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\r\n            var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\r\n            var coordDim = resultItem.coordDim;\r\n            if (coordDim == null) {\r\n                resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\r\n                resultItem.coordDimIndex = 0;\r\n                if (!generateCoord || generateCoordCount <= 0) {\r\n                    resultItem.isExtraCoord = true;\r\n                }\r\n                generateCoordCount--;\r\n            }\r\n            resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap, false));\r\n            if (resultItem.type == null\r\n                && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must\r\n                    || (resultItem.isExtraCoord\r\n                        && (resultItem.otherDims.itemName != null\r\n                            || resultItem.otherDims.seriesName != null)))) {\r\n                resultItem.type = 'ordinal';\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function getDimCount(source, sysDims, dimsDef, optDimCount) {\r\n        var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\r\n        each(sysDims, function (sysDimItem) {\r\n            var sysDimItemDimsDef;\r\n            if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\r\n                dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\r\n            }\r\n        });\r\n        return dimCount;\r\n    }\r\n    function genName(name, map, fromZero) {\r\n        if (fromZero || map.get(name) != null) {\r\n            var i = 0;\r\n            while (map.get(name + i) != null) {\r\n                i++;\r\n            }\r\n            name += i;\r\n        }\r\n        map.set(name, true);\r\n        return name;\r\n    }\n\n    function createDimensions (source, opt) {\r\n        opt = opt || {};\r\n        return completeDimensions(opt.coordDimensions || [], source, {\r\n            dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\r\n            encodeDef: opt.encodeDefine || source.encodeDefine,\r\n            dimCount: opt.dimensionsCount,\r\n            encodeDefaulter: opt.encodeDefaulter,\r\n            generateCoord: opt.generateCoord,\r\n            generateCoordCount: opt.generateCoordCount\r\n        });\r\n    }\n\n    var CoordSysInfo = (function () {\r\n        function CoordSysInfo(coordSysName) {\r\n            this.coordSysDims = [];\r\n            this.axisMap = createHashMap();\r\n            this.categoryAxisMap = createHashMap();\r\n            this.coordSysName = coordSysName;\r\n        }\r\n        return CoordSysInfo;\r\n    }());\r\n    function getCoordSysInfoBySeries(seriesModel) {\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var result = new CoordSysInfo(coordSysName);\r\n        var fetch = fetchers[coordSysName];\r\n        if (fetch) {\r\n            fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\r\n            return result;\r\n        }\r\n    }\r\n    var fetchers = {\r\n        cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\r\n            var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!xAxisModel) {\r\n                    throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\r\n                }\r\n                if (!yAxisModel) {\r\n                    throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['x', 'y'];\r\n            axisMap.set('x', xAxisModel);\r\n            axisMap.set('y', yAxisModel);\r\n            if (isCategory(xAxisModel)) {\r\n                categoryAxisMap.set('x', xAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(yAxisModel)) {\r\n                categoryAxisMap.set('y', yAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!singleAxisModel) {\r\n                    throw new Error('singleAxis should be specified.');\r\n                }\r\n            }\r\n            result.coordSysDims = ['single'];\r\n            axisMap.set('single', singleAxisModel);\r\n            if (isCategory(singleAxisModel)) {\r\n                categoryAxisMap.set('single', singleAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n        },\r\n        polar: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n            var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n            var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n            if (__DEV__) {\r\n                if (!angleAxisModel) {\r\n                    throw new Error('angleAxis option not found');\r\n                }\r\n                if (!radiusAxisModel) {\r\n                    throw new Error('radiusAxis option not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['radius', 'angle'];\r\n            axisMap.set('radius', radiusAxisModel);\r\n            axisMap.set('angle', angleAxisModel);\r\n            if (isCategory(radiusAxisModel)) {\r\n                categoryAxisMap.set('radius', radiusAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(angleAxisModel)) {\r\n                categoryAxisMap.set('angle', angleAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        geo: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            result.coordSysDims = ['lng', 'lat'];\r\n        },\r\n        parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var ecModel = seriesModel.ecModel;\r\n            var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n            var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\r\n            each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\r\n                var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n                var axisDim = coordSysDims[index];\r\n                axisMap.set(axisDim, axisModel);\r\n                if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\r\n                    categoryAxisMap.set(axisDim, axisModel);\r\n                    result.firstCategoryDimIndex = index;\r\n                }\r\n            });\r\n        }\r\n    };\r\n    function isCategory(axisModel) {\r\n        return axisModel.get('type') === 'category';\r\n    }\n\n    function enableDataStack(seriesModel, dimensionInfoList, opt) {\r\n        opt = opt || {};\r\n        var byIndex = opt.byIndex;\r\n        var stackedCoordDimension = opt.stackedCoordDimension;\r\n        var mayStack = !!(seriesModel && seriesModel.get('stack'));\r\n        var stackedByDimInfo;\r\n        var stackedDimInfo;\r\n        var stackResultDimension;\r\n        var stackedOverDimension;\r\n        each(dimensionInfoList, function (dimensionInfo, index) {\r\n            if (isString(dimensionInfo)) {\r\n                dimensionInfoList[index] = dimensionInfo = {\r\n                    name: dimensionInfo\r\n                };\r\n            }\r\n            if (mayStack && !dimensionInfo.isExtraCoord) {\r\n                if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\r\n                    stackedByDimInfo = dimensionInfo;\r\n                }\r\n                if (!stackedDimInfo\r\n                    && dimensionInfo.type !== 'ordinal'\r\n                    && dimensionInfo.type !== 'time'\r\n                    && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\r\n                    stackedDimInfo = dimensionInfo;\r\n                }\r\n            }\r\n        });\r\n        if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\r\n            byIndex = true;\r\n        }\r\n        if (stackedDimInfo) {\r\n            stackResultDimension = '__\\0ecstackresult';\r\n            stackedOverDimension = '__\\0ecstackedover';\r\n            if (stackedByDimInfo) {\r\n                stackedByDimInfo.createInvertedIndices = true;\r\n            }\r\n            var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\r\n            var stackedDimType = stackedDimInfo.type;\r\n            var stackedDimCoordIndex_1 = 0;\r\n            each(dimensionInfoList, function (dimensionInfo) {\r\n                if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\r\n                    stackedDimCoordIndex_1++;\r\n                }\r\n            });\r\n            dimensionInfoList.push({\r\n                name: stackResultDimension,\r\n                coordDim: stackedDimCoordDim_1,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n            stackedDimCoordIndex_1++;\r\n            dimensionInfoList.push({\r\n                name: stackedOverDimension,\r\n                coordDim: stackedOverDimension,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n        }\r\n        return {\r\n            stackedDimension: stackedDimInfo && stackedDimInfo.name,\r\n            stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\r\n            isStackedByIndex: byIndex,\r\n            stackedOverDimension: stackedOverDimension,\r\n            stackResultDimension: stackResultDimension\r\n        };\r\n    }\r\n    function isDimensionStacked(data, stackedDim) {\r\n        return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n    }\r\n    function getStackedDimension(data, targetDim) {\r\n        return isDimensionStacked(data, targetDim)\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDim;\r\n    }\n\n    function createListFromArray(source, seriesModel, opt) {\r\n        opt = opt || {};\r\n        if (!(source instanceof Source)) {\r\n            source = Source.seriesDataToSource(source);\r\n        }\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var registeredCoordSys = CoordinateSystemManager.get(coordSysName);\r\n        var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\r\n        var coordSysDimDefs;\r\n        if (coordSysInfo && coordSysInfo.coordSysDims) {\r\n            coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) {\r\n                var dimInfo = {\r\n                    name: dim\r\n                };\r\n                var axisModel = coordSysInfo.axisMap.get(dim);\r\n                if (axisModel) {\r\n                    var axisType = axisModel.get('type');\r\n                    dimInfo.type = getDimensionTypeByAxis(axisType);\r\n                }\r\n                return dimInfo;\r\n            });\r\n        }\r\n        if (!coordSysDimDefs) {\r\n            coordSysDimDefs = (registeredCoordSys && (registeredCoordSys.getDimensionsInfo\r\n                ? registeredCoordSys.getDimensionsInfo()\r\n                : registeredCoordSys.dimensions.slice())) || ['x', 'y'];\r\n        }\r\n        var useEncodeDefaulter = opt.useEncodeDefaulter;\r\n        var dimInfoList = createDimensions(source, {\r\n            coordDimensions: coordSysDimDefs,\r\n            generateCoord: opt.generateCoord,\r\n            encodeDefaulter: isFunction(useEncodeDefaulter)\r\n                ? useEncodeDefaulter\r\n                : useEncodeDefaulter\r\n                    ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)\r\n                    : null\r\n        });\r\n        var firstCategoryDimIndex;\r\n        var hasNameEncode;\r\n        coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) {\r\n            var coordDim = dimInfo.coordDim;\r\n            var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\r\n            if (categoryAxisModel) {\r\n                if (firstCategoryDimIndex == null) {\r\n                    firstCategoryDimIndex = dimIndex;\r\n                }\r\n                dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\r\n            }\r\n            if (dimInfo.otherDims.itemName != null) {\r\n                hasNameEncode = true;\r\n            }\r\n        });\r\n        if (!hasNameEncode && firstCategoryDimIndex != null) {\r\n            dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\r\n        }\r\n        var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\r\n        var list = new List(dimInfoList, seriesModel);\r\n        list.setCalculationInfo(stackCalculationInfo);\r\n        var dimValueGetter = (firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source))\r\n            ? function (itemOpt, dimName, dataIndex, dimIndex) {\r\n                return dimIndex === firstCategoryDimIndex\r\n                    ? dataIndex\r\n                    : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\r\n            }\r\n            : null;\r\n        list.hasItemOption = false;\r\n        list.initData(source, null, dimValueGetter);\r\n        return list;\r\n    }\r\n    function isNeedCompleteOrdinalData(source) {\r\n        if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var sampleItem = firstDataNotNull(source.data || []);\r\n            return sampleItem != null\r\n                && !isArray(getDataItemValue(sampleItem));\r\n        }\r\n    }\r\n    function firstDataNotNull(data) {\r\n        var i = 0;\r\n        while (i < data.length && data[i] == null) {\r\n            i++;\r\n        }\r\n        return data[i];\r\n    }\n\n    var LineSeriesModel = (function (_super) {\r\n        __extends(LineSeriesModel, _super);\r\n        function LineSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LineSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            _this.legendSymbol = 'line';\r\n            return _this;\r\n        }\r\n        LineSeriesModel.prototype.getInitialData = function (option) {\r\n            if (__DEV__) {\r\n                var coordSys = option.coordinateSystem;\r\n                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\r\n                    throw new Error('Line not support coordinateSystem besides cartesian and polar');\r\n                }\r\n            }\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        LineSeriesModel.type = 'series.line';\r\n        LineSeriesModel.dependencies = ['grid', 'polar'];\r\n        LineSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            clip: true,\r\n            label: {\r\n                position: 'top'\r\n            },\r\n            lineStyle: {\r\n                width: 2,\r\n                type: 'solid'\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                lineStyle: {\r\n                    width: 'bolder'\r\n                }\r\n            },\r\n            step: false,\r\n            smooth: false,\r\n            smoothMonotone: null,\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 4,\r\n            symbolRotate: null,\r\n            showSymbol: true,\r\n            showAllSymbol: 'auto',\r\n            connectNulls: false,\r\n            sampling: 'none',\r\n            animationEasing: 'linear',\r\n            progressive: 0,\r\n            hoverLayerThreshold: Infinity\r\n        };\r\n        return LineSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(LineSeriesModel);\n\n    var Triangle = Path.extend({\r\n        type: 'triangle',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy + height);\r\n            path.lineTo(cx - width, cy + height);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Diamond = Path.extend({\r\n        type: 'diamond',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy);\r\n            path.lineTo(cx, cy + height);\r\n            path.lineTo(cx - width, cy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Pin = Path.extend({\r\n        type: 'pin',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var w = shape.width / 5 * 3;\r\n            var h = Math.max(w, shape.height);\r\n            var r = w / 2;\r\n            var dy = r * r / (h - r);\r\n            var cy = y - h + r + dy;\r\n            var angle = Math.asin(dy / r);\r\n            var dx = Math.cos(angle) * r;\r\n            var tanX = Math.sin(angle);\r\n            var tanY = Math.cos(angle);\r\n            var cpLen = r * 0.6;\r\n            var cpLen2 = r * 0.7;\r\n            path.moveTo(x - dx, cy + dy);\r\n            path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\r\n            path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\r\n            path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Arrow = Path.extend({\r\n        type: 'arrow',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (ctx, shape) {\r\n            var height = shape.height;\r\n            var width = shape.width;\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var dx = width / 3 * 2;\r\n            ctx.moveTo(x, y);\r\n            ctx.lineTo(x + dx, y + height);\r\n            ctx.lineTo(x, y + height / 4 * 3);\r\n            ctx.lineTo(x - dx, y + height);\r\n            ctx.lineTo(x, y);\r\n            ctx.closePath();\r\n        }\r\n    });\r\n    var symbolCtors = {\r\n        line: Rect,\r\n        rect: Rect,\r\n        roundRect: Rect,\r\n        square: Rect,\r\n        circle: Circle,\r\n        diamond: Diamond,\r\n        pin: Pin,\r\n        arrow: Arrow,\r\n        triangle: Triangle\r\n    };\r\n    var symbolShapeMakers = {\r\n        line: function (x, y, w, h, shape) {\r\n            var thickness = 2;\r\n            shape.x = x;\r\n            shape.y = y + h / 2 - thickness / 2;\r\n            shape.width = w;\r\n            shape.height = thickness;\r\n        },\r\n        rect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        roundRect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n            shape.r = Math.min(w, h) / 4;\r\n        },\r\n        square: function (x, y, w, h, shape) {\r\n            var size = Math.min(w, h);\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = size;\r\n            shape.height = size;\r\n        },\r\n        circle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.r = Math.min(w, h) / 2;\r\n        },\r\n        diamond: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        pin: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        arrow: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        triangle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        }\r\n    };\r\n    var symbolBuildProxies = {};\r\n    each(symbolCtors, function (Ctor, name) {\r\n        symbolBuildProxies[name] = new Ctor();\r\n    });\r\n    var SymbolClz = Path.extend({\r\n        type: 'symbol',\r\n        shape: {\r\n            symbolType: '',\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        calculateTextPosition: function (out, config, rect) {\r\n            var res = calculateTextPosition(out, config, rect);\r\n            var shape = this.shape;\r\n            if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\r\n                res.y = rect.y + rect.height * 0.4;\r\n            }\r\n            return res;\r\n        },\r\n        buildPath: function (ctx, shape, inBundle) {\r\n            var symbolType = shape.symbolType;\r\n            if (symbolType !== 'none') {\r\n                var proxySymbol = symbolBuildProxies[symbolType];\r\n                if (!proxySymbol) {\r\n                    symbolType = 'rect';\r\n                    proxySymbol = symbolBuildProxies[symbolType];\r\n                }\r\n                symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\r\n                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\r\n            }\r\n        }\r\n    });\r\n    function symbolPathSetColor(color, innerColor) {\r\n        if (this.type !== 'image') {\r\n            var symbolStyle = this.style;\r\n            if (this.__isEmptyBrush) {\r\n                symbolStyle.stroke = color;\r\n                symbolStyle.fill = innerColor || '#fff';\r\n                symbolStyle.lineWidth = 2;\r\n            }\r\n            else {\r\n                symbolStyle.fill = color;\r\n            }\r\n            this.markRedraw();\r\n        }\r\n    }\r\n    function createSymbol(symbolType, x, y, w, h, color, keepAspect) {\r\n        var isEmpty = symbolType.indexOf('empty') === 0;\r\n        if (isEmpty) {\r\n            symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\r\n        }\r\n        var symbolPath;\r\n        if (symbolType.indexOf('image://') === 0) {\r\n            symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else if (symbolType.indexOf('path://') === 0) {\r\n            symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else {\r\n            symbolPath = new SymbolClz({\r\n                shape: {\r\n                    symbolType: symbolType,\r\n                    x: x,\r\n                    y: y,\r\n                    width: w,\r\n                    height: h\r\n                }\r\n            });\r\n        }\r\n        symbolPath.__isEmptyBrush = isEmpty;\r\n        symbolPath.setColor = symbolPathSetColor;\r\n        if (color) {\r\n            symbolPath.setColor(color);\r\n        }\r\n        return symbolPath;\r\n    }\n\n    function getDefaultLabel(data, dataIndex, interpolatedValues) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        var len = labelDims.length;\r\n        if (len === 1) {\r\n            return interpolatedValues == null\r\n                ? retrieveRawValue(data, dataIndex, labelDims[0])\r\n                : interpolatedValues;\r\n        }\r\n        else if (len) {\r\n            var vals = [];\r\n            for (var i = 0; i < labelDims.length; i++) {\r\n                var val = interpolatedValues == null\r\n                    ? retrieveRawValue(data, dataIndex, labelDims[i])\r\n                    : interpolatedValues;\r\n                vals.push(val);\r\n            }\r\n            return vals.join(' ');\r\n        }\r\n    }\n\n    var Symbol = (function (_super) {\r\n        __extends(Symbol, _super);\r\n        function Symbol(data, idx, seriesScope, opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.updateData(data, idx, seriesScope, opts);\r\n            return _this;\r\n        }\r\n        Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\r\n            this.removeAll();\r\n            var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\r\n            symbolPath.attr({\r\n                z2: 100,\r\n                culling: true,\r\n                scaleX: symbolSize[0] / 2,\r\n                scaleY: symbolSize[1] / 2\r\n            });\r\n            symbolPath.drift = driftSymbol;\r\n            this._symbolType = symbolType;\r\n            this.add(symbolPath);\r\n        };\r\n        Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\r\n            this.childAt(0).stopAnimation(null, toLastFrame);\r\n        };\r\n        Symbol.prototype.getSymbolPath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Symbol.prototype.highlight = function () {\r\n            enterEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.downplay = function () {\r\n            leaveEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.setZ = function (zlevel, z) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.zlevel = zlevel;\r\n            symbolPath.z = z;\r\n        };\r\n        Symbol.prototype.setDraggable = function (draggable) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.draggable = draggable;\r\n            symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\r\n        };\r\n        Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\r\n            this.silent = false;\r\n            var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n            var seriesModel = data.hostModel;\r\n            var symbolSize = Symbol.getSymbolSize(data, idx);\r\n            var isInit = symbolType !== this._symbolType;\r\n            if (isInit) {\r\n                var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\r\n                this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\r\n            }\r\n            else {\r\n                var symbolPath = this.childAt(0);\r\n                symbolPath.silent = false;\r\n                updateProps(symbolPath, {\r\n                    scaleX: symbolSize[0] / 2,\r\n                    scaleY: symbolSize[1] / 2\r\n                }, seriesModel, idx);\r\n            }\r\n            this._updateCommon(data, idx, symbolSize, seriesScope, opts);\r\n            if (isInit) {\r\n                var symbolPath = this.childAt(0);\r\n                var target = {\r\n                    scaleX: this._sizeX,\r\n                    scaleY: this._sizeY,\r\n                    style: {\r\n                        opacity: symbolPath.style.opacity\r\n                    }\r\n                };\r\n                symbolPath.scaleX = symbolPath.scaleY = 0;\r\n                symbolPath.style.opacity = 0;\r\n                initProps(symbolPath, target, seriesModel, idx);\r\n            }\r\n            this._seriesModel = seriesModel;\r\n        };\r\n        Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = data.hostModel;\r\n            var emphasisItemStyle;\r\n            var blurItemStyle;\r\n            var selectItemStyle;\r\n            var focus;\r\n            var blurScope;\r\n            var symbolOffset;\r\n            var labelStatesModels;\r\n            var hoverScale;\r\n            var cursorStyle;\r\n            if (seriesScope) {\r\n                emphasisItemStyle = seriesScope.emphasisItemStyle;\r\n                blurItemStyle = seriesScope.blurItemStyle;\r\n                selectItemStyle = seriesScope.selectItemStyle;\r\n                focus = seriesScope.focus;\r\n                blurScope = seriesScope.blurScope;\r\n                symbolOffset = seriesScope.symbolOffset;\r\n                labelStatesModels = seriesScope.labelStatesModels;\r\n                hoverScale = seriesScope.hoverScale;\r\n                cursorStyle = seriesScope.cursorStyle;\r\n            }\r\n            if (!seriesScope || data.hasItemOption) {\r\n                var itemModel = (seriesScope && seriesScope.itemModel)\r\n                    ? seriesScope.itemModel : data.getItemModel(idx);\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n                blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n                focus = emphasisModel.get('focus');\r\n                blurScope = emphasisModel.get('blurScope');\r\n                symbolOffset = itemModel.getShallow('symbolOffset');\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n                hoverScale = emphasisModel.getShallow('scale');\r\n                cursorStyle = itemModel.getShallow('cursor');\r\n            }\r\n            var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n            symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\r\n            if (symbolOffset) {\r\n                symbolPath.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n                symbolPath.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n            }\r\n            cursorStyle && symbolPath.attr('cursor', cursorStyle);\r\n            var symbolStyle = data.getItemVisual(idx, 'style');\r\n            var visualColor = symbolStyle.fill;\r\n            if (symbolPath instanceof ZRImage) {\r\n                var pathStyle = symbolPath.style;\r\n                symbolPath.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, symbolStyle));\r\n            }\r\n            else {\r\n                if (symbolPath.__isEmptyBrush) {\r\n                    symbolPath.useStyle(extend({}, symbolStyle));\r\n                }\r\n                else {\r\n                    symbolPath.useStyle(symbolStyle);\r\n                }\r\n                symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\r\n                symbolPath.style.strokeNoScale = true;\r\n            }\r\n            var liftZ = data.getItemVisual(idx, 'liftZ');\r\n            var z2Origin = this._z2;\r\n            if (liftZ != null) {\r\n                if (z2Origin == null) {\r\n                    this._z2 = symbolPath.z2;\r\n                    symbolPath.z2 += liftZ;\r\n                }\r\n            }\r\n            else if (z2Origin != null) {\r\n                symbolPath.z2 = z2Origin;\r\n                this._z2 = null;\r\n            }\r\n            var useNameLabel = opts && opts.useNameLabel;\r\n            setLabelStyle(symbolPath, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: idx,\r\n                defaultText: getLabelDefaultText,\r\n                inheritColor: visualColor\r\n            });\r\n            function getLabelDefaultText(idx) {\r\n                return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\r\n            }\r\n            this._sizeX = symbolSize[0] / 2;\r\n            this._sizeY = symbolSize[1] / 2;\r\n            symbolPath.ensureState('emphasis').style = emphasisItemStyle;\r\n            symbolPath.ensureState('select').style = selectItemStyle;\r\n            symbolPath.ensureState('blur').style = blurItemStyle;\r\n            if (hoverScale) {\r\n                this.ensureState('emphasis');\r\n                this.setSymbolScale(1);\r\n            }\r\n            else {\r\n                this.states.emphasis = null;\r\n            }\r\n            enableHoverEmphasis(this, focus, blurScope);\r\n        };\r\n        Symbol.prototype.setSymbolScale = function (scale) {\r\n            var emphasisState = this.states.emphasis;\r\n            if (emphasisState) {\r\n                var hoverScale = Math.max(scale * 1.1, 3 / this._sizeY + scale);\r\n                emphasisState.scaleX = hoverScale;\r\n                emphasisState.scaleY = hoverScale;\r\n            }\r\n            this.scaleX = this.scaleY = scale;\r\n        };\r\n        Symbol.prototype.fadeOut = function (cb, opt) {\r\n            var symbolPath = this.childAt(0);\r\n            this.silent = symbolPath.silent = true;\r\n            !(opt && opt.keepLabel) && (symbolPath.removeTextContent());\r\n            removeElement(symbolPath, {\r\n                style: {\r\n                    opacity: 0\r\n                },\r\n                scaleX: 0,\r\n                scaleY: 0\r\n            }, this._seriesModel, getECData(this).dataIndex, cb);\r\n        };\r\n        Symbol.getSymbolSize = function (data, idx) {\r\n            var symbolSize = data.getItemVisual(idx, 'symbolSize');\r\n            return symbolSize instanceof Array\r\n                ? symbolSize.slice()\r\n                : [+symbolSize, +symbolSize];\r\n        };\r\n        return Symbol;\r\n    }(Group));\r\n    function driftSymbol(dx, dy) {\r\n        this.parent.drift(dx, dy);\r\n    }\n\n    function symbolNeedsDraw(data, point, idx, opt) {\r\n        return point && !isNaN(point[0]) && !isNaN(point[1])\r\n            && !(opt.isIgnore && opt.isIgnore(idx))\r\n            && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1]))\r\n            && data.getItemVisual(idx, 'symbol') !== 'none';\r\n    }\r\n    function normalizeUpdateOpt(opt) {\r\n        if (opt != null && !isObject(opt)) {\r\n            opt = { isIgnore: opt };\r\n        }\r\n        return opt || {};\r\n    }\r\n    function makeSeriesScope(data) {\r\n        var seriesModel = data.hostModel;\r\n        var emphasisModel = seriesModel.getModel('emphasis');\r\n        return {\r\n            emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\r\n            blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\r\n            selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\r\n            focus: emphasisModel.get('focus'),\r\n            blurScope: emphasisModel.get('blurScope'),\r\n            symbolRotate: seriesModel.get('symbolRotate'),\r\n            symbolOffset: seriesModel.get('symbolOffset'),\r\n            hoverScale: emphasisModel.get('scale'),\r\n            labelStatesModels: getLabelStatesModels(seriesModel),\r\n            cursorStyle: seriesModel.get('cursor')\r\n        };\r\n    }\r\n    var SymbolDraw = (function () {\r\n        function SymbolDraw(SymbolCtor) {\r\n            this.group = new Group();\r\n            this._SymbolCtor = SymbolCtor || Symbol;\r\n        }\r\n        SymbolDraw.prototype.updateData = function (data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            var group = this.group;\r\n            var seriesModel = data.hostModel;\r\n            var oldData = this._data;\r\n            var SymbolCtor = this._SymbolCtor;\r\n            var seriesScope = makeSeriesScope(data);\r\n            if (!oldData) {\r\n                group.removeAll();\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                var point = data.getItemLayout(newIdx);\r\n                if (symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\r\n                    symbolEl.setPosition(point);\r\n                    data.setItemGraphicEl(newIdx, symbolEl);\r\n                    group.add(symbolEl);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                var point = data.getItemLayout(newIdx);\r\n                if (!symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    group.remove(symbolEl);\r\n                    return;\r\n                }\r\n                if (!symbolEl) {\r\n                    symbolEl = new SymbolCtor(data, newIdx);\r\n                    symbolEl.setPosition(point);\r\n                }\r\n                else {\r\n                    symbolEl.updateData(data, newIdx, seriesScope);\r\n                    updateProps(symbolEl, {\r\n                        x: point[0],\r\n                        y: point[1]\r\n                    }, seriesModel);\r\n                }\r\n                group.add(symbolEl);\r\n                data.setItemGraphicEl(newIdx, symbolEl);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && el.fadeOut(function () {\r\n                    group.remove(el);\r\n                });\r\n            })\r\n                .execute();\r\n            this._data = data;\r\n        };\r\n        SymbolDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        SymbolDraw.prototype.updateLayout = function () {\r\n            var data = this._data;\r\n            if (data) {\r\n                data.eachItemGraphicEl(function (el, idx) {\r\n                    var point = data.getItemLayout(idx);\r\n                    el.setPosition(point);\r\n                    el.markRedraw();\r\n                });\r\n            }\r\n        };\r\n        SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this._seriesScope = makeSeriesScope(data);\r\n            this._data = null;\r\n            this.group.removeAll();\r\n        };\r\n        SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var point = data.getItemLayout(idx);\r\n                if (symbolNeedsDraw(data, point, idx, opt)) {\r\n                    var el = new this._SymbolCtor(data, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    el.setPosition(point);\r\n                    this.group.add(el);\r\n                    data.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        SymbolDraw.prototype.remove = function (enableAnimation) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (data && enableAnimation) {\r\n                data.eachItemGraphicEl(function (el) {\r\n                    el.fadeOut(function () {\r\n                        group.remove(el);\r\n                    });\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n        };\r\n        return SymbolDraw;\r\n    }());\n\n    function prepareDataCoordInfo(coordSys, data, valueOrigin) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n        var valueStart = getValueStart(valueAxis, valueOrigin);\r\n        var baseAxisDim = baseAxis.dim;\r\n        var valueAxisDim = valueAxis.dim;\r\n        var valueDim = data.mapDimension(valueAxisDim);\r\n        var baseDim = data.mapDimension(baseAxisDim);\r\n        var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n        var dims = map(coordSys.dimensions, function (coordDim) {\r\n            return data.mapDimension(coordDim);\r\n        });\r\n        var stacked = false;\r\n        var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n        if (isDimensionStacked(data, dims[0])) {\r\n            stacked = true;\r\n            dims[0] = stackResultDim;\r\n        }\r\n        if (isDimensionStacked(data, dims[1])) {\r\n            stacked = true;\r\n            dims[1] = stackResultDim;\r\n        }\r\n        return {\r\n            dataDimsForPoint: dims,\r\n            valueStart: valueStart,\r\n            valueAxisDim: valueAxisDim,\r\n            baseAxisDim: baseAxisDim,\r\n            stacked: !!stacked,\r\n            valueDim: valueDim,\r\n            baseDim: baseDim,\r\n            baseDataOffset: baseDataOffset,\r\n            stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\r\n        };\r\n    }\r\n    function getValueStart(valueAxis, valueOrigin) {\r\n        var valueStart = 0;\r\n        var extent = valueAxis.scale.getExtent();\r\n        if (valueOrigin === 'start') {\r\n            valueStart = extent[0];\r\n        }\r\n        else if (valueOrigin === 'end') {\r\n            valueStart = extent[1];\r\n        }\r\n        else {\r\n            if (extent[0] > 0) {\r\n                valueStart = extent[0];\r\n            }\r\n            else if (extent[1] < 0) {\r\n                valueStart = extent[1];\r\n            }\r\n        }\r\n        return valueStart;\r\n    }\r\n    function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\r\n        var value = NaN;\r\n        if (dataCoordInfo.stacked) {\r\n            value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\r\n        }\r\n        if (isNaN(value)) {\r\n            value = dataCoordInfo.valueStart;\r\n        }\r\n        var baseDataOffset = dataCoordInfo.baseDataOffset;\r\n        var stackedData = [];\r\n        stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\r\n        stackedData[1 - baseDataOffset] = value;\r\n        return coordSys.dataToPoint(stackedData);\r\n    }\n\n    function diffData(oldData, newData) {\r\n        var diffResult = [];\r\n        newData.diff(oldData)\r\n            .add(function (idx) {\r\n            diffResult.push({ cmd: '+', idx: idx });\r\n        })\r\n            .update(function (newIdx, oldIdx) {\r\n            diffResult.push({ cmd: '=', idx: oldIdx, idx1: newIdx });\r\n        })\r\n            .remove(function (idx) {\r\n            diffResult.push({ cmd: '-', idx: idx });\r\n        })\r\n            .execute();\r\n        return diffResult;\r\n    }\r\n    function lineAnimationDiff (oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\r\n        var diff = diffData(oldData, newData);\r\n        var currPoints = [];\r\n        var nextPoints = [];\r\n        var currStackedPoints = [];\r\n        var nextStackedPoints = [];\r\n        var status = [];\r\n        var sortedIndices = [];\r\n        var rawIndices = [];\r\n        var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\r\n        var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\r\n        for (var i = 0; i < diff.length; i++) {\r\n            var diffItem = diff[i];\r\n            var pointAdded = true;\r\n            switch (diffItem.cmd) {\r\n                case '=':\r\n                    var currentPt = oldData.getItemLayout(diffItem.idx);\r\n                    var nextPt = newData.getItemLayout(diffItem.idx1);\r\n                    if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\r\n                        currentPt = nextPt.slice();\r\n                    }\r\n                    currPoints.push(currentPt);\r\n                    nextPoints.push(nextPt);\r\n                    currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\r\n                    nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\r\n                    rawIndices.push(newData.getRawIndex(diffItem.idx1));\r\n                    break;\r\n                case '+':\r\n                    var idxAdd = diffItem.idx;\r\n                    currPoints.push(oldCoordSys.dataToPoint([\r\n                        newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idxAdd),\r\n                        newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idxAdd)\r\n                    ]));\r\n                    nextPoints.push(newData.getItemLayout(idxAdd).slice());\r\n                    currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idxAdd));\r\n                    nextStackedPoints.push(newStackedOnPoints[idxAdd]);\r\n                    rawIndices.push(newData.getRawIndex(idxAdd));\r\n                    break;\r\n                case '-':\r\n                    var idxMinus = diffItem.idx;\r\n                    var rawIndex = oldData.getRawIndex(idxMinus);\r\n                    if (rawIndex !== idxMinus) {\r\n                        currPoints.push(oldData.getItemLayout(idxMinus));\r\n                        nextPoints.push(newCoordSys.dataToPoint([\r\n                            oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idxMinus),\r\n                            oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idxMinus)\r\n                        ]));\r\n                        currStackedPoints.push(oldStackedOnPoints[idxMinus]);\r\n                        nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idxMinus));\r\n                        rawIndices.push(rawIndex);\r\n                    }\r\n                    else {\r\n                        pointAdded = false;\r\n                    }\r\n            }\r\n            if (pointAdded) {\r\n                status.push(diffItem);\r\n                sortedIndices.push(sortedIndices.length);\r\n            }\r\n        }\r\n        sortedIndices.sort(function (a, b) {\r\n            return rawIndices[a] - rawIndices[b];\r\n        });\r\n        var sortedCurrPoints = [];\r\n        var sortedNextPoints = [];\r\n        var sortedCurrStackedPoints = [];\r\n        var sortedNextStackedPoints = [];\r\n        var sortedStatus = [];\r\n        for (var i = 0; i < sortedIndices.length; i++) {\r\n            var idx = sortedIndices[i];\r\n            sortedCurrPoints[i] = currPoints[idx];\r\n            sortedNextPoints[i] = nextPoints[idx];\r\n            sortedCurrStackedPoints[i] = currStackedPoints[idx];\r\n            sortedNextStackedPoints[i] = nextStackedPoints[idx];\r\n            sortedStatus[i] = status[idx];\r\n        }\r\n        return {\r\n            current: sortedCurrPoints,\r\n            next: sortedNextPoints,\r\n            stackedOnCurrent: sortedCurrStackedPoints,\r\n            stackedOnNext: sortedNextStackedPoints,\r\n            status: sortedStatus\r\n        };\r\n    }\n\n    var vec2Min = min;\r\n    var vec2Max = max;\r\n    var scaleAndAdd$1 = scaleAndAdd;\r\n    var v2Copy = copy;\r\n    var v = [];\r\n    var cp0 = [];\r\n    var cp1 = [];\r\n    function isPointNull(p) {\r\n        return isNaN(p[0]) || isNaN(p[1]);\r\n    }\r\n    function drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\r\n        return ((smoothMonotone === 'none' || !smoothMonotone) ? drawNonMono : drawMono)(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls);\r\n    }\r\n    function drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\r\n        var prevIdx = 0;\r\n        var idx = start;\r\n        var k = 0;\r\n        for (; k < segLen; k++) {\r\n            var p = points[idx];\r\n            if (idx >= allLen || idx < 0) {\r\n                break;\r\n            }\r\n            if (isPointNull(p)) {\r\n                if (connectNulls) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            if (idx === start) {\r\n                ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\r\n            }\r\n            else {\r\n                if (smooth > 0) {\r\n                    var prevP = points[prevIdx];\r\n                    var dim = smoothMonotone === 'y' ? 1 : 0;\r\n                    var ctrlLen = (p[dim] - prevP[dim]) * smooth;\r\n                    v2Copy(cp0, prevP);\r\n                    cp0[dim] = prevP[dim] + ctrlLen;\r\n                    v2Copy(cp1, p);\r\n                    cp1[dim] = p[dim] - ctrlLen;\r\n                    ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\r\n                }\r\n                else {\r\n                    ctx.lineTo(p[0], p[1]);\r\n                }\r\n            }\r\n            prevIdx = idx;\r\n            idx += dir;\r\n        }\r\n        return k;\r\n    }\r\n    function drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\r\n        var prevIdx = 0;\r\n        var idx = start;\r\n        var k = 0;\r\n        for (; k < segLen; k++) {\r\n            var p = points[idx];\r\n            if (idx >= allLen || idx < 0) {\r\n                break;\r\n            }\r\n            if (isPointNull(p)) {\r\n                if (connectNulls) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            if (idx === start) {\r\n                ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\r\n                v2Copy(cp0, p);\r\n            }\r\n            else {\r\n                if (smooth > 0) {\r\n                    var nextIdx = idx + dir;\r\n                    var nextP = points[nextIdx];\r\n                    if (connectNulls) {\r\n                        while (nextP && isPointNull(points[nextIdx])) {\r\n                            nextIdx += dir;\r\n                            nextP = points[nextIdx];\r\n                        }\r\n                    }\r\n                    var ratioNextSeg = 0.5;\r\n                    var prevP = points[prevIdx];\r\n                    nextP = points[nextIdx];\r\n                    if (!nextP || isPointNull(nextP)) {\r\n                        v2Copy(cp1, p);\r\n                    }\r\n                    else {\r\n                        if (isPointNull(nextP) && !connectNulls) {\r\n                            nextP = p;\r\n                        }\r\n                        sub(v, nextP, prevP);\r\n                        var lenPrevSeg = void 0;\r\n                        var lenNextSeg = void 0;\r\n                        if (smoothMonotone === 'x' || smoothMonotone === 'y') {\r\n                            var dim = smoothMonotone === 'x' ? 0 : 1;\r\n                            lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\r\n                            lenNextSeg = Math.abs(p[dim] - nextP[dim]);\r\n                        }\r\n                        else {\r\n                            lenPrevSeg = dist(p, prevP);\r\n                            lenNextSeg = dist(p, nextP);\r\n                        }\r\n                        ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\r\n                        scaleAndAdd$1(cp1, p, v, -smooth * (1 - ratioNextSeg));\r\n                    }\r\n                    vec2Min(cp0, cp0, smoothMax);\r\n                    vec2Max(cp0, cp0, smoothMin);\r\n                    vec2Min(cp1, cp1, smoothMax);\r\n                    vec2Max(cp1, cp1, smoothMin);\r\n                    ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\r\n                    scaleAndAdd$1(cp0, p, v, smooth * ratioNextSeg);\r\n                }\r\n                else {\r\n                    ctx.lineTo(p[0], p[1]);\r\n                }\r\n            }\r\n            prevIdx = idx;\r\n            idx += dir;\r\n        }\r\n        return k;\r\n    }\r\n    function getBoundingBox(points, smoothConstraint) {\r\n        var ptMin = [Infinity, Infinity];\r\n        var ptMax = [-Infinity, -Infinity];\r\n        if (smoothConstraint) {\r\n            for (var i = 0; i < points.length; i++) {\r\n                var pt = points[i];\r\n                if (pt[0] < ptMin[0]) {\r\n                    ptMin[0] = pt[0];\r\n                }\r\n                if (pt[1] < ptMin[1]) {\r\n                    ptMin[1] = pt[1];\r\n                }\r\n                if (pt[0] > ptMax[0]) {\r\n                    ptMax[0] = pt[0];\r\n                }\r\n                if (pt[1] > ptMax[1]) {\r\n                    ptMax[1] = pt[1];\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            min: smoothConstraint ? ptMin : ptMax,\r\n            max: smoothConstraint ? ptMax : ptMin\r\n        };\r\n    }\r\n    var ECPolylineShape = (function () {\r\n        function ECPolylineShape() {\r\n            this.smooth = 0;\r\n            this.smoothConstraint = true;\r\n            this.connectNulls = false;\r\n        }\r\n        return ECPolylineShape;\r\n    }());\r\n    var ECPolyline = (function (_super) {\r\n        __extends(ECPolyline, _super);\r\n        function ECPolyline(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polyline';\r\n            return _this;\r\n        }\r\n        ECPolyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECPolyline.prototype.getDefaultShape = function () {\r\n            return new ECPolylineShape();\r\n        };\r\n        ECPolyline.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var i = 0;\r\n            var len = points.length;\r\n            var result = getBoundingBox(points, shape.smoothConstraint);\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\r\n            }\r\n        };\r\n        return ECPolyline;\r\n    }(Path));\r\n    var ECPolygonShape = (function (_super) {\r\n        __extends(ECPolygonShape, _super);\r\n        function ECPolygonShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return ECPolygonShape;\r\n    }(ECPolylineShape));\r\n    var ECPolygon = (function (_super) {\r\n        __extends(ECPolygon, _super);\r\n        function ECPolygon(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polygon';\r\n            return _this;\r\n        }\r\n        ECPolygon.prototype.getDefaultShape = function () {\r\n            return new ECPolygonShape();\r\n        };\r\n        ECPolygon.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var stackedOnPoints = shape.stackedOnPoints;\r\n            var i = 0;\r\n            var len = points.length;\r\n            var smoothMonotone = shape.smoothMonotone;\r\n            var bbox = getBoundingBox(points, shape.smoothConstraint);\r\n            var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\r\n                drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\r\n                i += k + 1;\r\n                ctx.closePath();\r\n            }\r\n        };\r\n        return ECPolygon;\r\n    }(Path));\n\n    function createGridClipPath(cartesian, hasAnimation, seriesModel) {\r\n        var rect = cartesian.getArea();\r\n        var isHorizontal = cartesian.getBaseAxis().isHorizontal();\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2;\r\n        x -= lineWidth / 2;\r\n        y -= lineWidth / 2;\r\n        width += lineWidth;\r\n        height += lineWidth;\r\n        x = Math.floor(x);\r\n        width = Math.round(width);\r\n        var clipPath = new Rect({\r\n            shape: {\r\n                x: x,\r\n                y: y,\r\n                width: width,\r\n                height: height\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    width: width,\r\n                    height: height\r\n                }\r\n            }, seriesModel);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createPolarClipPath(polar, hasAnimation, seriesModel) {\r\n        var sectorArea = polar.getArea();\r\n        var clipPath = new Sector({\r\n            shape: {\r\n                cx: round$1(polar.cx, 1),\r\n                cy: round$1(polar.cy, 1),\r\n                r0: round$1(sectorArea.r0, 1),\r\n                r: round$1(sectorArea.r, 1),\r\n                startAngle: sectorArea.startAngle,\r\n                endAngle: sectorArea.endAngle,\r\n                clockwise: sectorArea.clockwise\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            clipPath.shape.endAngle = sectorArea.startAngle;\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    endAngle: sectorArea.endAngle\r\n                }\r\n            }, seriesModel);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createClipPath(coordSys, hasAnimation, seriesModel) {\r\n        if (!coordSys) {\r\n            return null;\r\n        }\r\n        else if (coordSys.type === 'polar') {\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n        else if (coordSys.type === 'cartesian2d') {\r\n            return createGridClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n        return null;\r\n    }\n\n    function isPointsSame(points1, points2) {\r\n        if (points1.length !== points2.length) {\r\n            return;\r\n        }\r\n        for (var i = 0; i < points1.length; i++) {\r\n            var p1 = points1[i];\r\n            var p2 = points2[i];\r\n            if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\r\n                return;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function getBoundingDiff(points1, points2) {\r\n        var min1 = [];\r\n        var max1 = [];\r\n        var min2 = [];\r\n        var max2 = [];\r\n        fromPoints(points1, min1, max1);\r\n        fromPoints(points2, min2, max2);\r\n        return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\r\n    }\r\n    function getSmooth(smooth) {\r\n        return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n    }\r\n    function getStackedOnPoints(coordSys, data, dataCoordInfo) {\r\n        if (!dataCoordInfo.valueDim) {\r\n            return [];\r\n        }\r\n        var points = [];\r\n        for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n            points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\r\n        }\r\n        return points;\r\n    }\r\n    function turnPointsIntoStep(points, coordSys, stepTurnAt) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\r\n        var stepPoints = [];\r\n        var i = 0;\r\n        for (; i < points.length - 1; i++) {\r\n            var nextPt = points[i + 1];\r\n            var pt = points[i];\r\n            stepPoints.push(pt);\r\n            var stepPt = [];\r\n            switch (stepTurnAt) {\r\n                case 'end':\r\n                    stepPt[baseIndex] = nextPt[baseIndex];\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPoints.push(stepPt);\r\n                    break;\r\n                case 'middle':\r\n                    var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\r\n                    var stepPt2 = [];\r\n                    stepPt[baseIndex] = stepPt2[baseIndex] = middle;\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt);\r\n                    stepPoints.push(stepPt2);\r\n                    break;\r\n                default:\r\n                    stepPt[baseIndex] = pt[baseIndex];\r\n                    stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt);\r\n            }\r\n        }\r\n        points[i] && stepPoints.push(points[i]);\r\n        return stepPoints;\r\n    }\r\n    function getVisualGradient(data, coordSys) {\r\n        var visualMetaList = data.getVisual('visualMeta');\r\n        if (!visualMetaList || !visualMetaList.length || !data.count()) {\r\n            return;\r\n        }\r\n        if (coordSys.type !== 'cartesian2d') {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style is only supported on cartesian2d.');\r\n            }\r\n            return;\r\n        }\r\n        var coordDim;\r\n        var visualMeta;\r\n        for (var i = visualMetaList.length - 1; i >= 0; i--) {\r\n            var dimIndex = visualMetaList[i].dimension;\r\n            var dimName = data.dimensions[dimIndex];\r\n            var dimInfo = data.getDimensionInfo(dimName);\r\n            coordDim = (dimInfo && dimInfo.coordDim);\r\n            if (coordDim === 'x' || coordDim === 'y') {\r\n                visualMeta = visualMetaList[i];\r\n                break;\r\n            }\r\n        }\r\n        if (!visualMeta) {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style only support x or y dimension.');\r\n            }\r\n            return;\r\n        }\r\n        var axis = coordSys.getAxis(coordDim);\r\n        var colorStops = map(visualMeta.stops, function (stop) {\r\n            return {\r\n                offset: 0,\r\n                coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\r\n                color: stop.color\r\n            };\r\n        });\r\n        var stopLen = colorStops.length;\r\n        var outerColors = visualMeta.outerColors.slice();\r\n        if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\r\n            colorStops.reverse();\r\n            outerColors.reverse();\r\n        }\r\n        var tinyExtent = 10;\r\n        var minCoord = colorStops[0].coord - tinyExtent;\r\n        var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\r\n        var coordSpan = maxCoord - minCoord;\r\n        if (coordSpan < 1e-3) {\r\n            return 'transparent';\r\n        }\r\n        each(colorStops, function (stop) {\r\n            stop.offset = (stop.coord - minCoord) / coordSpan;\r\n        });\r\n        colorStops.push({\r\n            offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\r\n            color: outerColors[1] || 'transparent'\r\n        });\r\n        colorStops.unshift({\r\n            offset: stopLen ? colorStops[0].offset : 0.5,\r\n            color: outerColors[0] || 'transparent'\r\n        });\r\n        var gradient = new LinearGradient(0, 0, 0, 0, colorStops, true);\r\n        gradient[coordDim] = minCoord;\r\n        gradient[coordDim + '2'] = maxCoord;\r\n        return gradient;\r\n    }\r\n    function getIsIgnoreFunc(seriesModel, data, coordSys) {\r\n        var showAllSymbol = seriesModel.get('showAllSymbol');\r\n        var isAuto = showAllSymbol === 'auto';\r\n        if (showAllSymbol && !isAuto) {\r\n            return;\r\n        }\r\n        var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n        if (!categoryAxis) {\r\n            return;\r\n        }\r\n        if (isAuto\r\n            && canShowAllSymbolForCategory(categoryAxis, data)) {\r\n            return;\r\n        }\r\n        var categoryDataDim = data.mapDimension(categoryAxis.dim);\r\n        var labelMap = {};\r\n        each(categoryAxis.getViewLabels(), function (labelItem) {\r\n            labelMap[labelItem.tickValue] = 1;\r\n        });\r\n        return function (dataIndex) {\r\n            return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\r\n        };\r\n    }\r\n    function canShowAllSymbolForCategory(categoryAxis, data) {\r\n        var axisExtent = categoryAxis.getExtent();\r\n        var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\r\n        isNaN(availSize) && (availSize = 0);\r\n        var dataLen = data.count();\r\n        var step = Math.max(1, Math.round(dataLen / 5));\r\n        for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\r\n            if (Symbol.getSymbolSize(data, dataIndex)[categoryAxis.isHorizontal() ? 1 : 0]\r\n                * 1.5 > availSize) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function createLineClipPath(coordSys, hasAnimation, seriesModel) {\r\n        if (coordSys.type === 'cartesian2d') {\r\n            var isHorizontal = coordSys.getBaseAxis().isHorizontal();\r\n            var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel);\r\n            if (!seriesModel.get('clip', true)) {\r\n                var rectShape = clipPath.shape;\r\n                var expandSize = Math.max(rectShape.width, rectShape.height);\r\n                if (isHorizontal) {\r\n                    rectShape.y -= expandSize;\r\n                    rectShape.height += expandSize * 2;\r\n                }\r\n                else {\r\n                    rectShape.x -= expandSize;\r\n                    rectShape.width += expandSize * 2;\r\n                }\r\n            }\r\n            return clipPath;\r\n        }\r\n        else {\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n    }\r\n    var LineView = (function (_super) {\r\n        __extends(LineView, _super);\r\n        function LineView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        LineView.prototype.init = function () {\r\n            var lineGroup = new Group();\r\n            var symbolDraw = new SymbolDraw();\r\n            this.group.add(symbolDraw.group);\r\n            this._symbolDraw = symbolDraw;\r\n            this._lineGroup = lineGroup;\r\n        };\r\n        LineView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var lineStyleModel = seriesModel.getModel('lineStyle');\r\n            var areaStyleModel = seriesModel.getModel('areaStyle');\r\n            var points = data.mapArray(data.getItemLayout);\r\n            var isCoordSysPolar = coordSys.type === 'polar';\r\n            var prevCoordSys = this._coordSys;\r\n            var symbolDraw = this._symbolDraw;\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var lineGroup = this._lineGroup;\r\n            var hasAnimation = seriesModel.get('animation');\r\n            var isAreaChart = !areaStyleModel.isEmpty();\r\n            var valueOrigin = areaStyleModel.get('origin');\r\n            var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\r\n            var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\r\n            var showSymbol = seriesModel.get('showSymbol');\r\n            var isIgnoreFunc = showSymbol && !isCoordSysPolar\r\n                && getIsIgnoreFunc(seriesModel, data, coordSys);\r\n            var oldData = this._data;\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            if (!showSymbol) {\r\n                symbolDraw.remove();\r\n            }\r\n            group.add(lineGroup);\r\n            var step = !isCoordSysPolar ? seriesModel.get('step') : false;\r\n            var clipShapeForSymbol;\r\n            if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\r\n                clipShapeForSymbol = coordSys.getArea();\r\n                if (clipShapeForSymbol.width != null) {\r\n                    clipShapeForSymbol.x -= 0.1;\r\n                    clipShapeForSymbol.y -= 0.1;\r\n                    clipShapeForSymbol.width += 0.2;\r\n                    clipShapeForSymbol.height += 0.2;\r\n                }\r\n                else if (clipShapeForSymbol.r0) {\r\n                    clipShapeForSymbol.r0 -= 0.5;\r\n                    clipShapeForSymbol.r += 0.5;\r\n                }\r\n            }\r\n            this._clipShapeForSymbol = clipShapeForSymbol;\r\n            if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol\r\n                });\r\n                if (step) {\r\n                    points = turnPointsIntoStep(points, coordSys, step);\r\n                    stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                }\r\n                polyline = this._newPolyline(points);\r\n                if (isAreaChart) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\r\n            }\r\n            else {\r\n                if (isAreaChart && !polygon) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                else if (polygon && !isAreaChart) {\r\n                    lineGroup.remove(polygon);\r\n                    polygon = this._polygon = null;\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel));\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol\r\n                });\r\n                data.eachItemGraphicEl(function (el) {\r\n                    el && el.stopAnimation(null, true);\r\n                });\r\n                if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)\r\n                    || !isPointsSame(this._points, points)) {\r\n                    if (hasAnimation) {\r\n                        this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\r\n                    }\r\n                    else {\r\n                        if (step) {\r\n                            points = turnPointsIntoStep(points, coordSys, step);\r\n                            stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                        }\r\n                        polyline.setShape({\r\n                            points: points\r\n                        });\r\n                        polygon && polygon.setShape({\r\n                            points: points,\r\n                            stackedOnPoints: stackedOnPoints\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            var visualColor = getVisualGradient(data, coordSys)\r\n                || data.getVisual('style')[data.getVisual('drawType')];\r\n            var focus = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            polyline.useStyle(defaults(lineStyleModel.getLineStyle(), {\r\n                fill: 'none',\r\n                stroke: visualColor,\r\n                lineJoin: 'bevel'\r\n            }));\r\n            setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\r\n            var shouldBolderOnEmphasis = seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder';\r\n            if (shouldBolderOnEmphasis) {\r\n                var emphasisLineStyle = polyline.getState('emphasis').style;\r\n                emphasisLineStyle.lineWidth = polyline.style.lineWidth + 1;\r\n            }\r\n            getECData(polyline).seriesIndex = seriesModel.seriesIndex;\r\n            enableHoverEmphasis(polyline, focus, blurScope);\r\n            var smooth = getSmooth(seriesModel.get('smooth'));\r\n            polyline.setShape({\r\n                smooth: smooth,\r\n                smoothMonotone: seriesModel.get('smoothMonotone'),\r\n                connectNulls: seriesModel.get('connectNulls')\r\n            });\r\n            if (polygon) {\r\n                var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\r\n                var stackedOnSmooth = 0;\r\n                polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n                    fill: visualColor,\r\n                    opacity: 0.7,\r\n                    lineJoin: 'bevel'\r\n                }));\r\n                if (stackedOnSeries) {\r\n                    stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\r\n                }\r\n                polygon.setShape({\r\n                    smooth: smooth,\r\n                    stackedOnSmooth: stackedOnSmooth,\r\n                    smoothMonotone: seriesModel.get('smoothMonotone'),\r\n                    connectNulls: seriesModel.get('connectNulls')\r\n                });\r\n                setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\r\n                getECData(polygon).seriesIndex = seriesModel.seriesIndex;\r\n                enableHoverEmphasis(polygon, focus, blurScope);\r\n            }\r\n            var changePolyState = function (toState) {\r\n                _this._changePolyState(toState);\r\n            };\r\n            data.eachItemGraphicEl(function (el) {\r\n                el && (el.onHoverStateChange = changePolyState);\r\n            });\r\n            this._data = data;\r\n            this._coordSys = coordSys;\r\n            this._stackedOnPoints = stackedOnPoints;\r\n            this._points = points;\r\n            this._step = step;\r\n            this._valueOrigin = valueOrigin;\r\n        };\r\n        LineView.prototype.dispose = function () { };\r\n        LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('emphasis');\r\n            if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (!symbol) {\r\n                    var pt = data.getItemLayout(dataIndex);\r\n                    if (!pt) {\r\n                        return;\r\n                    }\r\n                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\r\n                        return;\r\n                    }\r\n                    symbol = new Symbol(data, dataIndex);\r\n                    symbol.setPosition(pt);\r\n                    symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\r\n                    symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\r\n                    symbol.__temp = true;\r\n                    data.setItemGraphicEl(dataIndex, symbol);\r\n                    symbol.stopSymbolAnimation(true);\r\n                    this.group.add(symbol);\r\n                }\r\n                symbol.highlight();\r\n            }\r\n            else {\r\n                ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('normal');\r\n            if (dataIndex != null && dataIndex >= 0) {\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (symbol) {\r\n                    if (symbol.__temp) {\r\n                        data.setItemGraphicEl(dataIndex, null);\r\n                        this.group.remove(symbol);\r\n                    }\r\n                    else {\r\n                        symbol.downplay();\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype._changePolyState = function (toState) {\r\n            var polygon = this._polygon;\r\n            setStatesFlag(this._polyline, toState);\r\n            polygon && setStatesFlag(polygon, toState);\r\n        };\r\n        LineView.prototype._newPolyline = function (points) {\r\n            var polyline = this._polyline;\r\n            if (polyline) {\r\n                this._lineGroup.remove(polyline);\r\n            }\r\n            polyline = new ECPolyline({\r\n                shape: {\r\n                    points: points\r\n                },\r\n                segmentIgnoreThreshold: 2,\r\n                z2: 10\r\n            });\r\n            this._lineGroup.add(polyline);\r\n            this._polyline = polyline;\r\n            return polyline;\r\n        };\r\n        LineView.prototype._newPolygon = function (points, stackedOnPoints) {\r\n            var polygon = this._polygon;\r\n            if (polygon) {\r\n                this._lineGroup.remove(polygon);\r\n            }\r\n            polygon = new ECPolygon({\r\n                shape: {\r\n                    points: points,\r\n                    stackedOnPoints: stackedOnPoints\r\n                },\r\n                segmentIgnoreThreshold: 2\r\n            });\r\n            this._lineGroup.add(polygon);\r\n            this._polygon = polygon;\r\n            return polygon;\r\n        };\r\n        LineView.prototype._updateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var seriesModel = data.hostModel;\r\n            var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\r\n            var current = diff.current;\r\n            var stackedOnCurrent = diff.stackedOnCurrent;\r\n            var next = diff.next;\r\n            var stackedOnNext = diff.stackedOnNext;\r\n            if (step) {\r\n                current = turnPointsIntoStep(diff.current, coordSys, step);\r\n                stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\r\n                next = turnPointsIntoStep(diff.next, coordSys, step);\r\n                stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\r\n            }\r\n            if (getBoundingDiff(current, next) > 3000\r\n                || (polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000)) {\r\n                polyline.setShape({\r\n                    points: next\r\n                });\r\n                if (polygon) {\r\n                    polygon.setShape({\r\n                        points: next,\r\n                        stackedOnPoints: stackedOnNext\r\n                    });\r\n                }\r\n                return;\r\n            }\r\n            polyline.shape.__points = diff.current;\r\n            polyline.shape.points = current;\r\n            polyline.stopAnimation();\r\n            updateProps(polyline, {\r\n                shape: {\r\n                    points: next\r\n                }\r\n            }, seriesModel);\r\n            if (polygon) {\r\n                polygon.setShape({\r\n                    points: current,\r\n                    stackedOnPoints: stackedOnCurrent\r\n                });\r\n                polygon.stopAnimation();\r\n                updateProps(polygon, {\r\n                    shape: {\r\n                        stackedOnPoints: stackedOnNext\r\n                    }\r\n                }, seriesModel);\r\n                if (polyline.shape.points !== polygon.shape.points) {\r\n                    polygon.shape.points = polyline.shape.points;\r\n                }\r\n            }\r\n            var updatedDataInfo = [];\r\n            var diffStatus = diff.status;\r\n            for (var i = 0; i < diffStatus.length; i++) {\r\n                var cmd = diffStatus[i].cmd;\r\n                if (cmd === '=') {\r\n                    var el = data.getItemGraphicEl(diffStatus[i].idx1);\r\n                    if (el) {\r\n                        updatedDataInfo.push({\r\n                            el: el,\r\n                            ptIdx: i\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            if (polyline.animators && polyline.animators.length) {\r\n                polyline.animators[0].during(function () {\r\n                    for (var i = 0; i < updatedDataInfo.length; i++) {\r\n                        var el = updatedDataInfo[i].el;\r\n                        el.setPosition(polyline.shape.__points[updatedDataInfo[i].ptIdx]);\r\n                        el.markRedraw();\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LineView.prototype.remove = function (ecModel) {\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            this._lineGroup.removeAll();\r\n            this._symbolDraw.remove(true);\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            this._polyline =\r\n                this._polygon =\r\n                    this._coordSys =\r\n                        this._points =\r\n                            this._stackedOnPoints =\r\n                                this._data = null;\r\n        };\r\n        LineView.type = 'line';\r\n        return LineView;\r\n    }(ChartView));\r\n    ChartView.registerClass(LineView);\n\n    function layoutPoints (seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            plan: createRenderPlanner(),\r\n            reset: function (seriesModel) {\r\n                var data = seriesModel.getData();\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var pipelineContext = seriesModel.pipelineContext;\r\n                var isLargeRender = pipelineContext.large;\r\n                if (!coordSys) {\r\n                    return;\r\n                }\r\n                var dims = map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }).slice(0, 2);\r\n                var dimLen = dims.length;\r\n                var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n                if (isDimensionStacked(data, dims[0])) {\r\n                    dims[0] = stackResultDim;\r\n                }\r\n                if (isDimensionStacked(data, dims[1])) {\r\n                    dims[1] = stackResultDim;\r\n                }\r\n                return dimLen && {\r\n                    progress: function (params, data) {\r\n                        var segCount = params.end - params.start;\r\n                        var points = isLargeRender && new Float32Array(segCount * dimLen);\r\n                        var tmpIn = [];\r\n                        var tmpOut = [];\r\n                        for (var i = params.start, offset = 0; i < params.end; i++) {\r\n                            var point = void 0;\r\n                            if (dimLen === 1) {\r\n                                var x = data.get(dims[0], i);\r\n                                point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\r\n                            }\r\n                            else {\r\n                                var x = tmpIn[0] = data.get(dims[0], i);\r\n                                var y = tmpIn[1] = data.get(dims[1], i);\r\n                                point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                            }\r\n                            if (isLargeRender) {\r\n                                points[offset++] = point ? point[0] : NaN;\r\n                                points[offset++] = point ? point[1] : NaN;\r\n                            }\r\n                            else {\r\n                                data.setItemLayout(i, (point && point.slice()) || [NaN, NaN]);\r\n                            }\r\n                        }\r\n                        isLargeRender && data.setLayout('symbolPoints', points);\r\n                    }\r\n                };\r\n            }\r\n        };\r\n    }\n\n    var samplers = {\r\n        average: function (frame) {\r\n            var sum = 0;\r\n            var count = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                if (!isNaN(frame[i])) {\r\n                    sum += frame[i];\r\n                    count++;\r\n                }\r\n            }\r\n            return count === 0 ? NaN : sum / count;\r\n        },\r\n        sum: function (frame) {\r\n            var sum = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                sum += frame[i] || 0;\r\n            }\r\n            return sum;\r\n        },\r\n        max: function (frame) {\r\n            var max = -Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] > max && (max = frame[i]);\r\n            }\r\n            return isFinite(max) ? max : NaN;\r\n        },\r\n        min: function (frame) {\r\n            var min = Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] < min && (min = frame[i]);\r\n            }\r\n            return isFinite(min) ? min : NaN;\r\n        },\r\n        nearest: function (frame) {\r\n            return frame[0];\r\n        }\r\n    };\r\n    var indexSampler = function (frame) {\r\n        return Math.round(frame.length / 2);\r\n    };\r\n    function dataSample (seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel, api) {\r\n                var data = seriesModel.getData();\r\n                var sampling = seriesModel.get('sampling');\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                if (coordSys.type === 'cartesian2d' && sampling) {\r\n                    var baseAxis = coordSys.getBaseAxis();\r\n                    var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                    var extent = baseAxis.getExtent();\r\n                    var size = extent[1] - extent[0];\r\n                    var rate = Math.round(data.count() / size);\r\n                    if (rate > 1) {\r\n                        var sampler = void 0;\r\n                        if (typeof sampling === 'string') {\r\n                            sampler = samplers[sampling];\r\n                        }\r\n                        else if (typeof sampling === 'function') {\r\n                            sampler = sampling;\r\n                        }\r\n                        if (sampler) {\r\n                            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\n\n    var defaultOption = {\r\n        show: true,\r\n        zlevel: 0,\r\n        z: 0,\r\n        inverse: false,\r\n        name: '',\r\n        nameLocation: 'end',\r\n        nameRotate: null,\r\n        nameTruncate: {\r\n            maxWidth: null,\r\n            ellipsis: '...',\r\n            placeholder: '.'\r\n        },\r\n        nameTextStyle: {},\r\n        nameGap: 15,\r\n        silent: false,\r\n        triggerEvent: false,\r\n        tooltip: {\r\n            show: false\r\n        },\r\n        axisPointer: {},\r\n        axisLine: {\r\n            show: true,\r\n            onZero: true,\r\n            onZeroAxisIndex: null,\r\n            lineStyle: {\r\n                color: '#6E7079',\r\n                width: 1,\r\n                type: 'solid'\r\n            },\r\n            symbol: ['none', 'none'],\r\n            symbolSize: [10, 15]\r\n        },\r\n        axisTick: {\r\n            show: true,\r\n            inside: false,\r\n            length: 5,\r\n            lineStyle: {\r\n                width: 1\r\n            }\r\n        },\r\n        axisLabel: {\r\n            show: true,\r\n            inside: false,\r\n            rotate: 0,\r\n            showMinLabel: null,\r\n            showMaxLabel: null,\r\n            margin: 8,\r\n            fontSize: 12\r\n        },\r\n        splitLine: {\r\n            show: true,\r\n            lineStyle: {\r\n                color: ['#E0E6F1'],\r\n                width: 1,\r\n                type: 'solid'\r\n            }\r\n        },\r\n        splitArea: {\r\n            show: false,\r\n            areaStyle: {\r\n                color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\r\n            }\r\n        }\r\n    };\r\n    var categoryAxis = merge({\r\n        boundaryGap: true,\r\n        deduplication: null,\r\n        splitLine: {\r\n            show: false\r\n        },\r\n        axisTick: {\r\n            alignWithLabel: false,\r\n            interval: 'auto'\r\n        },\r\n        axisLabel: {\r\n            interval: 'auto'\r\n        }\r\n    }, defaultOption);\r\n    var valueAxis = merge({\r\n        boundaryGap: [0, 0],\r\n        axisLine: {\r\n            show: 'auto'\r\n        },\r\n        axisTick: {\r\n            show: 'auto'\r\n        },\r\n        splitNumber: 5,\r\n        minorTick: {\r\n            show: false,\r\n            splitNumber: 5,\r\n            length: 3,\r\n            lineStyle: {}\r\n        },\r\n        minorSplitLine: {\r\n            show: false,\r\n            lineStyle: {\r\n                color: '#F4F7FD',\r\n                width: 1\r\n            }\r\n        }\r\n    }, defaultOption);\r\n    var timeAxis = merge({\r\n        scale: true,\r\n        splitNumber: 6,\r\n        axisLabel: {\r\n            showMinLabel: false,\r\n            showMaxLabel: false,\r\n            rich: {\r\n                primary: {\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        splitLine: {\r\n            show: false\r\n        }\r\n    }, valueAxis);\r\n    var logAxis = defaults({\r\n        scale: true,\r\n        logBase: 10\r\n    }, valueAxis);\r\n    var axisDefault = {\r\n        category: categoryAxis,\r\n        value: valueAxis,\r\n        time: timeAxis,\r\n        log: logAxis\r\n    };\n\n    var OrdinalMeta = (function () {\r\n        function OrdinalMeta(opt) {\r\n            this.categories = opt.categories || [];\r\n            this._needCollect = opt.needCollect;\r\n            this._deduplication = opt.deduplication;\r\n        }\r\n        OrdinalMeta.createByAxisModel = function (axisModel) {\r\n            var option = axisModel.option;\r\n            var data = option.data;\r\n            var categories = data && map(data, getName);\r\n            return new OrdinalMeta({\r\n                categories: categories,\r\n                needCollect: !categories,\r\n                deduplication: option.dedplication !== false\r\n            });\r\n        };\r\n        OrdinalMeta.prototype.getOrdinal = function (category) {\r\n            return this._getOrCreateMap().get(category);\r\n        };\r\n        OrdinalMeta.prototype.parseAndCollect = function (category) {\r\n            var index;\r\n            var needCollect = this._needCollect;\r\n            if (typeof category !== 'string' && !needCollect) {\r\n                return category;\r\n            }\r\n            if (needCollect && !this._deduplication) {\r\n                index = this.categories.length;\r\n                this.categories[index] = category;\r\n                return index;\r\n            }\r\n            var map = this._getOrCreateMap();\r\n            index = map.get(category);\r\n            if (index == null) {\r\n                if (needCollect) {\r\n                    index = this.categories.length;\r\n                    this.categories[index] = category;\r\n                    map.set(category, index);\r\n                }\r\n                else {\r\n                    index = NaN;\r\n                }\r\n            }\r\n            return index;\r\n        };\r\n        OrdinalMeta.prototype._getOrCreateMap = function () {\r\n            return this._map || (this._map = createHashMap(this.categories));\r\n        };\r\n        return OrdinalMeta;\r\n    }());\r\n    function getName(obj) {\r\n        if (isObject(obj) && obj.value != null) {\r\n            return obj.value;\r\n        }\r\n        else {\r\n            return obj + '';\r\n        }\r\n    }\n\n    var AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\n    function axisModelCreator (axisName, BaseAxisModelClass, extraDefaultOption) {\r\n        each(AXIS_TYPES, function (v, axisType) {\r\n            var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\r\n            var AxisModel = (function (_super) {\r\n                __extends(AxisModel, _super);\r\n                function AxisModel() {\r\n                    var args = [];\r\n                    for (var _i = 0; _i < arguments.length; _i++) {\r\n                        args[_i] = arguments[_i];\r\n                    }\r\n                    var _this = _super.apply(this, args) || this;\r\n                    _this.type = axisName + 'Axis.' + axisType;\r\n                    return _this;\r\n                }\r\n                AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n                    var layoutMode = fetchLayoutMode(this);\r\n                    var inputPositionParams = layoutMode\r\n                        ? getLayoutParams(option) : {};\r\n                    var themeModel = ecModel.getTheme();\r\n                    merge(option, themeModel.get(axisType + 'Axis'));\r\n                    merge(option, this.getDefaultOption());\r\n                    option.type = getAxisType(option);\r\n                    if (layoutMode) {\r\n                        mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n                    }\r\n                };\r\n                AxisModel.prototype.optionUpdated = function () {\r\n                    var thisOption = this.option;\r\n                    if (thisOption.type === 'category') {\r\n                        this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\r\n                    }\r\n                };\r\n                AxisModel.prototype.getCategories = function (rawData) {\r\n                    var option = this.option;\r\n                    if (option.type === 'category') {\r\n                        if (rawData) {\r\n                            return option.data;\r\n                        }\r\n                        return this.__ordinalMeta.categories;\r\n                    }\r\n                };\r\n                AxisModel.prototype.getOrdinalMeta = function () {\r\n                    return this.__ordinalMeta;\r\n                };\r\n                AxisModel.type = axisName + 'Axis.' + axisType;\r\n                AxisModel.defaultOption = defaultOption;\r\n                return AxisModel;\r\n            }(BaseAxisModelClass));\r\n            ComponentModel.registerClass(AxisModel);\r\n        });\r\n        ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\r\n    }\r\n    function getAxisType(option) {\r\n        return option.type || (option.data ? 'category' : 'value');\r\n    }\n\n    var AxisModelCommonMixin = (function () {\r\n        function AxisModelCommonMixin() {\r\n        }\r\n        AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\r\n            var option = this.option;\r\n            return !option.scale;\r\n        };\r\n        AxisModelCommonMixin.prototype.getCoordSysModel = function () {\r\n            return;\r\n        };\r\n        return AxisModelCommonMixin;\r\n    }());\n\n    var CartesianAxisModel = (function (_super) {\r\n        __extends(CartesianAxisModel, _super);\r\n        function CartesianAxisModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisModel.prototype.getCoordSysModel = function () {\r\n            return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n        };\r\n        CartesianAxisModel.type = 'cartesian2dAxis';\r\n        return CartesianAxisModel;\r\n    }(ComponentModel));\r\n    mixin(CartesianAxisModel, AxisModelCommonMixin);\r\n    var extraOption = {\r\n        offset: 0,\r\n        categorySortInfo: []\r\n    };\r\n    axisModelCreator('x', CartesianAxisModel, extraOption);\r\n    axisModelCreator('y', CartesianAxisModel, extraOption);\n\n    var Scale = (function () {\r\n        function Scale(setting) {\r\n            this._setting = setting || {};\r\n            this._extent = [Infinity, -Infinity];\r\n        }\r\n        Scale.prototype.getSetting = function (name) {\r\n            return this._setting[name];\r\n        };\r\n        Scale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n        };\r\n        Scale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        Scale.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Scale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = start;\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = end;\r\n            }\r\n        };\r\n        Scale.prototype.isInExtentRange = function (value) {\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        Scale.prototype.isBlank = function () {\r\n            return this._isBlank;\r\n        };\r\n        Scale.prototype.setBlank = function (isBlank) {\r\n            this._isBlank = isBlank;\r\n        };\r\n        return Scale;\r\n    }());\r\n    enableClassManagement(Scale, {\r\n        registerWhenExtend: true\r\n    });\n\n    var roundNumber = round$1;\r\n    function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\r\n        var result = {};\r\n        var span = extent[1] - extent[0];\r\n        var interval = result.interval = nice(span / splitNumber, true);\r\n        if (minInterval != null && interval < minInterval) {\r\n            interval = result.interval = minInterval;\r\n        }\r\n        if (maxInterval != null && interval > maxInterval) {\r\n            interval = result.interval = maxInterval;\r\n        }\r\n        var precision = result.intervalPrecision = getIntervalPrecision(interval);\r\n        var niceTickExtent = result.niceTickExtent = [\r\n            roundNumber(Math.ceil(extent[0] / interval) * interval, precision),\r\n            roundNumber(Math.floor(extent[1] / interval) * interval, precision)\r\n        ];\r\n        fixExtent(niceTickExtent, extent);\r\n        return result;\r\n    }\r\n    function getIntervalPrecision(interval) {\r\n        return getPrecisionSafe(interval) + 2;\r\n    }\r\n    function clamp(niceTickExtent, idx, extent) {\r\n        niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n    }\r\n    function fixExtent(niceTickExtent, extent) {\r\n        !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\r\n        !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\r\n        clamp(niceTickExtent, 0, extent);\r\n        clamp(niceTickExtent, 1, extent);\r\n        if (niceTickExtent[0] > niceTickExtent[1]) {\r\n            niceTickExtent[0] = niceTickExtent[1];\r\n        }\r\n    }\r\n    function contain$1(val, extent) {\r\n        return val >= extent[0] && val <= extent[1];\r\n    }\r\n    function normalize$1(val, extent) {\r\n        if (extent[1] === extent[0]) {\r\n            return 0.5;\r\n        }\r\n        return (val - extent[0]) / (extent[1] - extent[0]);\r\n    }\r\n    function scale$2(val, extent) {\r\n        return val * (extent[1] - extent[0]) + extent[0];\r\n    }\n\n    var OrdinalScale = (function (_super) {\r\n        __extends(OrdinalScale, _super);\r\n        function OrdinalScale(setting) {\r\n            var _this = _super.call(this, setting) || this;\r\n            _this.type = 'ordinal';\r\n            var ordinalMeta = _this.getSetting('ordinalMeta');\r\n            if (!ordinalMeta || isArray(ordinalMeta)) {\r\n                ordinalMeta = new OrdinalMeta({ categories: ordinalMeta });\r\n            }\r\n            _this._ordinalMeta = ordinalMeta;\r\n            _this._categorySortInfo = [];\r\n            _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\r\n            return _this;\r\n        }\r\n        OrdinalScale.prototype.parse = function (val) {\r\n            return typeof val === 'string'\r\n                ? this._ordinalMeta.getOrdinal(val)\r\n                : Math.round(val);\r\n        };\r\n        OrdinalScale.prototype.contain = function (rank) {\r\n            rank = this.parse(rank);\r\n            return contain$1(rank, this._extent)\r\n                && this._ordinalMeta.categories[rank] != null;\r\n        };\r\n        OrdinalScale.prototype.normalize = function (val) {\r\n            val = this.getCategoryIndex(this.parse(val));\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        OrdinalScale.prototype.scale = function (val) {\r\n            val = this.getCategoryIndex(val);\r\n            return Math.round(scale$2(val, this._extent));\r\n        };\r\n        OrdinalScale.prototype.getTicks = function () {\r\n            var ticks = [];\r\n            var extent = this._extent;\r\n            var rank = extent[0];\r\n            while (rank <= extent[1]) {\r\n                ticks.push({\r\n                    value: this.getCategoryIndex(rank)\r\n                });\r\n                rank++;\r\n            }\r\n            return ticks;\r\n        };\r\n        OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            return;\r\n        };\r\n        OrdinalScale.prototype.setCategorySortInfo = function (info) {\r\n            this._categorySortInfo = info;\r\n        };\r\n        OrdinalScale.prototype.getCategorySortInfo = function () {\r\n            return this._categorySortInfo;\r\n        };\r\n        OrdinalScale.prototype.getCategoryIndex = function (n) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[n].beforeSortIndex;\r\n            }\r\n            else {\r\n                return n;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getRawIndex = function (displayIndex) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[displayIndex].ordinalNumber;\r\n            }\r\n            else {\r\n                return displayIndex;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getLabel = function (tick) {\r\n            if (!this.isBlank()) {\r\n                var rawIndex = this.getRawIndex(tick.value);\r\n                var cateogry = this._ordinalMeta.categories[rawIndex];\r\n                return cateogry == null ? '' : cateogry + '';\r\n            }\r\n        };\r\n        OrdinalScale.prototype.count = function () {\r\n            return this._extent[1] - this._extent[0] + 1;\r\n        };\r\n        OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        OrdinalScale.prototype.isInExtentRange = function (value) {\r\n            value = this.getCategoryIndex(value);\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        OrdinalScale.prototype.getOrdinalMeta = function () {\r\n            return this._ordinalMeta;\r\n        };\r\n        OrdinalScale.prototype.niceTicks = function () { };\r\n        OrdinalScale.prototype.niceExtent = function () { };\r\n        OrdinalScale.type = 'ordinal';\r\n        return OrdinalScale;\r\n    }(Scale));\r\n    Scale.registerClass(OrdinalScale);\n\n    var roundNumber$1 = round$1;\r\n    var IntervalScale = (function (_super) {\r\n        __extends(IntervalScale, _super);\r\n        function IntervalScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'interval';\r\n            _this._interval = 0;\r\n            _this._intervalPrecision = 2;\r\n            return _this;\r\n        }\r\n        IntervalScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        IntervalScale.prototype.contain = function (val) {\r\n            return contain$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.normalize = function (val) {\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = parseFloat(start);\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = parseFloat(end);\r\n            }\r\n        };\r\n        IntervalScale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n            this.setExtent(extent[0], extent[1]);\r\n        };\r\n        IntervalScale.prototype.getInterval = function () {\r\n            return this._interval;\r\n        };\r\n        IntervalScale.prototype.setInterval = function (interval) {\r\n            this._interval = interval;\r\n            this._niceExtent = this._extent.slice();\r\n            this._intervalPrecision = getIntervalPrecision(interval);\r\n        };\r\n        IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var niceTickExtent = this._niceExtent;\r\n            var intervalPrecision = this._intervalPrecision;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            var safeLimit = 10000;\r\n            if (extent[0] < niceTickExtent[0]) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(niceTickExtent[0] - interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[0]\r\n                    });\r\n                }\r\n            }\r\n            var tick = niceTickExtent[0];\r\n            while (tick <= niceTickExtent[1]) {\r\n                ticks.push({\r\n                    value: tick\r\n                });\r\n                tick = roundNumber$1(tick + interval, intervalPrecision);\r\n                if (tick === ticks[ticks.length - 1].value) {\r\n                    break;\r\n                }\r\n                if (ticks.length > safeLimit) {\r\n                    return [];\r\n                }\r\n            }\r\n            var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\r\n            if (extent[1] > lastNiceTick) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(lastNiceTick + interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[1]\r\n                    });\r\n                }\r\n            }\r\n            return ticks;\r\n        };\r\n        IntervalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            var ticks = this.getTicks(true);\r\n            var minorTicks = [];\r\n            var extent = this.getExtent();\r\n            for (var i = 1; i < ticks.length; i++) {\r\n                var nextTick = ticks[i];\r\n                var prevTick = ticks[i - 1];\r\n                var count = 0;\r\n                var minorTicksGroup = [];\r\n                var interval = nextTick.value - prevTick.value;\r\n                var minorInterval = interval / splitNumber;\r\n                while (count < splitNumber - 1) {\r\n                    var minorTick = roundNumber$1(prevTick.value + (count + 1) * minorInterval);\r\n                    if (minorTick > extent[0] && minorTick < extent[1]) {\r\n                        minorTicksGroup.push(minorTick);\r\n                    }\r\n                    count++;\r\n                }\r\n                minorTicks.push(minorTicksGroup);\r\n            }\r\n            return minorTicks;\r\n        };\r\n        IntervalScale.prototype.getLabel = function (data, opt) {\r\n            if (data == null) {\r\n                return '';\r\n            }\r\n            var precision = opt && opt.precision;\r\n            if (precision == null) {\r\n                precision = getPrecisionSafe(data.value) || 0;\r\n            }\r\n            else if (precision === 'auto') {\r\n                precision = this._intervalPrecision;\r\n            }\r\n            var dataNum = roundNumber$1(data.value, precision, true);\r\n            return addCommas(dataNum);\r\n        };\r\n        IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\r\n            splitNumber = splitNumber || 5;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                return;\r\n            }\r\n            if (span < 0) {\r\n                span = -span;\r\n                extent.reverse();\r\n            }\r\n            var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\r\n            this._intervalPrecision = result.intervalPrecision;\r\n            this._interval = result.interval;\r\n            this._niceExtent = result.niceTickExtent;\r\n        };\r\n        IntervalScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                if (extent[0] !== 0) {\r\n                    var expandSize = extent[0];\r\n                    if (!opt.fixMax) {\r\n                        extent[1] += expandSize / 2;\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                    else {\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                }\r\n                else {\r\n                    extent[1] = 1;\r\n                }\r\n            }\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                extent[0] = 0;\r\n                extent[1] = 1;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n            var interval = this._interval;\r\n            if (!opt.fixMin) {\r\n                extent[0] = roundNumber$1(Math.floor(extent[0] / interval) * interval);\r\n            }\r\n            if (!opt.fixMax) {\r\n                extent[1] = roundNumber$1(Math.ceil(extent[1] / interval) * interval);\r\n            }\r\n        };\r\n        IntervalScale.type = 'interval';\r\n        return IntervalScale;\r\n    }(Scale));\r\n    Scale.registerClass(IntervalScale);\n\n    var STACK_PREFIX = '__ec_stack_';\r\n    var LARGE_BAR_MIN_WIDTH = 0.5;\r\n    var LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\n    function getSeriesStackId(seriesModel) {\r\n        return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n    }\r\n    function getAxisKey(axis) {\r\n        return axis.dim + axis.index;\r\n    }\r\n    function prepareLayoutBarSeries(seriesType, ecModel) {\r\n        var seriesModels = [];\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\r\n                seriesModels.push(seriesModel);\r\n            }\r\n        });\r\n        return seriesModels;\r\n    }\r\n    function getValueAxesMinGaps(barSeries) {\r\n        var axisValues = {};\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var key = baseAxis.dim + '_' + baseAxis.index;\r\n            var dim = data.mapDimension(baseAxis.dim);\r\n            for (var i = 0, cnt = data.count(); i < cnt; ++i) {\r\n                var value = data.get(dim, i);\r\n                if (!axisValues[key]) {\r\n                    axisValues[key] = [value];\r\n                }\r\n                else {\r\n                    axisValues[key].push(value);\r\n                }\r\n            }\r\n        });\r\n        var axisMinGaps = {};\r\n        for (var key in axisValues) {\r\n            if (axisValues.hasOwnProperty(key)) {\r\n                var valuesInAxis = axisValues[key];\r\n                if (valuesInAxis) {\r\n                    valuesInAxis.sort(function (a, b) {\r\n                        return a - b;\r\n                    });\r\n                    var min = null;\r\n                    for (var j = 1; j < valuesInAxis.length; ++j) {\r\n                        var delta = valuesInAxis[j] - valuesInAxis[j - 1];\r\n                        if (delta > 0) {\r\n                            min = min === null ? delta : Math.min(min, delta);\r\n                        }\r\n                    }\r\n                    axisMinGaps[key] = min;\r\n                }\r\n            }\r\n        }\r\n        return axisMinGaps;\r\n    }\r\n    function makeColumnLayout(barSeries) {\r\n        var axisMinGaps = getValueAxesMinGaps(barSeries);\r\n        var seriesInfoList = [];\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var axisExtent = baseAxis.getExtent();\r\n            var bandWidth;\r\n            if (baseAxis.type === 'category') {\r\n                bandWidth = baseAxis.getBandWidth();\r\n            }\r\n            else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\r\n                var key = baseAxis.dim + '_' + baseAxis.index;\r\n                var minGap = axisMinGaps[key];\r\n                var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\r\n                var scale = baseAxis.scale.getExtent();\r\n                var scaleSpan = Math.abs(scale[1] - scale[0]);\r\n                bandWidth = minGap\r\n                    ? extentSpan / scaleSpan * minGap\r\n                    : extentSpan;\r\n            }\r\n            else {\r\n                var data = seriesModel.getData();\r\n                bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\r\n            }\r\n            var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n            var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n            var barMinWidth = parsePercent$2(seriesModel.get('barMinWidth') || 1, bandWidth);\r\n            var barGap = seriesModel.get('barGap');\r\n            var barCategoryGap = seriesModel.get('barCategoryGap');\r\n            seriesInfoList.push({\r\n                bandWidth: bandWidth,\r\n                barWidth: barWidth,\r\n                barMaxWidth: barMaxWidth,\r\n                barMinWidth: barMinWidth,\r\n                barGap: barGap,\r\n                barCategoryGap: barCategoryGap,\r\n                axisKey: getAxisKey(baseAxis),\r\n                stackId: getSeriesStackId(seriesModel)\r\n            });\r\n        });\r\n        return doCalBarWidthAndOffset(seriesInfoList);\r\n    }\r\n    function doCalBarWidthAndOffset(seriesInfoList) {\r\n        var columnsMap = {};\r\n        each(seriesInfoList, function (seriesInfo, idx) {\r\n            var axisKey = seriesInfo.axisKey;\r\n            var bandWidth = seriesInfo.bandWidth;\r\n            var columnsOnAxis = columnsMap[axisKey] || {\r\n                bandWidth: bandWidth,\r\n                remainedWidth: bandWidth,\r\n                autoWidthCount: 0,\r\n                categoryGap: null,\r\n                gap: '20%',\r\n                stacks: {}\r\n            };\r\n            var stacks = columnsOnAxis.stacks;\r\n            columnsMap[axisKey] = columnsOnAxis;\r\n            var stackId = seriesInfo.stackId;\r\n            if (!stacks[stackId]) {\r\n                columnsOnAxis.autoWidthCount++;\r\n            }\r\n            stacks[stackId] = stacks[stackId] || {\r\n                width: 0,\r\n                maxWidth: 0\r\n            };\r\n            var barWidth = seriesInfo.barWidth;\r\n            if (barWidth && !stacks[stackId].width) {\r\n                stacks[stackId].width = barWidth;\r\n                barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n                columnsOnAxis.remainedWidth -= barWidth;\r\n            }\r\n            var barMaxWidth = seriesInfo.barMaxWidth;\r\n            barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n            var barMinWidth = seriesInfo.barMinWidth;\r\n            barMinWidth && (stacks[stackId].minWidth = barMinWidth);\r\n            var barGap = seriesInfo.barGap;\r\n            (barGap != null) && (columnsOnAxis.gap = barGap);\r\n            var barCategoryGap = seriesInfo.barCategoryGap;\r\n            (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n        });\r\n        var result = {};\r\n        each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n            result[coordSysName] = {};\r\n            var stacks = columnsOnAxis.stacks;\r\n            var bandWidth = columnsOnAxis.bandWidth;\r\n            var categoryGapPercent = columnsOnAxis.categoryGap;\r\n            if (categoryGapPercent == null) {\r\n                var columnCount = keys(stacks).length;\r\n                categoryGapPercent = Math.max((35 - columnCount * 4), 15) + '%';\r\n            }\r\n            var categoryGap = parsePercent$2(categoryGapPercent, bandWidth);\r\n            var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n            var remainedWidth = columnsOnAxis.remainedWidth;\r\n            var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n            var autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            each(stacks, function (column) {\r\n                var maxWidth = column.maxWidth;\r\n                var minWidth = column.minWidth;\r\n                if (!column.width) {\r\n                    var finalWidth = autoWidth;\r\n                    if (maxWidth && maxWidth < finalWidth) {\r\n                        finalWidth = Math.min(maxWidth, remainedWidth);\r\n                    }\r\n                    if (minWidth && minWidth > finalWidth) {\r\n                        finalWidth = minWidth;\r\n                    }\r\n                    if (finalWidth !== autoWidth) {\r\n                        column.width = finalWidth;\r\n                        remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                        autoWidthCount--;\r\n                    }\r\n                }\r\n                else {\r\n                    var finalWidth = column.width;\r\n                    if (maxWidth) {\r\n                        finalWidth = Math.min(finalWidth, maxWidth);\r\n                    }\r\n                    if (minWidth) {\r\n                        finalWidth = Math.max(finalWidth, minWidth);\r\n                    }\r\n                    column.width = finalWidth;\r\n                    remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                    autoWidthCount--;\r\n                }\r\n            });\r\n            autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            var widthSum = 0;\r\n            var lastColumn;\r\n            each(stacks, function (column, idx) {\r\n                if (!column.width) {\r\n                    column.width = autoWidth;\r\n                }\r\n                lastColumn = column;\r\n                widthSum += column.width * (1 + barGapPercent);\r\n            });\r\n            if (lastColumn) {\r\n                widthSum -= lastColumn.width * barGapPercent;\r\n            }\r\n            var offset = -widthSum / 2;\r\n            each(stacks, function (column, stackId) {\r\n                result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n                    bandWidth: bandWidth,\r\n                    offset: offset,\r\n                    width: column.width\r\n                };\r\n                offset += column.width * (1 + barGapPercent);\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n    function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\r\n        if (barWidthAndOffset && axis) {\r\n            var result = barWidthAndOffset[getAxisKey(axis)];\r\n            if (result != null && seriesModel != null) {\r\n                return result[getSeriesStackId(seriesModel)];\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function layout(seriesType, ecModel) {\r\n        var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\r\n        var barWidthAndOffset = makeColumnLayout(seriesModels);\r\n        var lastStackCoords = {};\r\n        each(seriesModels, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var stackId = getSeriesStackId(seriesModel);\r\n            var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\r\n            var columnOffset = columnLayoutInfo.offset;\r\n            var columnWidth = columnLayoutInfo.width;\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n            lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n            data.setLayout({\r\n                bandWidth: columnLayoutInfo.bandWidth,\r\n                offset: columnOffset,\r\n                size: columnWidth\r\n            });\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var stacked = isDimensionStacked(data, valueDim);\r\n            var isValueAxisH = valueAxis.isHorizontal();\r\n            var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\r\n            for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n                var value = data.get(valueDim, idx);\r\n                var baseValue = data.get(baseDim, idx);\r\n                var sign = value >= 0 ? 'p' : 'n';\r\n                var baseCoord = valueAxisStart;\r\n                if (stacked) {\r\n                    if (!lastStackCoords[stackId][baseValue]) {\r\n                        lastStackCoords[stackId][baseValue] = {\r\n                            p: valueAxisStart,\r\n                            n: valueAxisStart\r\n                        };\r\n                    }\r\n                    baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n                }\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var width = void 0;\r\n                var height = void 0;\r\n                if (isValueAxisH) {\r\n                    var coord = cartesian.dataToPoint([value, baseValue]);\r\n                    x = baseCoord;\r\n                    y = coord[1] + columnOffset;\r\n                    width = coord[0] - valueAxisStart;\r\n                    height = columnWidth;\r\n                    if (Math.abs(width) < barMinHeight) {\r\n                        width = (width < 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(width)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += width);\r\n                    }\r\n                }\r\n                else {\r\n                    var coord = cartesian.dataToPoint([baseValue, value]);\r\n                    x = coord[0] + columnOffset;\r\n                    y = baseCoord;\r\n                    width = columnWidth;\r\n                    height = coord[1] - valueAxisStart;\r\n                    if (Math.abs(height) < barMinHeight) {\r\n                        height = (height <= 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(height)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += height);\r\n                    }\r\n                }\r\n                data.setItemLayout(idx, {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                });\r\n            }\r\n        });\r\n    }\r\n    var largeLayout = {\r\n        seriesType: 'bar',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var coordLayout = cartesian.master.getRect();\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var valueAxisHorizontal = valueAxis.isHorizontal();\r\n            var valueDimIdx = valueAxisHorizontal ? 0 : 1;\r\n            var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\r\n            if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\r\n                barWidth = LARGE_BAR_MIN_WIDTH;\r\n            }\r\n            return {\r\n                progress: function (params, data) {\r\n                    var count = params.count;\r\n                    var largePoints = new LargeArr(count * 2);\r\n                    var largeBackgroundPoints = new LargeArr(count * 2);\r\n                    var largeDataIndices = new LargeArr(count);\r\n                    var dataIndex;\r\n                    var coord = [];\r\n                    var valuePair = [];\r\n                    var pointsOffset = 0;\r\n                    var idxOffset = 0;\r\n                    while ((dataIndex = params.next()) != null) {\r\n                        valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\r\n                        valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\r\n                        coord = cartesian.dataToPoint(valuePair, null, coord);\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\r\n                        largePoints[pointsOffset++] = coord[0];\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\r\n                        largePoints[pointsOffset++] = coord[1];\r\n                        largeDataIndices[idxOffset++] = dataIndex;\r\n                    }\r\n                    data.setLayout({\r\n                        largePoints: largePoints,\r\n                        largeDataIndices: largeDataIndices,\r\n                        largeBackgroundPoints: largeBackgroundPoints,\r\n                        barWidth: barWidth,\r\n                        valueAxisStart: getValueAxisStart(baseAxis, valueAxis),\r\n                        backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\r\n                        valueAxisHorizontal: valueAxisHorizontal\r\n                    });\r\n                }\r\n            };\r\n        }\r\n    };\r\n    function isOnCartesian(seriesModel) {\r\n        return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n    }\r\n    function isInLargeMode(seriesModel) {\r\n        return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n    }\r\n    function getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n        return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n    }\n\n    var bisect = function (a, x, lo, hi) {\r\n        while (lo < hi) {\r\n            var mid = lo + hi >>> 1;\r\n            if (a[mid][1] < x) {\r\n                lo = mid + 1;\r\n            }\r\n            else {\r\n                hi = mid;\r\n            }\r\n        }\r\n        return lo;\r\n    };\r\n    var TimeScale = (function (_super) {\r\n        __extends(TimeScale, _super);\r\n        function TimeScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'time';\r\n            return _this;\r\n        }\r\n        TimeScale.prototype.getLabel = function (tick) {\r\n            var useUTC = this.getSetting('useUTC');\r\n            return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC);\r\n        };\r\n        TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\r\n            var isUTC = this.getSetting('useUTC');\r\n            var lang = this.getSetting('locale');\r\n            return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\r\n        };\r\n        TimeScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            ticks.push({\r\n                value: extent[0],\r\n                level: 0\r\n            });\r\n            var useUTC = this.getSetting('useUTC');\r\n            var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\r\n            ticks = ticks.concat(innerTicks);\r\n            ticks.push({\r\n                value: extent[1],\r\n                level: 0\r\n            });\r\n            return ticks;\r\n        };\r\n        TimeScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                extent[0] -= ONE_DAY;\r\n                extent[1] += ONE_DAY;\r\n            }\r\n            if (extent[1] === -Infinity && extent[0] === Infinity) {\r\n                var d = new Date();\r\n                extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n                extent[0] = extent[1] - ONE_DAY;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n        };\r\n        TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            this._approxInterval = span / approxTickNum;\r\n            if (minInterval != null && this._approxInterval < minInterval) {\r\n                this._approxInterval = minInterval;\r\n            }\r\n            if (maxInterval != null && this._approxInterval > maxInterval) {\r\n                this._approxInterval = maxInterval;\r\n            }\r\n            var scaleIntervalsLen = scaleIntervals.length;\r\n            var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);\r\n            this._interval = scaleIntervals[idx][1];\r\n            this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\r\n        };\r\n        TimeScale.prototype.parse = function (val) {\r\n            return +parseDate(val);\r\n        };\r\n        TimeScale.prototype.contain = function (val) {\r\n            return contain$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.normalize = function (val) {\r\n            return normalize$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        TimeScale.type = 'time';\r\n        return TimeScale;\r\n    }(IntervalScale));\r\n    var scaleIntervals = [\r\n        ['second', ONE_SECOND],\r\n        ['minute', ONE_MINUTE],\r\n        ['hour', ONE_HOUR],\r\n        ['quarter-day', ONE_HOUR * 6],\r\n        ['half-day', ONE_HOUR * 12],\r\n        ['day', ONE_DAY * 1.2],\r\n        ['half-week', ONE_DAY * 3.5],\r\n        ['week', ONE_DAY * 7],\r\n        ['month', ONE_DAY * 31],\r\n        ['quarter', ONE_DAY * 95],\r\n        ['half-year', ONE_YEAR / 2],\r\n        ['year', ONE_YEAR]\r\n    ];\r\n    function isUnitValueSame(unit, valueA, valueB, isUTC) {\r\n        var dateA = parseDate(valueA);\r\n        var dateB = parseDate(valueB);\r\n        var isSame = function (unit) {\r\n            return getUnitValue(dateA, unit, isUTC)\r\n                === getUnitValue(dateB, unit, isUTC);\r\n        };\r\n        var isSameYear = function () { return isSame('year'); };\r\n        var isSameMonth = function () { return isSameYear() && isSame('month'); };\r\n        var isSameDay = function () { return isSameMonth() && isSame('day'); };\r\n        var isSameHour = function () { return isSameDay() && isSame('hour'); };\r\n        var isSameMinute = function () { return isSameHour() && isSame('minute'); };\r\n        var isSameSecond = function () { return isSameMinute() && isSame('second'); };\r\n        var isSameMilliSecond = function () { return isSameSecond() && isSame('millisecond'); };\r\n        switch (unit) {\r\n            case 'year':\r\n                return isSameYear();\r\n            case 'month':\r\n                return isSameMonth();\r\n            case 'day':\r\n                return isSameDay();\r\n            case 'hour':\r\n                return isSameHour();\r\n            case 'minute':\r\n                return isSameMinute();\r\n            case 'second':\r\n                return isSameSecond();\r\n            case 'millisecond':\r\n                return isSameMilliSecond();\r\n        }\r\n    }\r\n    function getDateInterval(approxInterval, daysInMonth) {\r\n        approxInterval /= ONE_DAY;\r\n        return approxInterval > 16 ? 16\r\n            : approxInterval > 7.5 ? 7\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 1.5 ? 2 : 1;\r\n    }\r\n    function getMonthInterval(approxInterval) {\r\n        var APPROX_ONE_MONTH = 30 * ONE_DAY;\r\n        approxInterval /= APPROX_ONE_MONTH;\r\n        return approxInterval > 6 ? 6\r\n            : approxInterval > 3 ? 3\r\n                : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getHourInterval(approxInterval) {\r\n        approxInterval /= ONE_HOUR;\r\n        return approxInterval > 12 ? 12\r\n            : approxInterval > 6 ? 6\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMinutesAndSecondsInterval(approxInterval, isMinutes) {\r\n        approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\r\n        return approxInterval > 30 ? 30\r\n            : approxInterval > 20 ? 20\r\n                : approxInterval > 15 ? 15\r\n                    : approxInterval > 10 ? 10\r\n                        : approxInterval > 5 ? 5\r\n                            : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMillisecondsInterval(approxInterval) {\r\n        return nice(approxInterval, true);\r\n    }\r\n    function getFirstTimestampOfUnit(date, unitName, isUTC) {\r\n        var outDate = new Date(date);\r\n        switch (getPrimaryTimeUnit(unitName)) {\r\n            case 'year':\r\n            case 'month':\r\n                outDate[monthSetterName(isUTC)](0);\r\n            case 'day':\r\n                outDate[dateSetterName(isUTC)](1);\r\n            case 'hour':\r\n                outDate[hoursSetterName(isUTC)](0);\r\n            case 'minute':\r\n                outDate[minutesSetterName(isUTC)](0);\r\n            case 'second':\r\n                outDate[secondsSetterName(isUTC)](0);\r\n                outDate[millisecondsSetterName(isUTC)](0);\r\n        }\r\n        return outDate.getTime();\r\n    }\r\n    function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\r\n        var safeLimit = 10000;\r\n        var unitNames = timeUnits;\r\n        var iter = 0;\r\n        function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\r\n            var date = new Date(minTimestamp);\r\n            var dateTime = minTimestamp;\r\n            var d = date[getMethodName]();\r\n            while (dateTime < maxTimestamp && dateTime <= extent[1]) {\r\n                out.push({\r\n                    value: dateTime\r\n                });\r\n                d += interval;\r\n                date[setMethodName](d);\r\n                dateTime = date.getTime();\r\n            }\r\n            out.push({\r\n                value: dateTime,\r\n                notAdd: true\r\n            });\r\n        }\r\n        function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\r\n            var newAddedTicks = [];\r\n            var isFirstLevel = !lastLevelTicks.length;\r\n            if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\r\n                return;\r\n            }\r\n            if (isFirstLevel) {\r\n                lastLevelTicks = [{\r\n                        value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\r\n                    }, {\r\n                        value: extent[1]\r\n                    }];\r\n            }\r\n            for (var i = 0; i < lastLevelTicks.length - 1; i++) {\r\n                var startTick = lastLevelTicks[i].value;\r\n                var endTick = lastLevelTicks[i + 1].value;\r\n                if (startTick === endTick) {\r\n                    continue;\r\n                }\r\n                var interval = void 0;\r\n                var getterName = void 0;\r\n                var setterName = void 0;\r\n                var isDate = false;\r\n                switch (unitName) {\r\n                    case 'year':\r\n                        interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\r\n                        getterName = fullYearGetterName(isUTC);\r\n                        setterName = fullYearSetterName(isUTC);\r\n                        break;\r\n                    case 'half-year':\r\n                    case 'quarter':\r\n                    case 'month':\r\n                        interval = getMonthInterval(approxInterval);\r\n                        getterName = monthGetterName(isUTC);\r\n                        setterName = monthSetterName(isUTC);\r\n                        break;\r\n                    case 'week':\r\n                    case 'half-week':\r\n                    case 'day':\r\n                        interval = getDateInterval(approxInterval);\r\n                        getterName = dateGetterName(isUTC);\r\n                        setterName = dateSetterName(isUTC);\r\n                        isDate = true;\r\n                        break;\r\n                    case 'half-day':\r\n                    case 'quarter-day':\r\n                    case 'hour':\r\n                        interval = getHourInterval(approxInterval);\r\n                        getterName = hoursGetterName(isUTC);\r\n                        setterName = hoursSetterName(isUTC);\r\n                        break;\r\n                    case 'minute':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, true);\r\n                        getterName = minutesGetterName(isUTC);\r\n                        setterName = minutesSetterName(isUTC);\r\n                        break;\r\n                    case 'second':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, false);\r\n                        getterName = secondsGetterName(isUTC);\r\n                        setterName = secondsSetterName(isUTC);\r\n                        break;\r\n                    case 'millisecond':\r\n                        interval = getMillisecondsInterval(approxInterval);\r\n                        getterName = millisecondsGetterName(isUTC);\r\n                        setterName = millisecondsSetterName(isUTC);\r\n                        break;\r\n                }\r\n                addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\r\n                if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\r\n                    levelTicks.unshift({\r\n                        value: levelTicks[0].value - interval\r\n                    });\r\n                }\r\n            }\r\n            for (var i = 0; i < newAddedTicks.length; i++) {\r\n                levelTicks.push(newAddedTicks[i]);\r\n            }\r\n            return newAddedTicks;\r\n        }\r\n        var levelsTicks = [];\r\n        var currentLevelTicks = [];\r\n        var tickCount = 0;\r\n        var lastLevelTickCount = 0;\r\n        for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\r\n            var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\r\n            if (!isPrimaryTimeUnit(unitNames[i])) {\r\n                continue;\r\n            }\r\n            addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\r\n            var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\r\n            if (primaryTimeUnit !== nextPrimaryTimeUnit) {\r\n                if (currentLevelTicks.length) {\r\n                    lastLevelTickCount = tickCount;\r\n                    currentLevelTicks.sort(function (a, b) { return a.value - b.value; });\r\n                    var levelTicksRemoveDuplicated = [];\r\n                    for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\r\n                        var tickValue = currentLevelTicks[i_1].value;\r\n                        if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\r\n                            levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\r\n                            if (tickValue >= extent[0] && tickValue <= extent[1]) {\r\n                                tickCount++;\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetTickNum = (extent[1] - extent[0]) / approxInterval;\r\n                    if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\r\n                        break;\r\n                    }\r\n                    levelsTicks.push(levelTicksRemoveDuplicated);\r\n                    if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\r\n                        break;\r\n                    }\r\n                }\r\n                currentLevelTicks = [];\r\n            }\r\n        }\r\n        if (__DEV__) {\r\n            if (iter >= safeLimit) {\r\n                warn('Exceed safe limit.');\r\n            }\r\n        }\r\n        var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\r\n            return filter(levelTicks, function (tick) { return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; });\r\n        }), function (levelTicks) { return levelTicks.length > 0; });\r\n        var ticks = [];\r\n        var maxLevel = levelsTicksInExtent.length - 1;\r\n        for (var i = 0; i < levelsTicksInExtent.length; ++i) {\r\n            var levelTicks = levelsTicksInExtent[i];\r\n            for (var k = 0; k < levelTicks.length; ++k) {\r\n                ticks.push({\r\n                    value: levelTicks[k].value,\r\n                    level: maxLevel - i\r\n                });\r\n            }\r\n        }\r\n        ticks.sort(function (a, b) { return a.value - b.value; });\r\n        var result = [];\r\n        for (var i = 0; i < ticks.length; ++i) {\r\n            if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\r\n                result.push(ticks[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    Scale.registerClass(TimeScale);\n\n    var scaleProto = Scale.prototype;\r\n    var intervalScaleProto = IntervalScale.prototype;\r\n    var getPrecisionSafe$1 = getPrecisionSafe;\r\n    var roundingErrorFix = round$1;\r\n    var mathFloor = Math.floor;\r\n    var mathCeil = Math.ceil;\r\n    var mathPow$1 = Math.pow;\r\n    var mathLog = Math.log;\r\n    var LogScale = (function (_super) {\r\n        __extends(LogScale, _super);\r\n        function LogScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'log';\r\n            _this.base = 10;\r\n            _this._originalScale = new IntervalScale();\r\n            _this._interval = 0;\r\n            return _this;\r\n        }\r\n        LogScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var originalScale = this._originalScale;\r\n            var extent = this._extent;\r\n            var originalExtent = originalScale.getExtent();\r\n            var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\r\n            return map(ticks, function (tick) {\r\n                var val = tick.value;\r\n                var powVal = round$1(mathPow$1(this.base, val));\r\n                powVal = (val === extent[0] && this._fixMin)\r\n                    ? fixRoundingError(powVal, originalExtent[0])\r\n                    : powVal;\r\n                powVal = (val === extent[1] && this._fixMax)\r\n                    ? fixRoundingError(powVal, originalExtent[1])\r\n                    : powVal;\r\n                return {\r\n                    value: powVal\r\n                };\r\n            }, this);\r\n        };\r\n        LogScale.prototype.setExtent = function (start, end) {\r\n            var base = this.base;\r\n            start = mathLog(start) / mathLog(base);\r\n            end = mathLog(end) / mathLog(base);\r\n            intervalScaleProto.setExtent.call(this, start, end);\r\n        };\r\n        LogScale.prototype.getExtent = function () {\r\n            var base = this.base;\r\n            var extent = scaleProto.getExtent.call(this);\r\n            extent[0] = mathPow$1(base, extent[0]);\r\n            extent[1] = mathPow$1(base, extent[1]);\r\n            var originalScale = this._originalScale;\r\n            var originalExtent = originalScale.getExtent();\r\n            this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\r\n            this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\r\n            return extent;\r\n        };\r\n        LogScale.prototype.unionExtent = function (extent) {\r\n            this._originalScale.unionExtent(extent);\r\n            var base = this.base;\r\n            extent[0] = mathLog(extent[0]) / mathLog(base);\r\n            extent[1] = mathLog(extent[1]) / mathLog(base);\r\n            scaleProto.unionExtent.call(this, extent);\r\n        };\r\n        LogScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        LogScale.prototype.niceTicks = function (approxTickNum) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (span === Infinity || span <= 0) {\r\n                return;\r\n            }\r\n            var interval = quantity(span);\r\n            var err = approxTickNum / span * interval;\r\n            if (err <= 0.5) {\r\n                interval *= 10;\r\n            }\r\n            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\r\n                interval *= 10;\r\n            }\r\n            var niceExtent = [\r\n                round$1(mathCeil(extent[0] / interval) * interval),\r\n                round$1(mathFloor(extent[1] / interval) * interval)\r\n            ];\r\n            this._interval = interval;\r\n            this._niceExtent = niceExtent;\r\n        };\r\n        LogScale.prototype.niceExtent = function (opt) {\r\n            intervalScaleProto.niceExtent.call(this, opt);\r\n            this._fixMin = opt.fixMin;\r\n            this._fixMax = opt.fixMax;\r\n        };\r\n        LogScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        LogScale.prototype.contain = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return contain$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.normalize = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.scale = function (val) {\r\n            val = scale$2(val, this._extent);\r\n            return mathPow$1(this.base, val);\r\n        };\r\n        LogScale.type = 'log';\r\n        return LogScale;\r\n    }(Scale));\r\n    var proto = LogScale.prototype;\r\n    proto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\n    proto.getLabel = intervalScaleProto.getLabel;\r\n    function fixRoundingError(val, originalVal) {\r\n        return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n    }\r\n    Scale.registerClass(LogScale);\n\n    var ScaleRawExtentInfo = (function () {\r\n        function ScaleRawExtentInfo(scale, model, originalExtent) {\r\n            this._prepareParams(scale, model, originalExtent);\r\n        }\r\n        ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, dataExtent) {\r\n            if (dataExtent[1] < dataExtent[0]) {\r\n                dataExtent = [NaN, NaN];\r\n            }\r\n            this._dataMin = dataExtent[0];\r\n            this._dataMax = dataExtent[1];\r\n            var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\r\n            this._needCrossZero = model.getNeedCrossZero();\r\n            var modelMinRaw = this._modelMinRaw = model.get('min', true);\r\n            if (isFunction(modelMinRaw)) {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMinRaw !== 'dataMin') {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\r\n            }\r\n            var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\r\n            if (isFunction(modelMaxRaw)) {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMaxRaw !== 'dataMax') {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\r\n            }\r\n            if (isOrdinal) {\r\n                this._axisDataLen = model.getCategories().length;\r\n            }\r\n            else {\r\n                var boundaryGap = model.get('boundaryGap');\r\n                var boundaryGapArr = isArray(boundaryGap)\r\n                    ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\r\n                if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\r\n                    if (__DEV__) {\r\n                        console.warn('Boolean type for boundaryGap is only '\r\n                            + 'allowed for ordinal axis. Please use string in '\r\n                            + 'percentage instead, e.g., \"20%\". Currently, '\r\n                            + 'boundaryGap is set to be 0.');\r\n                    }\r\n                    this._boundaryGapInner = [0, 0];\r\n                }\r\n                else {\r\n                    this._boundaryGapInner = [\r\n                        parsePercent(boundaryGapArr[0], 1),\r\n                        parsePercent(boundaryGapArr[1], 1)\r\n                    ];\r\n                }\r\n            }\r\n        };\r\n        ScaleRawExtentInfo.prototype.calculate = function () {\r\n            var isOrdinal = this._isOrdinal;\r\n            var dataMin = this._dataMin;\r\n            var dataMax = this._dataMax;\r\n            var axisDataLen = this._axisDataLen;\r\n            var boundaryGapInner = this._boundaryGapInner;\r\n            var span = !isOrdinal\r\n                ? ((dataMax - dataMin) || Math.abs(dataMin))\r\n                : null;\r\n            var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\r\n            var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;\r\n            var minFixed = min != null;\r\n            var maxFixed = max != null;\r\n            if (min == null) {\r\n                min = isOrdinal\r\n                    ? (axisDataLen ? 0 : NaN)\r\n                    : dataMin - boundaryGapInner[0] * span;\r\n            }\r\n            if (max == null) {\r\n                max = isOrdinal\r\n                    ? (axisDataLen ? axisDataLen - 1 : NaN)\r\n                    : dataMax + boundaryGapInner[1] * span;\r\n            }\r\n            (min == null || !isFinite(min)) && (min = NaN);\r\n            (max == null || !isFinite(max)) && (max = NaN);\r\n            if (min > max) {\r\n                min = NaN;\r\n                max = NaN;\r\n            }\r\n            var isBlank = eqNaN(min)\r\n                || eqNaN(max)\r\n                || (isOrdinal && !axisDataLen);\r\n            if (this._needCrossZero) {\r\n                if (min > 0 && max > 0 && !minFixed) {\r\n                    min = 0;\r\n                }\r\n                if (min < 0 && max < 0 && !maxFixed) {\r\n                    max = 0;\r\n                }\r\n            }\r\n            var determinedMin = this._determinedMin;\r\n            var determinedMax = this._determinedMax;\r\n            if (determinedMin != null) {\r\n                min = determinedMin;\r\n                minFixed = true;\r\n            }\r\n            if (determinedMax != null) {\r\n                max = determinedMax;\r\n                maxFixed = true;\r\n            }\r\n            return {\r\n                min: min,\r\n                max: max,\r\n                minFixed: minFixed,\r\n                maxFixed: maxFixed,\r\n                isBlank: isBlank\r\n            };\r\n        };\r\n        ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\r\n            if (__DEV__) {\r\n                assert(!this.frozen);\r\n            }\r\n            this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\r\n            var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\r\n            if (__DEV__) {\r\n                assert(!this.frozen\r\n                    && (this[attr] == null));\r\n            }\r\n            this[attr] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.freeze = function () {\r\n            this.frozen = true;\r\n        };\r\n        return ScaleRawExtentInfo;\r\n    }());\r\n    var DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\n    var DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\n    function ensureScaleRawExtentInfo(scale, model, originalExtent) {\r\n        var rawExtentInfo = scale.rawExtentInfo;\r\n        if (rawExtentInfo) {\r\n            return rawExtentInfo;\r\n        }\r\n        rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);\r\n        scale.rawExtentInfo = rawExtentInfo;\r\n        return rawExtentInfo;\r\n    }\r\n    function parseAxisModelMinMax(scale, minMax) {\r\n        return minMax == null ? null\r\n            : eqNaN(minMax) ? NaN\r\n                : scale.parse(minMax);\r\n    }\n\n    function getScaleExtent(scale, model) {\r\n        var scaleType = scale.type;\r\n        var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\r\n        scale.setBlank(rawExtentResult.isBlank);\r\n        var min = rawExtentResult.min;\r\n        var max = rawExtentResult.max;\r\n        var ecModel = model.ecModel;\r\n        if (ecModel && (scaleType === 'time')) {\r\n            var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\r\n            var isBaseAxisAndHasBarSeries_1 = false;\r\n            each(barSeriesModels, function (seriesModel) {\r\n                isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\r\n            });\r\n            if (isBaseAxisAndHasBarSeries_1) {\r\n                var barWidthAndOffset = makeColumnLayout(barSeriesModels);\r\n                var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\r\n                min = adjustedScale.min;\r\n                max = adjustedScale.max;\r\n            }\r\n        }\r\n        return {\r\n            extent: [min, max],\r\n            fixMin: rawExtentResult.minFixed,\r\n            fixMax: rawExtentResult.maxFixed\r\n        };\r\n    }\r\n    function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\r\n        var axisExtent = model.axis.getExtent();\r\n        var axisLength = axisExtent[1] - axisExtent[0];\r\n        var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\r\n        if (barsOnCurrentAxis === undefined) {\r\n            return { min: min, max: max };\r\n        }\r\n        var minOverflow = Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            minOverflow = Math.min(item.offset, minOverflow);\r\n        });\r\n        var maxOverflow = -Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            maxOverflow = Math.max(item.offset + item.width, maxOverflow);\r\n        });\r\n        minOverflow = Math.abs(minOverflow);\r\n        maxOverflow = Math.abs(maxOverflow);\r\n        var totalOverFlow = minOverflow + maxOverflow;\r\n        var oldRange = max - min;\r\n        var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength);\r\n        var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange);\r\n        max += overflowBuffer * (maxOverflow / totalOverFlow);\r\n        min -= overflowBuffer * (minOverflow / totalOverFlow);\r\n        return { min: min, max: max };\r\n    }\r\n    function niceScaleExtent(scale, model) {\r\n        var extentInfo = getScaleExtent(scale, model);\r\n        var extent = extentInfo.extent;\r\n        var splitNumber = model.get('splitNumber');\r\n        if (scale instanceof LogScale) {\r\n            scale.base = model.get('logBase');\r\n        }\r\n        var scaleType = scale.type;\r\n        scale.setExtent(extent[0], extent[1]);\r\n        scale.niceExtent({\r\n            splitNumber: splitNumber,\r\n            fixMin: extentInfo.fixMin,\r\n            fixMax: extentInfo.fixMax,\r\n            minInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('minInterval') : null,\r\n            maxInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('maxInterval') : null\r\n        });\r\n        var interval = model.get('interval');\r\n        if (interval != null) {\r\n            scale.setInterval && scale.setInterval(interval);\r\n        }\r\n    }\r\n    function createScaleByModel(model, axisType) {\r\n        axisType = axisType || model.get('type');\r\n        if (axisType) {\r\n            switch (axisType) {\r\n                case 'category':\r\n                    return new OrdinalScale({\r\n                        ordinalMeta: model.getOrdinalMeta\r\n                            ? model.getOrdinalMeta()\r\n                            : model.getCategories(),\r\n                        extent: [Infinity, -Infinity]\r\n                    });\r\n                case 'time':\r\n                    return new TimeScale({\r\n                        locale: model.ecModel.getLocaleModel(),\r\n                        useUTC: model.ecModel.get('useUTC')\r\n                    });\r\n                default:\r\n                    return new (Scale.getClass(axisType) || IntervalScale)();\r\n            }\r\n        }\r\n    }\r\n    function ifAxisCrossZero(axis) {\r\n        var dataExtent = axis.scale.getExtent();\r\n        var min = dataExtent[0];\r\n        var max = dataExtent[1];\r\n        return !((min > 0 && max > 0) || (min < 0 && max < 0));\r\n    }\r\n    function makeLabelFormatter(axis) {\r\n        var labelFormatter = axis.getLabelModel().get('formatter');\r\n        var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\r\n        if (axis.scale.type === 'time') {\r\n            return (function (tpl) {\r\n                return function (tick, idx) {\r\n                    return axis.scale.getFormattedLabel(tick, idx, tpl);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'string') {\r\n            return (function (tpl) {\r\n                return function (tick) {\r\n                    var label = axis.scale.getLabel(tick);\r\n                    var text = tpl.replace('{value}', label != null ? label : '');\r\n                    return text;\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'function') {\r\n            return (function (cb) {\r\n                return function (tick, idx) {\r\n                    if (categoryTickStart != null) {\r\n                        idx = tick.value - categoryTickStart;\r\n                    }\r\n                    return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\r\n                        level: tick.level\r\n                    } : null);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else {\r\n            return function (tick) {\r\n                return axis.scale.getLabel(tick);\r\n            };\r\n        }\r\n    }\r\n    function getAxisRawValue(axis, tick) {\r\n        return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n    }\r\n    function estimateLabelUnionRect(axis) {\r\n        var axisModel = axis.model;\r\n        var scale = axis.scale;\r\n        if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\r\n            return;\r\n        }\r\n        var realNumberScaleTicks;\r\n        var tickCount;\r\n        var categoryScaleExtent = scale.getExtent();\r\n        if (scale instanceof OrdinalScale) {\r\n            tickCount = scale.count();\r\n        }\r\n        else {\r\n            realNumberScaleTicks = scale.getTicks();\r\n            tickCount = realNumberScaleTicks.length;\r\n        }\r\n        var axisLabelModel = axis.getLabelModel();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rect;\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.ceil(tickCount / 40);\r\n        }\r\n        for (var i = 0; i < tickCount; i += step) {\r\n            var tick = realNumberScaleTicks\r\n                ? realNumberScaleTicks[i]\r\n                : {\r\n                    value: categoryScaleExtent[0] + i\r\n                };\r\n            var label = labelFormatter(tick, i);\r\n            var unrotatedSingleRect = axisLabelModel.getTextRect(label);\r\n            var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\r\n            rect ? rect.union(singleRect) : (rect = singleRect);\r\n        }\r\n        return rect;\r\n    }\r\n    function rotateTextRect(textRect, rotate) {\r\n        var rotateRadians = rotate * Math.PI / 180;\r\n        var beforeWidth = textRect.width;\r\n        var beforeHeight = textRect.height;\r\n        var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\r\n        var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\r\n        var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\r\n        return rotatedRect;\r\n    }\r\n    function getOptionCategoryInterval(model) {\r\n        var interval = model.get('interval');\r\n        return interval == null ? 'auto' : interval;\r\n    }\r\n    function shouldShowAllLabels(axis) {\r\n        return axis.type === 'category'\r\n            && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n    }\r\n    function getDataDimensionsOnAxis(data, axisDim) {\r\n        var dataDimMap = {};\r\n        each(data.mapDimensionsAll(axisDim), function (dataDim) {\r\n            dataDimMap[getStackedDimension(data, dataDim)] = true;\r\n        });\r\n        return keys(dataDimMap);\r\n    }\r\n    function unionAxisExtentFromData(dataExtent, data, axisDim) {\r\n        if (data) {\r\n            each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\r\n                var seriesExtent = data.getApproximateExtent(dim);\r\n                seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\r\n                seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\r\n            });\r\n        }\r\n    }\n\n    var PI$5 = Math.PI;\r\n    var AxisBuilder = (function () {\r\n        function AxisBuilder(axisModel, opt) {\r\n            this.group = new Group();\r\n            this.opt = opt;\r\n            this.axisModel = axisModel;\r\n            defaults(opt, {\r\n                labelOffset: 0,\r\n                nameDirection: 1,\r\n                tickDirection: 1,\r\n                labelDirection: 1,\r\n                silent: true,\r\n                handleAutoShown: function () { return true; }\r\n            });\r\n            var transformGroup = new Group({\r\n                x: opt.position[0],\r\n                y: opt.position[1],\r\n                rotation: opt.rotation\r\n            });\r\n            transformGroup.updateTransform();\r\n            this._transformGroup = transformGroup;\r\n        }\r\n        AxisBuilder.prototype.hasBuilder = function (name) {\r\n            return !!builders[name];\r\n        };\r\n        AxisBuilder.prototype.add = function (name) {\r\n            builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n        };\r\n        AxisBuilder.prototype.getGroup = function () {\r\n            return this.group;\r\n        };\r\n        AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n            var rotationDiff = remRadian(textRotation - axisRotation);\r\n            var textAlign;\r\n            var textVerticalAlign;\r\n            if (isRadianAroundZero(rotationDiff)) {\r\n                textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n                textAlign = 'center';\r\n            }\r\n            else if (isRadianAroundZero(rotationDiff - PI$5)) {\r\n                textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                textVerticalAlign = 'middle';\r\n                if (rotationDiff > 0 && rotationDiff < PI$5) {\r\n                    textAlign = direction > 0 ? 'right' : 'left';\r\n                }\r\n                else {\r\n                    textAlign = direction > 0 ? 'left' : 'right';\r\n                }\r\n            }\r\n            return {\r\n                rotation: rotationDiff,\r\n                textAlign: textAlign,\r\n                textVerticalAlign: textVerticalAlign\r\n            };\r\n        };\r\n        AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n            var eventData = {\r\n                componentType: axisModel.mainType,\r\n                componentIndex: axisModel.componentIndex\r\n            };\r\n            eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n            return eventData;\r\n        };\r\n        AxisBuilder.isLabelSilent = function (axisModel) {\r\n            var tooltipOpt = axisModel.get('tooltip');\r\n            return axisModel.get('silent')\r\n                || !(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show));\r\n        };\r\n        return AxisBuilder;\r\n    }());\r\n    var builders = {\r\n        axisLine: function (opt, axisModel, group, transformGroup) {\r\n            var shown = axisModel.get(['axisLine', 'show']);\r\n            if (shown === 'auto' && opt.handleAutoShown) {\r\n                shown = opt.handleAutoShown('axisLine');\r\n            }\r\n            if (!shown) {\r\n                return;\r\n            }\r\n            var extent = axisModel.axis.getExtent();\r\n            var matrix = transformGroup.transform;\r\n            var pt1 = [extent[0], 0];\r\n            var pt2 = [extent[1], 0];\r\n            if (matrix) {\r\n                applyTransform(pt1, pt1, matrix);\r\n                applyTransform(pt2, pt2, matrix);\r\n            }\r\n            var lineStyle = extend({\r\n                lineCap: 'round'\r\n            }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n            var line = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: lineStyle,\r\n                strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            line.anid = 'line';\r\n            group.add(line);\r\n            var arrows = axisModel.get(['axisLine', 'symbol']);\r\n            var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n            var arrowOffset = axisModel.get(['axisLine', 'symbolOffset']) || 0;\r\n            if (typeof arrowOffset === 'number') {\r\n                arrowOffset = [arrowOffset, arrowOffset];\r\n            }\r\n            if (arrows != null) {\r\n                if (typeof arrows === 'string') {\r\n                    arrows = [arrows, arrows];\r\n                }\r\n                if (typeof arrowSize === 'string'\r\n                    || typeof arrowSize === 'number') {\r\n                    arrowSize = [arrowSize, arrowSize];\r\n                }\r\n                var symbolWidth_1 = arrowSize[0];\r\n                var symbolHeight_1 = arrowSize[1];\r\n                each([{\r\n                        rotate: opt.rotation + Math.PI / 2,\r\n                        offset: arrowOffset[0],\r\n                        r: 0\r\n                    }, {\r\n                        rotate: opt.rotation - Math.PI / 2,\r\n                        offset: arrowOffset[1],\r\n                        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0])\r\n                            + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n                    }], function (point, index) {\r\n                    if (arrows[index] !== 'none' && arrows[index] != null) {\r\n                        var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);\r\n                        var r = point.r + point.offset;\r\n                        symbol.attr({\r\n                            rotation: point.rotate,\r\n                            x: pt1[0] + r * Math.cos(opt.rotation),\r\n                            y: pt1[1] - r * Math.sin(opt.rotation),\r\n                            silent: true,\r\n                            z2: 11\r\n                        });\r\n                        group.add(symbol);\r\n                    }\r\n                });\r\n            }\r\n        },\r\n        axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n            var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n            var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n            fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n            buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);\r\n        },\r\n        axisName: function (opt, axisModel, group, transformGroup) {\r\n            var name = retrieve(opt.axisName, axisModel.get('name'));\r\n            if (!name) {\r\n                return;\r\n            }\r\n            var nameLocation = axisModel.get('nameLocation');\r\n            var nameDirection = opt.nameDirection;\r\n            var textStyleModel = axisModel.getModel('nameTextStyle');\r\n            var gap = axisModel.get('nameGap') || 0;\r\n            var extent = axisModel.axis.getExtent();\r\n            var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n            var pos = [\r\n                nameLocation === 'start'\r\n                    ? extent[0] - gapSignal * gap\r\n                    : nameLocation === 'end'\r\n                        ? extent[1] + gapSignal * gap\r\n                        : (extent[0] + extent[1]) / 2,\r\n                isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0\r\n            ];\r\n            var labelLayout;\r\n            var nameRotation = axisModel.get('nameRotate');\r\n            if (nameRotation != null) {\r\n                nameRotation = nameRotation * PI$5 / 180;\r\n            }\r\n            var axisNameAvailableWidth;\r\n            if (isNameLocationCenter(nameLocation)) {\r\n                labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection);\r\n            }\r\n            else {\r\n                labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n                axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n                if (axisNameAvailableWidth != null) {\r\n                    axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n                    !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n                }\r\n            }\r\n            var textFont = textStyleModel.getFont();\r\n            var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n            var ellipsis = truncateOpt.ellipsis;\r\n            var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n            var tooltipOpt = axisModel.get('tooltip', true);\r\n            var mainType = axisModel.mainType;\r\n            var formatterParams = {\r\n                componentType: mainType,\r\n                name: name,\r\n                $vars: ['name']\r\n            };\r\n            formatterParams[mainType + 'Index'] = axisModel.componentIndex;\r\n            var textEl = new ZRText({\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: labelLayout.rotation,\r\n                silent: AxisBuilder.isLabelSilent(axisModel),\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: name,\r\n                    font: textFont,\r\n                    overflow: 'truncate',\r\n                    width: maxWidth,\r\n                    ellipsis: ellipsis,\r\n                    fill: textStyleModel.getTextColor()\r\n                        || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n                    align: textStyleModel.get('align')\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: textStyleModel.get('verticalAlign')\r\n                        || labelLayout.textVerticalAlign\r\n                }),\r\n                z2: 1\r\n            });\r\n            textEl.tooltip = (tooltipOpt && tooltipOpt.show)\r\n                ? extend({\r\n                    content: name,\r\n                    formatter: function () {\r\n                        return name;\r\n                    },\r\n                    formatterParams: formatterParams\r\n                }, tooltipOpt)\r\n                : null;\r\n            textEl.__fullText = name;\r\n            textEl.anid = 'name';\r\n            if (axisModel.get('triggerEvent')) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisName';\r\n                eventData.name = name;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        }\r\n    };\r\n    function endTextLayout(rotation, textPosition, textRotate, extent) {\r\n        var rotationDiff = remRadian(textRotate - rotation);\r\n        var textAlign;\r\n        var textVerticalAlign;\r\n        var inverse = extent[0] > extent[1];\r\n        var onLeft = (textPosition === 'start' && !inverse)\r\n            || (textPosition !== 'start' && inverse);\r\n        if (isRadianAroundZero(rotationDiff - PI$5 / 2)) {\r\n            textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n            textAlign = 'center';\r\n        }\r\n        else if (isRadianAroundZero(rotationDiff - PI$5 * 1.5)) {\r\n            textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n            textAlign = 'center';\r\n        }\r\n        else {\r\n            textVerticalAlign = 'middle';\r\n            if (rotationDiff < PI$5 * 1.5 && rotationDiff > PI$5 / 2) {\r\n                textAlign = onLeft ? 'left' : 'right';\r\n            }\r\n            else {\r\n                textAlign = onLeft ? 'right' : 'left';\r\n            }\r\n        }\r\n        return {\r\n            rotation: rotationDiff,\r\n            textAlign: textAlign,\r\n            textVerticalAlign: textVerticalAlign\r\n        };\r\n    }\r\n    function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n        if (shouldShowAllLabels(axisModel.axis)) {\r\n            return;\r\n        }\r\n        var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n        var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']);\r\n        labelEls = labelEls || [];\r\n        tickEls = tickEls || [];\r\n        var firstLabel = labelEls[0];\r\n        var nextLabel = labelEls[1];\r\n        var lastLabel = labelEls[labelEls.length - 1];\r\n        var prevLabel = labelEls[labelEls.length - 2];\r\n        var firstTick = tickEls[0];\r\n        var nextTick = tickEls[1];\r\n        var lastTick = tickEls[tickEls.length - 1];\r\n        var prevTick = tickEls[tickEls.length - 2];\r\n        if (showMinLabel === false) {\r\n            ignoreEl(firstLabel);\r\n            ignoreEl(firstTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n            if (showMinLabel) {\r\n                ignoreEl(nextLabel);\r\n                ignoreEl(nextTick);\r\n            }\r\n            else {\r\n                ignoreEl(firstLabel);\r\n                ignoreEl(firstTick);\r\n            }\r\n        }\r\n        if (showMaxLabel === false) {\r\n            ignoreEl(lastLabel);\r\n            ignoreEl(lastTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n            if (showMaxLabel) {\r\n                ignoreEl(prevLabel);\r\n                ignoreEl(prevTick);\r\n            }\r\n            else {\r\n                ignoreEl(lastLabel);\r\n                ignoreEl(lastTick);\r\n            }\r\n        }\r\n    }\r\n    function ignoreEl(el) {\r\n        el && (el.ignore = true);\r\n    }\r\n    function isTwoLabelOverlapped(current, next) {\r\n        var firstRect = current && current.getBoundingRect().clone();\r\n        var nextRect = next && next.getBoundingRect().clone();\r\n        if (!firstRect || !nextRect) {\r\n            return;\r\n        }\r\n        var mRotationBack = identity([]);\r\n        rotate(mRotationBack, mRotationBack, -current.rotation);\r\n        firstRect.applyTransform(mul([], mRotationBack, current.getLocalTransform()));\r\n        nextRect.applyTransform(mul([], mRotationBack, next.getLocalTransform()));\r\n        return firstRect.intersect(nextRect);\r\n    }\r\n    function isNameLocationCenter(nameLocation) {\r\n        return nameLocation === 'middle' || nameLocation === 'center';\r\n    }\r\n    function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n        var tickEls = [];\r\n        var pt1 = [];\r\n        var pt2 = [];\r\n        for (var i = 0; i < ticksCoords.length; i++) {\r\n            var tickCoord = ticksCoords[i].coord;\r\n            pt1[0] = tickCoord;\r\n            pt1[1] = 0;\r\n            pt2[0] = tickCoord;\r\n            pt2[1] = tickEndCoord;\r\n            if (tickTransform) {\r\n                applyTransform(pt1, pt1, tickTransform);\r\n                applyTransform(pt2, pt2, tickTransform);\r\n            }\r\n            var tickEl = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: tickLineStyle,\r\n                z2: 2,\r\n                autoBatch: true,\r\n                silent: true\r\n            });\r\n            tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n            tickEls.push(tickEl);\r\n        }\r\n        return tickEls;\r\n    }\r\n    function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var tickModel = axisModel.getModel('axisTick');\r\n        var shown = tickModel.get('show');\r\n        if (shown === 'auto' && opt.handleAutoShown) {\r\n            shown = opt.handleAutoShown('axisTick');\r\n        }\r\n        if (!shown || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var lineStyleModel = tickModel.getModel('lineStyle');\r\n        var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n        var ticksCoords = axis.getTicksCoords();\r\n        var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }), 'ticks');\r\n        for (var i = 0; i < ticksEls.length; i++) {\r\n            group.add(ticksEls[i]);\r\n        }\r\n        return ticksEls;\r\n    }\r\n    function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n        var axis = axisModel.axis;\r\n        var minorTickModel = axisModel.getModel('minorTick');\r\n        if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var minorTicksCoords = axis.getMinorTicksCoords();\r\n        if (!minorTicksCoords.length) {\r\n            return;\r\n        }\r\n        var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n        var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n        var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }));\r\n        for (var i = 0; i < minorTicksCoords.length; i++) {\r\n            var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n            for (var k = 0; k < minorTicksEls.length; k++) {\r\n                group.add(minorTicksEls[k]);\r\n            }\r\n        }\r\n    }\r\n    function buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n        if (!show || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var labelModel = axisModel.getModel('axisLabel');\r\n        var labelMargin = labelModel.get('margin');\r\n        var labels = axis.getViewLabels();\r\n        var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$5 / 180;\r\n        var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n        var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n        var labelEls = [];\r\n        var silent = AxisBuilder.isLabelSilent(axisModel);\r\n        var triggerEvent = axisModel.get('triggerEvent');\r\n        each(labels, function (labelItem, index) {\r\n            var tickValue = axis.scale.type === 'ordinal'\r\n                ? axis.scale.getRawIndex(labelItem.tickValue)\r\n                : labelItem.tickValue;\r\n            var formattedLabel = labelItem.formattedLabel;\r\n            var rawLabel = labelItem.rawLabel;\r\n            var itemLabelModel = labelModel;\r\n            if (rawCategoryData && rawCategoryData[tickValue]) {\r\n                var rawCategoryItem = rawCategoryData[tickValue];\r\n                if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n                    itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n                }\r\n            }\r\n            var textColor = itemLabelModel.getTextColor()\r\n                || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n            var tickCoord = axis.dataToCoord(tickValue);\r\n            var textEl = new ZRText({\r\n                x: tickCoord,\r\n                y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n                rotation: labelLayout.rotation,\r\n                silent: silent,\r\n                z2: 10,\r\n                style: createTextStyle(itemLabelModel, {\r\n                    text: formattedLabel,\r\n                    align: itemLabelModel.getShallow('align', true)\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: itemLabelModel.getShallow('verticalAlign', true)\r\n                        || itemLabelModel.getShallow('baseline', true)\r\n                        || labelLayout.textVerticalAlign,\r\n                    fill: typeof textColor === 'function'\r\n                        ? textColor(axis.type === 'category'\r\n                            ? rawLabel\r\n                            : axis.type === 'value'\r\n                                ? tickValue + ''\r\n                                : tickValue, index)\r\n                        : textColor\r\n                })\r\n            });\r\n            textEl.anid = 'label_' + tickValue;\r\n            if (triggerEvent) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisLabel';\r\n                eventData.value = rawLabel;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            labelEls.push(textEl);\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        });\r\n        return labelEls;\r\n    }\n\n    function fixValue(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        if (!axisInfo) {\r\n            return;\r\n        }\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        var scale = axisInfo.axis.scale;\r\n        var option = axisPointerModel.option;\r\n        var status = axisPointerModel.get('status');\r\n        var value = axisPointerModel.get('value');\r\n        if (value != null) {\r\n            value = scale.parse(value);\r\n        }\r\n        var useHandle = isHandleTrigger(axisPointerModel);\r\n        if (status == null) {\r\n            option.status = useHandle ? 'show' : 'hide';\r\n        }\r\n        var extent = scale.getExtent().slice();\r\n        extent[0] > extent[1] && extent.reverse();\r\n        if (value == null\r\n            || value > extent[1]) {\r\n            value = extent[1];\r\n        }\r\n        if (value < extent[0]) {\r\n            value = extent[0];\r\n        }\r\n        option.value = value;\r\n        if (useHandle) {\r\n            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\r\n        }\r\n    }\r\n    function getAxisInfo(axisModel) {\r\n        var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n            .coordSysAxesInfo;\r\n        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n    }\r\n    function getAxisPointerModel(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        return axisInfo && axisInfo.axisPointerModel;\r\n    }\r\n    function isHandleTrigger(axisPointerModel) {\r\n        return !!axisPointerModel.get(['handle', 'show']);\r\n    }\r\n    function makeKey(model) {\r\n        return model.type + '||' + model.id;\r\n    }\n\n    var axisPointerClazz = {};\r\n    var AxisView = (function (_super) {\r\n        __extends(AxisView, _super);\r\n        function AxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisView.type;\r\n            return _this;\r\n        }\r\n        AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.axisPointerClass && fixValue(axisModel);\r\n            _super.prototype.render.apply(this, arguments);\r\n            this._doUpdateAxisPointerClass(axisModel, api, true);\r\n        };\r\n        AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\r\n            this._doUpdateAxisPointerClass(axisModel, api, false);\r\n        };\r\n        AxisView.prototype.remove = function (ecModel, api) {\r\n            var axisPointer = this._axisPointer;\r\n            axisPointer && axisPointer.remove(api);\r\n        };\r\n        AxisView.prototype.dispose = function (ecModel, api) {\r\n            this._disposeAxisPointer(api);\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\r\n            var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\r\n            if (!Clazz) {\r\n                return;\r\n            }\r\n            var axisPointerModel = getAxisPointerModel(axisModel);\r\n            axisPointerModel\r\n                ? (this._axisPointer || (this._axisPointer = new Clazz()))\r\n                    .render(axisModel, axisPointerModel, api, forceRender)\r\n                : this._disposeAxisPointer(api);\r\n        };\r\n        AxisView.prototype._disposeAxisPointer = function (api) {\r\n            this._axisPointer && this._axisPointer.dispose(api);\r\n            this._axisPointer = null;\r\n        };\r\n        AxisView.registerAxisPointerClass = function (type, clazz) {\r\n            if (__DEV__) {\r\n                if (axisPointerClazz[type]) {\r\n                    throw new Error('axisPointer ' + type + ' exists');\r\n                }\r\n            }\r\n            axisPointerClazz[type] = clazz;\r\n        };\r\n        AxisView.getAxisPointerClass = function (type) {\r\n            return type && axisPointerClazz[type];\r\n        };\r\n        AxisView.type = 'axis';\r\n        return AxisView;\r\n    }(ComponentView));\n\n    function layout$1(gridModel, axisModel, opt) {\r\n        opt = opt || {};\r\n        var grid = gridModel.coordinateSystem;\r\n        var axis = axisModel.axis;\r\n        var layout = {};\r\n        var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\r\n        var rawAxisPosition = axis.position;\r\n        var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\r\n        var axisDim = axis.dim;\r\n        var rect = grid.getRect();\r\n        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n        var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 };\r\n        var axisOffset = axisModel.get('offset') || 0;\r\n        var posBound = axisDim === 'x'\r\n            ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]\r\n            : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\r\n        if (otherAxisOnZeroOf) {\r\n            var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\r\n            posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\r\n        }\r\n        layout.position = [\r\n            axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],\r\n            axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]\r\n        ];\r\n        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);\r\n        var dirMap = { top: -1, bottom: 1, left: -1, right: 1 };\r\n        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\r\n        layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\r\n        if (axisModel.get(['axisTick', 'inside'])) {\r\n            layout.tickDirection = -layout.tickDirection;\r\n        }\r\n        if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n            layout.labelDirection = -layout.labelDirection;\r\n        }\r\n        var labelRotate = axisModel.get(['axisLabel', 'rotate']);\r\n        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;\r\n        layout.z2 = 1;\r\n        return layout;\r\n    }\r\n    function isCartesian2DSeries(seriesModel) {\r\n        return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n    }\r\n    function findAxisModels(seriesModel) {\r\n        var axisModelMap = {\r\n            xAxisModel: null,\r\n            yAxisModel: null\r\n        };\r\n        each(axisModelMap, function (v, key) {\r\n            var axisType = key.replace(/Model$/, '');\r\n            var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!axisModel) {\r\n                    throw new Error(axisType + ' \"' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\r\n                }\r\n            }\r\n            axisModelMap[key] = axisModel;\r\n        });\r\n        return axisModelMap;\r\n    }\n\n    var inner$5 = makeInner();\r\n    function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\r\n        var axis = axisModel.axis;\r\n        if (axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var splitAreaModel = axisModel.getModel('splitArea');\r\n        var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n        var areaColors = areaStyleModel.get('color');\r\n        var gridRect = gridModel.coordinateSystem.getRect();\r\n        var ticksCoords = axis.getTicksCoords({\r\n            tickModel: splitAreaModel,\r\n            clamp: true\r\n        });\r\n        if (!ticksCoords.length) {\r\n            return;\r\n        }\r\n        var areaColorsLen = areaColors.length;\r\n        var lastSplitAreaColors = inner$5(axisView).splitAreaColors;\r\n        var newSplitAreaColors = createHashMap();\r\n        var colorIndex = 0;\r\n        if (lastSplitAreaColors) {\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\r\n                if (cIndex != null) {\r\n                    colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        var prev = axis.toGlobalCoord(ticksCoords[0].coord);\r\n        var areaStyle = areaStyleModel.getAreaStyle();\r\n        areaColors = isArray(areaColors) ? areaColors : [areaColors];\r\n        for (var i = 1; i < ticksCoords.length; i++) {\r\n            var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n            var x = void 0;\r\n            var y = void 0;\r\n            var width = void 0;\r\n            var height = void 0;\r\n            if (axis.isHorizontal()) {\r\n                x = prev;\r\n                y = gridRect.y;\r\n                width = tickCoord - x;\r\n                height = gridRect.height;\r\n                prev = x + width;\r\n            }\r\n            else {\r\n                x = gridRect.x;\r\n                y = prev;\r\n                width = gridRect.width;\r\n                height = tickCoord - y;\r\n                prev = y + height;\r\n            }\r\n            var tickValue = ticksCoords[i - 1].tickValue;\r\n            tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\r\n            axisGroup.add(new Rect({\r\n                anid: tickValue != null ? 'area_' + tickValue : null,\r\n                shape: {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                },\r\n                style: defaults({\r\n                    fill: areaColors[colorIndex]\r\n                }, areaStyle),\r\n                autoBatch: true,\r\n                silent: true\r\n            }));\r\n            colorIndex = (colorIndex + 1) % areaColorsLen;\r\n        }\r\n        inner$5(axisView).splitAreaColors = newSplitAreaColors;\r\n    }\r\n    function rectCoordAxisHandleRemove(axisView) {\r\n        inner$5(axisView).splitAreaColors = null;\r\n    }\n\n    var axisBuilderAttrs = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs = [\r\n        'splitArea', 'splitLine', 'minorSplitLine'\r\n    ];\r\n    var CartesianAxisView = (function (_super) {\r\n        __extends(CartesianAxisView, _super);\r\n        function CartesianAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianAxisView.type;\r\n            _this.axisPointerClass = 'CartesianAxisPointer';\r\n            return _this;\r\n        }\r\n        CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            this.group.add(this._axisGroup);\r\n            if (!axisModel.get('show')) {\r\n                return;\r\n            }\r\n            var gridModel = axisModel.getCoordSysModel();\r\n            var layout = layout$1(gridModel, axisModel);\r\n            var axisBuilder = new AxisBuilder(axisModel, extend({\r\n                handleAutoShown: function (elementType) {\r\n                    var cartesians = gridModel.coordinateSystem.getCartesians();\r\n                    for (var i = 0; i < cartesians.length; i++) {\r\n                        var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type;\r\n                        if (otherAxisType === 'value' || otherAxisType === 'log') {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    return false;\r\n                }\r\n            }, layout));\r\n            each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\r\n            this._axisGroup.add(axisBuilder.getGroup());\r\n            each(selfBuilderAttrs, function (name) {\r\n                if (axisModel.get([name, 'show'])) {\r\n                    axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\r\n                }\r\n            }, this);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n            _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n        };\r\n        CartesianAxisView.prototype.remove = function () {\r\n            rectCoordAxisHandleRemove(this);\r\n        };\r\n        CartesianAxisView.type = 'cartesianAxis';\r\n        return CartesianAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders = {\r\n        splitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            if (axis.scale.isBlank()) {\r\n                return;\r\n            }\r\n            var splitLineModel = axisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            lineColors = isArray(lineColors) ? lineColors : [lineColors];\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var lineCount = 0;\r\n            var ticksCoords = axis.getTicksCoords({\r\n                tickModel: splitLineModel\r\n            });\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n                if (isHorizontal) {\r\n                    p1[0] = tickCoord;\r\n                    p1[1] = gridRect.y;\r\n                    p2[0] = tickCoord;\r\n                    p2[1] = gridRect.y + gridRect.height;\r\n                }\r\n                else {\r\n                    p1[0] = gridRect.x;\r\n                    p1[1] = tickCoord;\r\n                    p2[0] = gridRect.x + gridRect.width;\r\n                    p2[1] = tickCoord;\r\n                }\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                var tickValue = ticksCoords[i].tickValue;\r\n                axisGroup.add(new Line({\r\n                    anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\r\n                    subPixelOptimize: true,\r\n                    autoBatch: true,\r\n                    shape: {\r\n                        x1: p1[0],\r\n                        y1: p1[1],\r\n                        x2: p2[0],\r\n                        y2: p2[1]\r\n                    },\r\n                    style: defaults({\r\n                        stroke: lineColors[colorIndex]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            var minorSplitLineModel = axisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var minorTicksCoords = axis.getMinorTicksCoords();\r\n            if (!minorTicksCoords.length) {\r\n                return;\r\n            }\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < minorTicksCoords.length; i++) {\r\n                for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n                    var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\r\n                    if (isHorizontal) {\r\n                        p1[0] = tickCoord;\r\n                        p1[1] = gridRect.y;\r\n                        p2[0] = tickCoord;\r\n                        p2[1] = gridRect.y + gridRect.height;\r\n                    }\r\n                    else {\r\n                        p1[0] = gridRect.x;\r\n                        p1[1] = tickCoord;\r\n                        p2[0] = gridRect.x + gridRect.width;\r\n                        p2[1] = tickCoord;\r\n                    }\r\n                    axisGroup.add(new Line({\r\n                        anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\r\n                        subPixelOptimize: true,\r\n                        autoBatch: true,\r\n                        shape: {\r\n                            x1: p1[0],\r\n                            y1: p1[1],\r\n                            x2: p2[0],\r\n                            y2: p2[1]\r\n                        },\r\n                        style: lineStyle,\r\n                        silent: true\r\n                    }));\r\n                }\r\n            }\r\n        },\r\n        splitArea: function (axisView, axisGroup, axisModel, gridModel) {\r\n            rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\r\n        }\r\n    };\r\n    var CartesianXAxisView = (function (_super) {\r\n        __extends(CartesianXAxisView, _super);\r\n        function CartesianXAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianXAxisView.type = 'xAxis';\r\n        return CartesianXAxisView;\r\n    }(CartesianAxisView));\r\n    var CartesianYAxisView = (function (_super) {\r\n        __extends(CartesianYAxisView, _super);\r\n        function CartesianYAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianYAxisView.type = 'yAxis';\r\n        return CartesianYAxisView;\r\n    }(CartesianAxisView));\r\n    ComponentView.registerClass(CartesianXAxisView);\r\n    ComponentView.registerClass(CartesianYAxisView);\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER + 10, {\r\n        getTargetSeries: function (ecModel) {\r\n            var seriesModelMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                isCartesian2DSeries(seriesModel) && seriesModelMap.set(seriesModel.uid, seriesModel);\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            var seriesRecords = [];\r\n            var axisRecordMap = createHashMap();\r\n            prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords);\r\n            calculateFilteredExtent(axisRecordMap, seriesRecords);\r\n            shrinkAxisExtent(axisRecordMap);\r\n        }\r\n    });\r\n    function prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (!isCartesian2DSeries(seriesModel)) {\r\n                return;\r\n            }\r\n            var axesModelMap = findAxisModels(seriesModel);\r\n            var xAxisModel = axesModelMap.xAxisModel;\r\n            var yAxisModel = axesModelMap.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xRawExtentInfo = xAxis.scale.rawExtentInfo;\r\n            var yRawExtentInfo = yAxis.scale.rawExtentInfo;\r\n            var data = seriesModel.getData();\r\n            if ((xRawExtentInfo && xRawExtentInfo.frozen)\r\n                || (yRawExtentInfo && yRawExtentInfo.frozen)) {\r\n                return;\r\n            }\r\n            seriesRecords.push({\r\n                seriesModel: seriesModel,\r\n                xAxisModel: xAxisModel,\r\n                yAxisModel: yAxisModel\r\n            });\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, xAxisModel).condExtent, data, xAxis.dim);\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, yAxisModel).condExtent, data, yAxis.dim);\r\n        });\r\n    }\r\n    function calculateFilteredExtent(axisRecordMap, seriesRecords) {\r\n        each(seriesRecords, function (seriesRecord) {\r\n            var xAxisModel = seriesRecord.xAxisModel;\r\n            var yAxisModel = seriesRecord.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xAxisRecord = prepareAxisRecord(axisRecordMap, xAxisModel);\r\n            var yAxisRecord = prepareAxisRecord(axisRecordMap, yAxisModel);\r\n            xAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(xAxis.scale, xAxisModel, xAxisRecord.condExtent);\r\n            yAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(yAxis.scale, yAxisModel, yAxisRecord.condExtent);\r\n            xAxisRecord.rawExtentResult = xAxisRecord.rawExtentInfo.calculate();\r\n            yAxisRecord.rawExtentResult = yAxisRecord.rawExtentInfo.calculate();\r\n            var data = seriesRecord.seriesModel.getData();\r\n            var condDimMap = {};\r\n            var tarDimMap = {};\r\n            var condAxis;\r\n            var tarAxisRecord;\r\n            function addCondition(axis, axisRecord) {\r\n                var condExtent = axisRecord.condExtent;\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type === 'category'\r\n                    && (condExtent[0] < rawExtentResult.min || rawExtentResult.max < condExtent[1])) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim)) {\r\n                            condDimMap[dataDim] = true;\r\n                            condAxis = axis;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function addTarget(axis, axisRecord) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type !== 'category'\r\n                    && (!rawExtentResult.minFixed || !rawExtentResult.maxFixed)) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim) && !hasOwn(tarDimMap, dataDim)) {\r\n                            tarDimMap[dataDim] = true;\r\n                            tarAxisRecord = axisRecord;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            addCondition(xAxis, xAxisRecord);\r\n            addCondition(yAxis, yAxisRecord);\r\n            addTarget(xAxis, xAxisRecord);\r\n            addTarget(yAxis, yAxisRecord);\r\n            var condDims = keys(condDimMap);\r\n            var tarDims = keys(tarDimMap);\r\n            var tarDimExtents = map(tarDims, function () {\r\n                return initExtent();\r\n            });\r\n            var condDimsLen = condDims.length;\r\n            var tarDimsLen = tarDims.length;\r\n            if (!condDimsLen || !tarDimsLen) {\r\n                return;\r\n            }\r\n            var singleCondDim = condDimsLen === 1 ? condDims[0] : null;\r\n            var singleTarDim = tarDimsLen === 1 ? tarDims[0] : null;\r\n            var dataLen = data.count();\r\n            if (singleCondDim && singleTarDim) {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    var condVal = data.get(singleCondDim, dataIdx);\r\n                    if (condAxis.scale.isInExtentRange(condVal)) {\r\n                        unionExtent(tarDimExtents[0], data.get(singleTarDim, dataIdx));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    for (var j = 0; j < condDimsLen; j++) {\r\n                        var condVal = data.get(condDims[j], dataIdx);\r\n                        if (condAxis.scale.isInExtentRange(condVal)) {\r\n                            for (var k = 0; k < tarDimsLen; k++) {\r\n                                unionExtent(tarDimExtents[k], data.get(tarDims[k], dataIdx));\r\n                            }\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            each(tarDimExtents, function (tarDimExtent, i) {\r\n                var dim = tarDims[i];\r\n                data.setApproximateExtent(tarDimExtent, dim);\r\n                var tarAxisExtent = tarAxisRecord.tarExtent = tarAxisRecord.tarExtent || initExtent();\r\n                unionExtent(tarAxisExtent, tarDimExtent[0]);\r\n                unionExtent(tarAxisExtent, tarDimExtent[1]);\r\n            });\r\n        });\r\n    }\r\n    function shrinkAxisExtent(axisRecordMap) {\r\n        axisRecordMap.each(function (axisRecord) {\r\n            var tarAxisExtent = axisRecord.tarExtent;\r\n            if (tarAxisExtent) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                var rawExtentInfo = axisRecord.rawExtentInfo;\r\n                if (!rawExtentResult.minFixed && tarAxisExtent[0] > rawExtentResult.min) {\r\n                    rawExtentInfo.modifyDataMinMax('min', tarAxisExtent[0]);\r\n                }\r\n                if (!rawExtentResult.maxFixed && tarAxisExtent[1] < rawExtentResult.max) {\r\n                    rawExtentInfo.modifyDataMinMax('max', tarAxisExtent[1]);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function prepareAxisRecord(axisRecordMap, axisModel) {\r\n        return axisRecordMap.get(axisModel.uid)\r\n            || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n    }\r\n    function initExtent() {\r\n        return [Infinity, -Infinity];\r\n    }\r\n    function unionExtent(extent, val) {\r\n        val < extent[0] && (extent[0] = val);\r\n        val > extent[1] && (extent[1] = val);\r\n    }\n\n    var GridModel = (function (_super) {\r\n        __extends(GridModel, _super);\r\n        function GridModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GridModel.type = 'grid';\r\n        GridModel.dependencies = ['xAxis', 'yAxis'];\r\n        GridModel.layoutMode = 'box';\r\n        GridModel.defaultOption = {\r\n            show: false,\r\n            zlevel: 0,\r\n            z: 0,\r\n            left: '10%',\r\n            top: 60,\r\n            right: '10%',\r\n            bottom: 60,\r\n            containLabel: false,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderWidth: 1,\r\n            borderColor: '#ccc'\r\n        };\r\n        return GridModel;\r\n    }(ComponentModel));\n\n    var GridView = (function (_super) {\r\n        __extends(GridView, _super);\r\n        function GridView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'grid';\r\n            return _this;\r\n        }\r\n        GridView.prototype.render = function (gridModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (gridModel.get('show')) {\r\n                this.group.add(new Rect({\r\n                    shape: gridModel.coordinateSystem.getRect(),\r\n                    style: defaults({\r\n                        fill: gridModel.get('backgroundColor')\r\n                    }, gridModel.getItemStyle()),\r\n                    silent: true,\r\n                    z2: -1\r\n                }));\r\n            }\r\n        };\r\n        GridView.type = 'grid';\r\n        return GridView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GridView);\r\n    ComponentModel.registerClass(GridModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option.xAxis && option.yAxis && !option.grid) {\r\n            option.grid = {};\r\n        }\r\n    });\n\n    registerLayout(layoutPoints('line'));\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n    var Cartesian = (function () {\r\n        function Cartesian(name) {\r\n            this.type = 'cartesian';\r\n            this._dimList = [];\r\n            this._axes = {};\r\n            this.name = name || '';\r\n        }\r\n        Cartesian.prototype.getAxis = function (dim) {\r\n            return this._axes[dim];\r\n        };\r\n        Cartesian.prototype.getAxes = function () {\r\n            return map(this._dimList, function (dim) {\r\n                return this._axes[dim];\r\n            }, this);\r\n        };\r\n        Cartesian.prototype.getAxesByScale = function (scaleType) {\r\n            scaleType = scaleType.toLowerCase();\r\n            return filter(this.getAxes(), function (axis) {\r\n                return axis.scale.type === scaleType;\r\n            });\r\n        };\r\n        Cartesian.prototype.addAxis = function (axis) {\r\n            var dim = axis.dim;\r\n            this._axes[dim] = axis;\r\n            this._dimList.push(dim);\r\n        };\r\n        return Cartesian;\r\n    }());\n\n    var cartesian2DDimensions = ['x', 'y'];\r\n    var Cartesian2D = (function (_super) {\r\n        __extends(Cartesian2D, _super);\r\n        function Cartesian2D() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'cartesian2d';\r\n            _this.dimensions = cartesian2DDimensions;\r\n            return _this;\r\n        }\r\n        Cartesian2D.prototype.getBaseAxis = function () {\r\n            return this.getAxesByScale('ordinal')[0]\r\n                || this.getAxesByScale('time')[0]\r\n                || this.getAxis('x');\r\n        };\r\n        Cartesian2D.prototype.containPoint = function (point) {\r\n            var axisX = this.getAxis('x');\r\n            var axisY = this.getAxis('y');\r\n            return axisX.contain(axisX.toLocalCoord(point[0]))\r\n                && axisY.contain(axisY.toLocalCoord(point[1]));\r\n        };\r\n        Cartesian2D.prototype.containData = function (data) {\r\n            return this.getAxis('x').containData(data[0])\r\n                && this.getAxis('y').containData(data[1]);\r\n        };\r\n        Cartesian2D.prototype.dataToPoint = function (data, reserved, out) {\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out = out || [];\r\n            out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\r\n            out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.clampData = function (data, out) {\r\n            var xScale = this.getAxis('x').scale;\r\n            var yScale = this.getAxis('y').scale;\r\n            var xAxisExtent = xScale.getExtent();\r\n            var yAxisExtent = yScale.getExtent();\r\n            var x = xScale.parse(data[0]);\r\n            var y = yScale.parse(data[1]);\r\n            out = out || [];\r\n            out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\r\n            out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.pointToData = function (point, out) {\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out = out || [];\r\n            out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\r\n            out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.getOtherAxis = function (axis) {\r\n            return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\r\n        };\r\n        Cartesian2D.prototype.getArea = function () {\r\n            var xExtent = this.getAxis('x').getGlobalExtent();\r\n            var yExtent = this.getAxis('y').getGlobalExtent();\r\n            var x = Math.min(xExtent[0], xExtent[1]);\r\n            var y = Math.min(yExtent[0], yExtent[1]);\r\n            var width = Math.max(xExtent[0], xExtent[1]) - x;\r\n            var height = Math.max(yExtent[0], yExtent[1]) - y;\r\n            return new BoundingRect(x, y, width, height);\r\n        };\r\n        return Cartesian2D;\r\n    }(Cartesian));\n\n    var inner$6 = makeInner();\r\n    function createAxisLabels(axis) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryLabels(axis)\r\n            : makeRealNumberLabels(axis);\r\n    }\r\n    function createAxisTicks(axis, tickModel) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryTicks(axis, tickModel)\r\n            : { ticks: map(axis.scale.getTicks(), function (tick) { return tick.value; }) };\r\n    }\r\n    function makeCategoryLabels(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        var result = makeCategoryLabelsActually(axis, labelModel);\r\n        return (!labelModel.get('show') || axis.scale.isBlank())\r\n            ? { labels: [], labelCategoryInterval: result.labelCategoryInterval }\r\n            : result;\r\n    }\r\n    function makeCategoryLabelsActually(axis, labelModel) {\r\n        var labelsCache = getListCache(axis, 'labels');\r\n        var optionLabelInterval = getOptionCategoryInterval(labelModel);\r\n        var result = listCacheGet(labelsCache, optionLabelInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var labels;\r\n        var numericLabelInterval;\r\n        if (isFunction(optionLabelInterval)) {\r\n            labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\r\n        }\r\n        else {\r\n            numericLabelInterval = optionLabelInterval === 'auto'\r\n                ? makeAutoCategoryInterval(axis) : optionLabelInterval;\r\n            labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\r\n        }\r\n        return listCacheSet(labelsCache, optionLabelInterval, {\r\n            labels: labels, labelCategoryInterval: numericLabelInterval\r\n        });\r\n    }\r\n    function makeCategoryTicks(axis, tickModel) {\r\n        var ticksCache = getListCache(axis, 'ticks');\r\n        var optionTickInterval = getOptionCategoryInterval(tickModel);\r\n        var result = listCacheGet(ticksCache, optionTickInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var ticks;\r\n        var tickCategoryInterval;\r\n        if (!tickModel.get('show') || axis.scale.isBlank()) {\r\n            ticks = [];\r\n        }\r\n        if (isFunction(optionTickInterval)) {\r\n            ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\r\n        }\r\n        else if (optionTickInterval === 'auto') {\r\n            var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\r\n            tickCategoryInterval = labelsResult.labelCategoryInterval;\r\n            ticks = map(labelsResult.labels, function (labelItem) {\r\n                return labelItem.tickValue;\r\n            });\r\n        }\r\n        else {\r\n            tickCategoryInterval = optionTickInterval;\r\n            ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\r\n        }\r\n        return listCacheSet(ticksCache, optionTickInterval, {\r\n            ticks: ticks, tickCategoryInterval: tickCategoryInterval\r\n        });\r\n    }\r\n    function makeRealNumberLabels(axis) {\r\n        var ticks = axis.scale.getTicks();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        return {\r\n            labels: map(ticks, function (tick, idx) {\r\n                return {\r\n                    formattedLabel: labelFormatter(tick, idx),\r\n                    rawLabel: axis.scale.getLabel(tick),\r\n                    tickValue: tick.value\r\n                };\r\n            })\r\n        };\r\n    }\r\n    function getListCache(axis, prop) {\r\n        return inner$6(axis)[prop] || (inner$6(axis)[prop] = []);\r\n    }\r\n    function listCacheGet(cache, key) {\r\n        for (var i = 0; i < cache.length; i++) {\r\n            if (cache[i].key === key) {\r\n                return cache[i].value;\r\n            }\r\n        }\r\n    }\r\n    function listCacheSet(cache, key, value) {\r\n        cache.push({ key: key, value: value });\r\n        return value;\r\n    }\r\n    function makeAutoCategoryInterval(axis) {\r\n        var result = inner$6(axis).autoInterval;\r\n        return result != null\r\n            ? result\r\n            : (inner$6(axis).autoInterval = axis.calculateCategoryInterval());\r\n    }\r\n    function calculateCategoryInterval(axis) {\r\n        var params = fetchAutoCategoryIntervalCalculationParams(axis);\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var tickCount = ordinalScale.count();\r\n        if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n            return 0;\r\n        }\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.max(1, Math.floor(tickCount / 40));\r\n        }\r\n        var tickValue = ordinalExtent[0];\r\n        var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n        var unitW = Math.abs(unitSpan * Math.cos(rotation));\r\n        var unitH = Math.abs(unitSpan * Math.sin(rotation));\r\n        var maxW = 0;\r\n        var maxH = 0;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            var width = 0;\r\n            var height = 0;\r\n            var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, 'center', 'top');\r\n            width = rect.width * 1.3;\r\n            height = rect.height * 1.3;\r\n            maxW = Math.max(maxW, width, 7);\r\n            maxH = Math.max(maxH, height, 7);\r\n        }\r\n        var dw = maxW / unitW;\r\n        var dh = maxH / unitH;\r\n        isNaN(dw) && (dw = Infinity);\r\n        isNaN(dh) && (dh = Infinity);\r\n        var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\r\n        var cache = inner$6(axis.model);\r\n        var axisExtent = axis.getExtent();\r\n        var lastAutoInterval = cache.lastAutoInterval;\r\n        var lastTickCount = cache.lastTickCount;\r\n        if (lastAutoInterval != null\r\n            && lastTickCount != null\r\n            && Math.abs(lastAutoInterval - interval) <= 1\r\n            && Math.abs(lastTickCount - tickCount) <= 1\r\n            && lastAutoInterval > interval\r\n            && cache.axisExtent0 === axisExtent[0]\r\n            && cache.axisExtent1 === axisExtent[1]) {\r\n            interval = lastAutoInterval;\r\n        }\r\n        else {\r\n            cache.lastTickCount = tickCount;\r\n            cache.lastAutoInterval = interval;\r\n            cache.axisExtent0 = axisExtent[0];\r\n            cache.axisExtent1 = axisExtent[1];\r\n        }\r\n        return interval;\r\n    }\r\n    function fetchAutoCategoryIntervalCalculationParams(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        return {\r\n            axisRotate: axis.getRotate\r\n                ? axis.getRotate()\r\n                : (axis.isHorizontal && !axis.isHorizontal())\r\n                    ? 90\r\n                    : 0,\r\n            labelRotate: labelModel.get('rotate') || 0,\r\n            font: labelModel.getFont()\r\n        };\r\n    }\r\n    function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var labelModel = axis.getLabelModel();\r\n        var result = [];\r\n        var step = Math.max((categoryInterval || 0) + 1, 1);\r\n        var startTick = ordinalExtent[0];\r\n        var tickCount = ordinalScale.count();\r\n        if (startTick !== 0 && step > 1 && tickCount / step > 2) {\r\n            startTick = Math.round(Math.ceil(startTick / step) * step);\r\n        }\r\n        var showAllLabel = shouldShowAllLabels(axis);\r\n        var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\r\n        var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\r\n        if (includeMinLabel && startTick !== ordinalExtent[0]) {\r\n            addItem(ordinalExtent[0]);\r\n        }\r\n        var tickValue = startTick;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            addItem(tickValue);\r\n        }\r\n        if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\r\n            addItem(ordinalExtent[1]);\r\n        }\r\n        function addItem(tickValue) {\r\n            var tickObj = { value: tickValue };\r\n            result.push(onlyTick\r\n                ? tickValue\r\n                : {\r\n                    formattedLabel: labelFormatter(tickObj),\r\n                    rawLabel: ordinalScale.getLabel(tickObj),\r\n                    tickValue: tickValue\r\n                });\r\n        }\r\n        return result;\r\n    }\r\n    function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var ordinalScale = axis.scale;\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var result = [];\r\n        each(ordinalScale.getTicks(), function (tick) {\r\n            var rawLabel = ordinalScale.getLabel(tick);\r\n            var tickValue = tick.value;\r\n            if (categoryInterval(tick.value, rawLabel)) {\r\n                result.push(onlyTick\r\n                    ? tickValue\r\n                    : {\r\n                        formattedLabel: labelFormatter(tick),\r\n                        rawLabel: rawLabel,\r\n                        tickValue: tickValue\r\n                    });\r\n            }\r\n        });\r\n        return result;\r\n    }\n\n    var NORMALIZED_EXTENT = [0, 1];\r\n    var Axis = (function () {\r\n        function Axis(dim, scale, extent) {\r\n            this.onBand = false;\r\n            this.inverse = false;\r\n            this.dim = dim;\r\n            this.scale = scale;\r\n            this._extent = extent || [0, 0];\r\n        }\r\n        Axis.prototype.contain = function (coord) {\r\n            var extent = this._extent;\r\n            var min = Math.min(extent[0], extent[1]);\r\n            var max = Math.max(extent[0], extent[1]);\r\n            return coord >= min && coord <= max;\r\n        };\r\n        Axis.prototype.containData = function (data) {\r\n            return this.scale.contain(data);\r\n        };\r\n        Axis.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Axis.prototype.getPixelPrecision = function (dataExtent) {\r\n            return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\r\n        };\r\n        Axis.prototype.setExtent = function (start, end) {\r\n            var extent = this._extent;\r\n            extent[0] = start;\r\n            extent[1] = end;\r\n        };\r\n        Axis.prototype.dataToCoord = function (data, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            data = scale.normalize(data);\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\r\n        };\r\n        Axis.prototype.coordToData = function (coord, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\r\n            return this.scale.scale(t);\r\n        };\r\n        Axis.prototype.pointToData = function (point, clamp) {\r\n            return;\r\n        };\r\n        Axis.prototype.getTicksCoords = function (opt) {\r\n            opt = opt || {};\r\n            var tickModel = opt.tickModel || this.getTickModel();\r\n            var result = createAxisTicks(this, tickModel);\r\n            var ticks = result.ticks;\r\n            var ticksCoords = map(ticks, function (tickVal) {\r\n                return {\r\n                    coord: this.dataToCoord(this.scale.type === 'ordinal'\r\n                        ? this.scale.getRawIndex(tickVal)\r\n                        : tickVal),\r\n                    tickValue: tickVal\r\n                };\r\n            }, this);\r\n            var alignWithLabel = tickModel.get('alignWithLabel');\r\n            fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\r\n            return ticksCoords;\r\n        };\r\n        Axis.prototype.getMinorTicksCoords = function () {\r\n            if (this.scale.type === 'ordinal') {\r\n                return [];\r\n            }\r\n            var minorTickModel = this.model.getModel('minorTick');\r\n            var splitNumber = minorTickModel.get('splitNumber');\r\n            if (!(splitNumber > 0 && splitNumber < 100)) {\r\n                splitNumber = 5;\r\n            }\r\n            var minorTicks = this.scale.getMinorTicks(splitNumber);\r\n            var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\r\n                return map(minorTicksGroup, function (minorTick) {\r\n                    return {\r\n                        coord: this.dataToCoord(minorTick),\r\n                        tickValue: minorTick\r\n                    };\r\n                }, this);\r\n            }, this);\r\n            return minorTicksCoords;\r\n        };\r\n        Axis.prototype.getViewLabels = function () {\r\n            return createAxisLabels(this).labels;\r\n        };\r\n        Axis.prototype.getLabelModel = function () {\r\n            return this.model.getModel('axisLabel');\r\n        };\r\n        Axis.prototype.getTickModel = function () {\r\n            return this.model.getModel('axisTick');\r\n        };\r\n        Axis.prototype.getBandWidth = function () {\r\n            var axisExtent = this._extent;\r\n            var dataExtent = this.scale.getExtent();\r\n            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);\r\n            len === 0 && (len = 1);\r\n            var size = Math.abs(axisExtent[1] - axisExtent[0]);\r\n            return Math.abs(size) / len;\r\n        };\r\n        Axis.prototype.calculateCategoryInterval = function () {\r\n            return calculateCategoryInterval(this);\r\n        };\r\n        return Axis;\r\n    }());\r\n    function fixExtentWithBands(extent, nTick) {\r\n        var size = extent[1] - extent[0];\r\n        var len = nTick;\r\n        var margin = size / len / 2;\r\n        extent[0] += margin;\r\n        extent[1] -= margin;\r\n    }\r\n    function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\r\n        var ticksLen = ticksCoords.length;\r\n        if (!axis.onBand || alignWithLabel || !ticksLen) {\r\n            return;\r\n        }\r\n        var axisExtent = axis.getExtent();\r\n        var last;\r\n        var diffSize;\r\n        if (ticksLen === 1) {\r\n            ticksCoords[0].coord = axisExtent[0];\r\n            last = ticksCoords[1] = { coord: axisExtent[0] };\r\n        }\r\n        else {\r\n            var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\r\n            var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\r\n            each(ticksCoords, function (ticksItem) {\r\n                ticksItem.coord -= shift_1 / 2;\r\n            });\r\n            var dataExtent = axis.scale.getExtent();\r\n            diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\r\n            last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize };\r\n            ticksCoords.push(last);\r\n        }\r\n        var inverse = axisExtent[0] > axisExtent[1];\r\n        if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\r\n            clamp ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift();\r\n        }\r\n        if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\r\n            ticksCoords.unshift({ coord: axisExtent[0] });\r\n        }\r\n        if (littleThan(axisExtent[1], last.coord)) {\r\n            clamp ? (last.coord = axisExtent[1]) : ticksCoords.pop();\r\n        }\r\n        if (clamp && littleThan(last.coord, axisExtent[1])) {\r\n            ticksCoords.push({ coord: axisExtent[1] });\r\n        }\r\n        function littleThan(a, b) {\r\n            a = round$1(a);\r\n            b = round$1(b);\r\n            return inverse ? a > b : a < b;\r\n        }\r\n    }\n\n    var Axis2D = (function (_super) {\r\n        __extends(Axis2D, _super);\r\n        function Axis2D(dim, scale, coordExtent, axisType, position) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.index = 0;\r\n            _this.type = axisType || 'value';\r\n            _this.position = position || 'bottom';\r\n            return _this;\r\n        }\r\n        Axis2D.prototype.isHorizontal = function () {\r\n            var position = this.position;\r\n            return position === 'top' || position === 'bottom';\r\n        };\r\n        Axis2D.prototype.getGlobalExtent = function (asc) {\r\n            var ret = this.getExtent();\r\n            ret[0] = this.toGlobalCoord(ret[0]);\r\n            ret[1] = this.toGlobalCoord(ret[1]);\r\n            asc && ret[0] > ret[1] && ret.reverse();\r\n            return ret;\r\n        };\r\n        Axis2D.prototype.pointToData = function (point, clamp) {\r\n            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\r\n        };\r\n        Axis2D.prototype.setCategorySortInfo = function (info) {\r\n            if (this.type !== 'category') {\r\n                return false;\r\n            }\r\n            this.model.option.categorySortInfo = info;\r\n            this.scale.setCategorySortInfo(info);\r\n        };\r\n        return Axis2D;\r\n    }(Axis));\n\n    var Grid = (function () {\r\n        function Grid(gridModel, ecModel, api) {\r\n            this.type = 'grid';\r\n            this._coordsMap = {};\r\n            this._coordsList = [];\r\n            this._axesMap = {};\r\n            this._axesList = [];\r\n            this.axisPointerEnabled = true;\r\n            this.dimensions = cartesian2DDimensions;\r\n            this._initCartesian(gridModel, ecModel, api);\r\n            this.model = gridModel;\r\n        }\r\n        Grid.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Grid.prototype.update = function (ecModel, api) {\r\n            var axesMap = this._axesMap;\r\n            this._updateScale(ecModel, this.model);\r\n            each(axesMap.x, function (xAxis) {\r\n                niceScaleExtent(xAxis.scale, xAxis.model);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                niceScaleExtent(yAxis.scale, yAxis.model);\r\n            });\r\n            var onZeroRecords = {};\r\n            each(axesMap.x, function (xAxis) {\r\n                fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\r\n            });\r\n            this.resize(this.model, api);\r\n        };\r\n        Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\r\n            var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._rect = gridRect;\r\n            var axesList = this._axesList;\r\n            adjustAxes();\r\n            if (!ignoreContainLabel && gridModel.get('containLabel')) {\r\n                each(axesList, function (axis) {\r\n                    if (!axis.model.get(['axisLabel', 'inside'])) {\r\n                        var labelUnionRect = estimateLabelUnionRect(axis);\r\n                        if (labelUnionRect) {\r\n                            var dim = axis.isHorizontal() ? 'height' : 'width';\r\n                            var margin = axis.model.get(['axisLabel', 'margin']);\r\n                            gridRect[dim] -= labelUnionRect[dim] + margin;\r\n                            if (axis.position === 'top') {\r\n                                gridRect.y += labelUnionRect.height + margin;\r\n                            }\r\n                            else if (axis.position === 'left') {\r\n                                gridRect.x += labelUnionRect.width + margin;\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n                adjustAxes();\r\n            }\r\n            function adjustAxes() {\r\n                each(axesList, function (axis) {\r\n                    var isHorizontal = axis.isHorizontal();\r\n                    var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\r\n                    var idx = axis.inverse ? 1 : 0;\r\n                    axis.setExtent(extent[idx], extent[1 - idx]);\r\n                    updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getAxis = function (dim, axisIndex) {\r\n            var axesMapOnDim = this._axesMap[dim];\r\n            if (axesMapOnDim != null) {\r\n                return axesMapOnDim[axisIndex || 0];\r\n            }\r\n        };\r\n        Grid.prototype.getAxes = function () {\r\n            return this._axesList.slice();\r\n        };\r\n        Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\r\n            if (xAxisIndex != null && yAxisIndex != null) {\r\n                var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                return this._coordsMap[key];\r\n            }\r\n            if (isObject(xAxisIndex)) {\r\n                yAxisIndex = xAxisIndex.yAxisIndex;\r\n                xAxisIndex = xAxisIndex.xAxisIndex;\r\n            }\r\n            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\r\n                if (coordList[i].getAxis('x').index === xAxisIndex\r\n                    || coordList[i].getAxis('y').index === yAxisIndex) {\r\n                    return coordList[i];\r\n                }\r\n            }\r\n        };\r\n        Grid.prototype.getCartesians = function () {\r\n            return this._coordsList.slice();\r\n        };\r\n        Grid.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.dataToPoint(value)\r\n                : target.axis\r\n                    ? target.axis.toGlobalCoord(target.axis.dataToCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.pointToData(value)\r\n                : target.axis\r\n                    ? target.axis.coordToData(target.axis.toLocalCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype._findConvertTarget = function (finder) {\r\n            var seriesModel = finder.seriesModel;\r\n            var xAxisModel = finder.xAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]);\r\n            var yAxisModel = finder.yAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]);\r\n            var gridModel = finder.gridModel;\r\n            var coordsList = this._coordsList;\r\n            var cartesian;\r\n            var axis;\r\n            if (seriesModel) {\r\n                cartesian = seriesModel.coordinateSystem;\r\n                indexOf(coordsList, cartesian) < 0 && (cartesian = null);\r\n            }\r\n            else if (xAxisModel && yAxisModel) {\r\n                cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            }\r\n            else if (xAxisModel) {\r\n                axis = this.getAxis('x', xAxisModel.componentIndex);\r\n            }\r\n            else if (yAxisModel) {\r\n                axis = this.getAxis('y', yAxisModel.componentIndex);\r\n            }\r\n            else if (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                if (grid === this) {\r\n                    cartesian = this._coordsList[0];\r\n                }\r\n            }\r\n            return { cartesian: cartesian, axis: axis };\r\n        };\r\n        Grid.prototype.containPoint = function (point) {\r\n            var coord = this._coordsList[0];\r\n            if (coord) {\r\n                return coord.containPoint(point);\r\n            }\r\n        };\r\n        Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\r\n            var _this = this;\r\n            var grid = this;\r\n            var axisPositionUsed = {\r\n                left: false,\r\n                right: false,\r\n                top: false,\r\n                bottom: false\r\n            };\r\n            var axesMap = {\r\n                x: {},\r\n                y: {}\r\n            };\r\n            var axesCount = {\r\n                x: 0,\r\n                y: 0\r\n            };\r\n            ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\r\n            ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\r\n            if (!axesCount.x || !axesCount.y) {\r\n                this._axesMap = {};\r\n                this._axesList = [];\r\n                return;\r\n            }\r\n            this._axesMap = axesMap;\r\n            each(axesMap.x, function (xAxis, xAxisIndex) {\r\n                each(axesMap.y, function (yAxis, yAxisIndex) {\r\n                    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                    var cartesian = new Cartesian2D(key);\r\n                    cartesian.master = _this;\r\n                    cartesian.model = gridModel;\r\n                    _this._coordsMap[key] = cartesian;\r\n                    _this._coordsList.push(cartesian);\r\n                    cartesian.addAxis(xAxis);\r\n                    cartesian.addAxis(yAxis);\r\n                });\r\n            });\r\n            function createAxisCreator(dimName) {\r\n                return function (axisModel, idx) {\r\n                    if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var axisPosition = axisModel.get('position');\r\n                    if (dimName === 'x') {\r\n                        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\r\n                            axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (axisPosition !== 'left' && axisPosition !== 'right') {\r\n                            axisPosition = axisPositionUsed.left ? 'right' : 'left';\r\n                        }\r\n                    }\r\n                    axisPositionUsed[axisPosition] = true;\r\n                    var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\r\n                    var isCategory = axis.type === 'category';\r\n                    axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n                    axis.inverse = axisModel.get('inverse');\r\n                    axisModel.axis = axis;\r\n                    axis.model = axisModel;\r\n                    axis.grid = grid;\r\n                    axis.index = idx;\r\n                    grid._axesList.push(axis);\r\n                    axesMap[dimName][idx] = axis;\r\n                    axesCount[dimName]++;\r\n                };\r\n            }\r\n        };\r\n        Grid.prototype._updateScale = function (ecModel, gridModel) {\r\n            each(this._axesList, function (axis) {\r\n                axis.scale.setExtent(Infinity, -Infinity);\r\n                if (axis.type === 'category') {\r\n                    var categorySortInfo = axis.model.get('categorySortInfo');\r\n                    axis.scale.setCategorySortInfo(categorySortInfo);\r\n                }\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (isCartesian2DSeries(seriesModel)) {\r\n                    var axesModelMap = findAxisModels(seriesModel);\r\n                    var xAxisModel = axesModelMap.xAxisModel;\r\n                    var yAxisModel = axesModelMap.yAxisModel;\r\n                    if (!isAxisUsedInTheGrid(xAxisModel, gridModel)\r\n                        || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n                    var data = seriesModel.getData();\r\n                    var xAxis = cartesian.getAxis('x');\r\n                    var yAxis = cartesian.getAxis('y');\r\n                    if (data.type === 'list') {\r\n                        unionExtent(data, xAxis);\r\n                        unionExtent(data, yAxis);\r\n                    }\r\n                }\r\n            }, this);\r\n            function unionExtent(data, axis) {\r\n                each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\r\n                    axis.scale.unionExtentFromData(data, dim);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getTooltipAxes = function (dim) {\r\n            var baseAxes = [];\r\n            var otherAxes = [];\r\n            each(this.getCartesians(), function (cartesian) {\r\n                var baseAxis = (dim != null && dim !== 'auto')\r\n                    ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\r\n                var otherAxis = cartesian.getOtherAxis(baseAxis);\r\n                indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\r\n                indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\r\n            });\r\n            return { baseAxes: baseAxes, otherAxes: otherAxes };\r\n        };\r\n        Grid.create = function (ecModel, api) {\r\n            var grids = [];\r\n            ecModel.eachComponent('grid', function (gridModel, idx) {\r\n                var grid = new Grid(gridModel, ecModel, api);\r\n                grid.name = 'grid_' + idx;\r\n                grid.resize(gridModel, api, true);\r\n                gridModel.coordinateSystem = grid;\r\n                grids.push(grid);\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!isCartesian2DSeries(seriesModel)) {\r\n                    return;\r\n                }\r\n                var axesModelMap = findAxisModels(seriesModel);\r\n                var xAxisModel = axesModelMap.xAxisModel;\r\n                var yAxisModel = axesModelMap.yAxisModel;\r\n                var gridModel = xAxisModel.getCoordSysModel();\r\n                if (__DEV__) {\r\n                    if (!gridModel) {\r\n                        throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\r\n                    }\r\n                    if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\r\n                        throw new Error('xAxis and yAxis must use the same grid');\r\n                    }\r\n                }\r\n                var grid = gridModel.coordinateSystem;\r\n                seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            });\r\n            return grids;\r\n        };\r\n        Grid.dimensions = cartesian2DDimensions;\r\n        return Grid;\r\n    }());\r\n    function isAxisUsedInTheGrid(axisModel, gridModel) {\r\n        return axisModel.getCoordSysModel() === gridModel;\r\n    }\r\n    function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\r\n        axis.getAxesOnZeroOf = function () {\r\n            return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\r\n        };\r\n        var otherAxes = axesMap[otherAxisDim];\r\n        var otherAxisOnZeroOf;\r\n        var axisModel = axis.model;\r\n        var onZero = axisModel.get(['axisLine', 'onZero']);\r\n        var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\r\n        if (!onZero) {\r\n            return;\r\n        }\r\n        if (onZeroAxisIndex != null) {\r\n            if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\r\n                otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\r\n            }\r\n        }\r\n        else {\r\n            for (var idx in otherAxes) {\r\n                if (otherAxes.hasOwnProperty(idx)\r\n                    && canOnZeroToAxis(otherAxes[idx])\r\n                    && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\r\n                    otherAxisOnZeroOf = otherAxes[idx];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        if (otherAxisOnZeroOf) {\r\n            onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\r\n        }\r\n        function getOnZeroRecordKey(axis) {\r\n            return axis.dim + '_' + axis.index;\r\n        }\r\n    }\r\n    function canOnZeroToAxis(axis) {\r\n        return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n    }\r\n    function updateAxisTransform(axis, coordBase) {\r\n        var axisExtent = axis.getExtent();\r\n        var axisExtentSum = axisExtent[0] + axisExtent[1];\r\n        axis.toGlobalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord + coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n        axis.toLocalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord - coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n    }\r\n    CoordinateSystemManager.register('cartesian2d', Grid);\n\n    var BaseBarSeriesModel = (function (_super) {\r\n        __extends(BaseBarSeriesModel, _super);\r\n        function BaseBarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BaseBarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n        };\r\n        BaseBarSeriesModel.prototype.getMarkerPosition = function (value) {\r\n            var coordSys = this.coordinateSystem;\r\n            if (coordSys) {\r\n                var pt = coordSys.dataToPoint(coordSys.clampData(value));\r\n                var data = this.getData();\r\n                var offset = data.getLayout('offset');\r\n                var size = data.getLayout('size');\r\n                var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\r\n                pt[offsetIndex] += offset + size / 2;\r\n                return pt;\r\n            }\r\n            return [NaN, NaN];\r\n        };\r\n        BaseBarSeriesModel.type = 'series.__base_bar__';\r\n        BaseBarSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            barMinHeight: 0,\r\n            barMinAngle: 0,\r\n            large: false,\r\n            largeThreshold: 400,\r\n            progressive: 3e3,\r\n            progressiveChunkMode: 'mod'\r\n        };\r\n        return BaseBarSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(BaseBarSeriesModel);\n\n    var BarSeriesModel = (function (_super) {\r\n        __extends(BarSeriesModel, _super);\r\n        function BarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BarSeriesModel.prototype.getProgressive = function () {\r\n            return this.get('large')\r\n                ? this.get('progressive')\r\n                : false;\r\n        };\r\n        BarSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.get('progressiveThreshold');\r\n            var largeThreshold = this.get('largeThreshold');\r\n            if (largeThreshold > progressiveThreshold) {\r\n                progressiveThreshold = largeThreshold;\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.rect(data.getItemLayout(dataIndex));\r\n        };\r\n        BarSeriesModel.type = 'series.bar';\r\n        BarSeriesModel.dependencies = ['grid', 'polar'];\r\n        BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n            clip: true,\r\n            roundCap: false,\r\n            showBackground: false,\r\n            backgroundStyle: {\r\n                color: 'rgba(180, 180, 180, 0.2)',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderType: 'solid',\r\n                borderRadius: 0,\r\n                shadowBlur: 0,\r\n                shadowColor: null,\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 0,\r\n                opacity: 1\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            },\r\n            realtimeSort: false\r\n        });\r\n        return BarSeriesModel;\r\n    }(BaseBarSeriesModel));\r\n    SeriesModel.registerClass(BarSeriesModel);\n\n    var SausageShape = (function () {\r\n        function SausageShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return SausageShape;\r\n    }());\r\n    var SausagePath = (function (_super) {\r\n        __extends(SausagePath, _super);\r\n        function SausagePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'sausage';\r\n            return _this;\r\n        }\r\n        SausagePath.prototype.getDefaultShape = function () {\r\n            return new SausageShape();\r\n        };\r\n        SausagePath.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r0 = Math.max(shape.r0 || 0, 0);\r\n            var r = Math.max(shape.r, 0);\r\n            var dr = (r - r0) * 0.5;\r\n            var rCenter = r0 + dr;\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitStartX = Math.cos(startAngle);\r\n            var unitStartY = Math.sin(startAngle);\r\n            var unitEndX = Math.cos(endAngle);\r\n            var unitEndY = Math.sin(endAngle);\r\n            var lessThanCircle = clockwise\r\n                ? endAngle - startAngle < Math.PI * 2\r\n                : startAngle - endAngle < Math.PI * 2;\r\n            if (lessThanCircle) {\r\n                ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\r\n                ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\r\n            }\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n            ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\r\n            ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\r\n            if (r0 !== 0) {\r\n                ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n                ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return SausagePath;\r\n    }(Path));\n\n    function isCoordinateSystemType(coordSys, type) {\r\n        return coordSys.type === type;\r\n    }\n\n    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\n    var BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\n    var _eventPos = [0, 0];\r\n    var mathMax$3 = Math.max;\r\n    var mathMin$3 = Math.min;\r\n    function getClipArea(coord, data) {\r\n        var coordSysClipArea;\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            coordSysClipArea = coord.getArea && coord.getArea();\r\n            var baseAxis = coord.getBaseAxis();\r\n            if (baseAxis.type !== 'category' || !baseAxis.onBand) {\r\n                var expandWidth = data.getLayout('bandWidth');\r\n                if (baseAxis.isHorizontal()) {\r\n                    coordSysClipArea.x -= expandWidth;\r\n                    coordSysClipArea.width += expandWidth * 2;\r\n                }\r\n                else {\r\n                    coordSysClipArea.y -= expandWidth;\r\n                    coordSysClipArea.height += expandWidth * 2;\r\n                }\r\n            }\r\n        }\r\n        return coordSysClipArea;\r\n    }\r\n    var BarView = (function (_super) {\r\n        __extends(BarView, _super);\r\n        function BarView() {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = BarView.type;\r\n            _this._isFirstFrame = true;\r\n            return _this;\r\n        }\r\n        BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            this._model = seriesModel;\r\n            this.removeOnRenderedListener(api);\r\n            this._updateDrawMode(seriesModel);\r\n            var coordinateSystemType = seriesModel.get('coordinateSystem');\r\n            var isReorder = payload && payload.type === 'changeAxisOrder';\r\n            if (coordinateSystemType === 'cartesian2d'\r\n                || coordinateSystemType === 'polar') {\r\n                this._isLargeDraw\r\n                    ? this._renderLarge(seriesModel, ecModel, api)\r\n                    : this._renderNormal(seriesModel, ecModel, api, isReorder);\r\n            }\r\n            else if (__DEV__) {\r\n                console.warn('Only cartesian2d and polar supported for bar.');\r\n            }\r\n        };\r\n        BarView.prototype.incrementalPrepareRender = function (seriesModel) {\r\n            this._clear();\r\n            this._updateDrawMode(seriesModel);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype.incrementalRender = function (params, seriesModel) {\r\n            this._incrementalRenderLarge(params, seriesModel);\r\n        };\r\n        BarView.prototype._updateDrawMode = function (seriesModel) {\r\n            var isLargeDraw = seriesModel.pipelineContext.large;\r\n            if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n                this._isLargeDraw = isLargeDraw;\r\n                this._clear();\r\n            }\r\n        };\r\n        BarView.prototype._renderNormal = function (seriesModel, ecModel, api, isReorder) {\r\n            var _this = this;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var coord = seriesModel.coordinateSystem;\r\n            var baseAxis = coord.getBaseAxis();\r\n            var isHorizontalOrRadial;\r\n            if (coord.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n            }\r\n            else if (coord.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n            }\r\n            var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\r\n            var axis2DModel = baseAxis.model;\r\n            var realtimeSort = seriesModel.get('realtimeSort');\r\n            if (realtimeSort && data.count()) {\r\n                if (this._isFirstFrame) {\r\n                    this._initSort(data, isHorizontalOrRadial, baseAxis, api);\r\n                    this._isFirstFrame = false;\r\n                    return;\r\n                }\r\n                else {\r\n                    this._onRendered = function () {\r\n                        var orderMap = function (idx) {\r\n                            var el = data.getItemGraphicEl(idx);\r\n                            if (el) {\r\n                                var shape = el.shape;\r\n                                return (isHorizontalOrRadial ? shape.y + shape.height : shape.x + shape.width) || 0;\r\n                            }\r\n                            else {\r\n                                return 0;\r\n                            }\r\n                        };\r\n                        _this._updateSort(data, orderMap, baseAxis, api);\r\n                    };\r\n                    api.getZr().on('rendered', this._onRendered);\r\n                }\r\n            }\r\n            var needsClip = seriesModel.get('clip', true) || realtimeSort;\r\n            var coordSysClipArea = getClipArea(coord, data);\r\n            group.removeClipPath();\r\n            var roundCap = seriesModel.get('roundCap', true);\r\n            var drawBackground = seriesModel.get('showBackground', true);\r\n            var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n            var barBorderRadius = backgroundModel.get('borderRadius') || 0;\r\n            var bgEls = [];\r\n            var oldBgEls = this._backgroundEls;\r\n            data.diff(oldData)\r\n                .add(function (dataIndex) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var layout = getLayout[coord.type](data, dataIndex, itemModel);\r\n                if (drawBackground) {\r\n                    var bgLayout = getLayout[coord.type](data, dataIndex);\r\n                    var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\r\n                    bgEl.useStyle(backgroundModel.getItemStyle());\r\n                    if (coord.type === 'cartesian2d') {\r\n                        bgEl.setShape('r', barBorderRadius);\r\n                    }\r\n                    bgEls[dataIndex] = bgEl;\r\n                }\r\n                if (!data.hasValue(dataIndex)) {\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                }\r\n                var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\r\n                updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                if (realtimeSort) {\r\n                    el.disableLabelAnimation = true;\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, data, dataIndex, isHorizontalOrRadial, false);\r\n                }\r\n                else if (coord.type === 'cartesian2d') {\r\n                    initProps(el, { shape: layout }, seriesModel, dataIndex);\r\n                }\r\n                data.setItemGraphicEl(dataIndex, el);\r\n                group.add(el);\r\n                el.ignore = isClipped;\r\n            })\r\n                .update(function (newIndex, oldIndex) {\r\n                var itemModel = data.getItemModel(newIndex);\r\n                var layout = getLayout[coord.type](data, newIndex, itemModel);\r\n                if (drawBackground) {\r\n                    var bgEl = oldBgEls[oldIndex];\r\n                    bgEl.useStyle(backgroundModel.getItemStyle());\r\n                    if (coord.type === 'cartesian2d') {\r\n                        bgEl.setShape('r', barBorderRadius);\r\n                    }\r\n                    bgEls[newIndex] = bgEl;\r\n                    var bgLayout = getLayout[coord.type](data, newIndex);\r\n                    var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\r\n                    updateProps(bgEl, { shape: shape }, animationModel, newIndex);\r\n                }\r\n                var el = oldData.getItemGraphicEl(oldIndex);\r\n                if (!data.hasValue(newIndex)) {\r\n                    group.remove(el);\r\n                    el = null;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                    if (isClipped) {\r\n                        group.remove(el);\r\n                    }\r\n                }\r\n                if (!el) {\r\n                    el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\r\n                }\r\n                updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                if (realtimeSort) {\r\n                    el.disableLabelAnimation = true;\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, data, newIndex, isHorizontalOrRadial, true);\r\n                }\r\n                else {\r\n                    updateProps(el, { shape: layout }, seriesModel, newIndex, null);\r\n                }\r\n                data.setItemGraphicEl(newIndex, el);\r\n                el.ignore = isClipped;\r\n                group.add(el);\r\n            })\r\n                .remove(function (dataIndex) {\r\n                var el = oldData.getItemGraphicEl(dataIndex);\r\n                el && removeElementWithFadeOut(el, seriesModel, dataIndex);\r\n            })\r\n                .execute();\r\n            var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\r\n            bgGroup.removeAll();\r\n            for (var i = 0; i < bgEls.length; ++i) {\r\n                bgGroup.add(bgEls[i]);\r\n            }\r\n            group.add(bgGroup);\r\n            this._backgroundEls = bgEls;\r\n            this._data = data;\r\n        };\r\n        BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\r\n            this._clear();\r\n            createLarge(seriesModel, this.group);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n            this._removeBackground();\r\n            createLarge(seriesModel, this.group, true);\r\n        };\r\n        BarView.prototype._updateLargeClip = function (seriesModel) {\r\n            var clipPath = seriesModel.get('clip', true)\r\n                ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n                : null;\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n        };\r\n        BarView.prototype._dataSort = function (data, idxMap) {\r\n            var info = [];\r\n            data.each(function (idx) {\r\n                info.push({\r\n                    mappedValue: idxMap(idx),\r\n                    ordinalNumber: idx,\r\n                    beforeSortIndex: null\r\n                });\r\n            });\r\n            info.sort(function (a, b) {\r\n                return b.mappedValue - a.mappedValue;\r\n            });\r\n            for (var i = 0; i < info.length; ++i) {\r\n                info[info[i].ordinalNumber].beforeSortIndex = i;\r\n            }\r\n            return map(info, function (item) {\r\n                return {\r\n                    ordinalNumber: item.ordinalNumber,\r\n                    beforeSortIndex: item.beforeSortIndex\r\n                };\r\n            });\r\n        };\r\n        BarView.prototype._isDataOrderChanged = function (data, orderMap, oldOrder) {\r\n            var oldCount = oldOrder ? oldOrder.length : 0;\r\n            if (oldCount !== data.count()) {\r\n                return true;\r\n            }\r\n            var lastValue = Number.MAX_VALUE;\r\n            for (var i = 0; i < oldOrder.length; ++i) {\r\n                var value = orderMap(oldOrder[i].ordinalNumber);\r\n                if (value > lastValue) {\r\n                    return true;\r\n                }\r\n                lastValue = value;\r\n            }\r\n            return false;\r\n        };\r\n        BarView.prototype._updateSort = function (data, orderMap, baseAxis, api) {\r\n            var oldOrder = baseAxis.scale.getCategorySortInfo();\r\n            var isOrderChanged = this._isDataOrderChanged(data, orderMap, oldOrder);\r\n            if (isOrderChanged) {\r\n                var newOrder = this._dataSort(data, orderMap);\r\n                var extent = baseAxis.scale.getExtent();\r\n                for (var i = extent[0]; i < extent[1]; ++i) {\r\n                    if (!oldOrder[i] || oldOrder[i].ordinalNumber !== newOrder[i].ordinalNumber) {\r\n                        this.removeOnRenderedListener(api);\r\n                        var action = {\r\n                            type: 'changeAxisOrder',\r\n                            componentType: baseAxis.dim + 'Axis',\r\n                            axisId: baseAxis.index,\r\n                            sortInfo: newOrder\r\n                        };\r\n                        api.dispatchAction(action);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        BarView.prototype._initSort = function (data, isHorizontal, baseAxis, api) {\r\n            var action = {\r\n                type: 'changeAxisOrder',\r\n                componentType: baseAxis.dim + 'Axis',\r\n                axisId: baseAxis.index,\r\n                sortInfo: this._dataSort(data, function (idx) { return parseFloat(data.get(isHorizontal ? 'y' : 'x', idx)) || 0; })\r\n            };\r\n            api.dispatchAction(action);\r\n        };\r\n        BarView.prototype.remove = function (ecModel, api) {\r\n            this._clear(this._model);\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.dispose = function (ecModel, api) {\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.removeOnRenderedListener = function (api) {\r\n            if (this._onRendered) {\r\n                api.getZr().off('rendered', this._onRendered);\r\n                this._onRendered = null;\r\n            }\r\n        };\r\n        BarView.prototype._clear = function (model) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\r\n                this._removeBackground();\r\n                this._backgroundEls = [];\r\n                data.eachItemGraphicEl(function (el) {\r\n                    removeElementWithFadeOut(el, model, getECData(el).dataIndex);\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n            this._data = null;\r\n            this._isFirstFrame = true;\r\n        };\r\n        BarView.prototype._removeBackground = function () {\r\n            this.group.remove(this._backgroundGroup);\r\n            this._backgroundGroup = null;\r\n        };\r\n        BarView.type = 'bar';\r\n        return BarView;\r\n    }(ChartView));\r\n    var clip = {\r\n        cartesian2d: function (coordSysBoundingRect, layout) {\r\n            var signWidth = layout.width < 0 ? -1 : 1;\r\n            var signHeight = layout.height < 0 ? -1 : 1;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            var x = mathMax$3(layout.x, coordSysBoundingRect.x);\r\n            var x2 = mathMin$3(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\r\n            var y = mathMax$3(layout.y, coordSysBoundingRect.y);\r\n            var y2 = mathMin$3(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\r\n            layout.x = x;\r\n            layout.y = y;\r\n            layout.width = x2 - x;\r\n            layout.height = y2 - y;\r\n            var clipped = layout.width < 0 || layout.height < 0;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            return clipped;\r\n        },\r\n        polar: function () {\r\n            return false;\r\n        }\r\n    };\r\n    var elementCreator = {\r\n        cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\r\n            var rect = new Rect({\r\n                shape: extend({}, layout),\r\n                z2: 1\r\n            });\r\n            rect.__dataIndex = newIndex;\r\n            rect.name = 'item';\r\n            if (animationModel) {\r\n                var rectShape = rect.shape;\r\n                var animateProperty = isHorizontal ? 'height' : 'width';\r\n                rectShape[animateProperty] = 0;\r\n            }\r\n            return rect;\r\n        },\r\n        polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\r\n            var clockwise = layout.startAngle < layout.endAngle;\r\n            var ShapeClass = (!isRadial && roundCap) ? SausagePath : Sector;\r\n            var sector = new ShapeClass({\r\n                shape: defaults({ clockwise: clockwise }, layout),\r\n                z2: 1\r\n            });\r\n            sector.name = 'item';\r\n            if (animationModel) {\r\n                var sectorShape = sector.shape;\r\n                var animateProperty = isRadial ? 'r' : 'endAngle';\r\n                var animateTarget = {};\r\n                sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\r\n                animateTarget[animateProperty] = layout[animateProperty];\r\n                (isUpdate ? updateProps : initProps)(sector, {\r\n                    shape: animateTarget\r\n                }, animationModel);\r\n            }\r\n            return sector;\r\n        }\r\n    };\r\n    function updateRealtimeAnimation(seriesModel, axisModel, animationModel, el, layout, data, newIndex, isHorizontal, isUpdate) {\r\n        if (animationModel || axisModel) {\r\n            var seriesTarget = void 0;\r\n            var axisTarget = void 0;\r\n            if (isHorizontal) {\r\n                axisTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n                seriesTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n            }\r\n            else {\r\n                axisTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n                seriesTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n            }\r\n            (isUpdate ? updateProps : initProps)(el, {\r\n                shape: seriesTarget\r\n            }, seriesModel, newIndex, null);\r\n            (isUpdate ? updateProps : initProps)(el, {\r\n                shape: axisTarget\r\n            }, axisModel, newIndex);\r\n            var defaultTextGetter = function (values) {\r\n                return getDefaultLabel(seriesModel.getData(), newIndex, values);\r\n            };\r\n            var labelModel = seriesModel.getModel('label');\r\n            (isUpdate ? updateLabel : initLabel)(el, data, newIndex, labelModel, seriesModel, animationModel, defaultTextGetter);\r\n        }\r\n    }\r\n    var getLayout = {\r\n        cartesian2d: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0;\r\n            var signX = layout.width > 0 ? 1 : -1;\r\n            var signY = layout.height > 0 ? 1 : -1;\r\n            return {\r\n                x: layout.x + signX * fixedLineWidth / 2,\r\n                y: layout.y + signY * fixedLineWidth / 2,\r\n                width: layout.width - signX * fixedLineWidth,\r\n                height: layout.height - signY * fixedLineWidth\r\n            };\r\n        },\r\n        polar: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            return {\r\n                cx: layout.cx,\r\n                cy: layout.cy,\r\n                r0: layout.r0,\r\n                r: layout.r,\r\n                startAngle: layout.startAngle,\r\n                endAngle: layout.endAngle\r\n            };\r\n        }\r\n    };\r\n    function isZeroOnPolar(layout) {\r\n        return layout.startAngle != null\r\n            && layout.endAngle != null\r\n            && layout.startAngle === layout.endAngle;\r\n    }\r\n    function updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\r\n        var style = data.getItemVisual(dataIndex, 'style');\r\n        if (!isPolar) {\r\n            el.setShape('r', itemModel.get(BAR_BORDER_RADIUS_QUERY) || 0);\r\n        }\r\n        el.useStyle(style);\r\n        el.ignore = isZeroOnPolar(layout);\r\n        var cursorStyle = itemModel.getShallow('cursor');\r\n        cursorStyle && el.attr('cursor', cursorStyle);\r\n        if (!isPolar) {\r\n            var labelPositionOutside = isHorizontal\r\n                ? (layout.height > 0 ? 'bottom' : 'top')\r\n                : (layout.width > 0 ? 'left' : 'right');\r\n            setLabelStyle(el, getLabelStatesModels(itemModel), {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: dataIndex,\r\n                defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\r\n                inheritColor: style.fill,\r\n                defaultOutsidePosition: labelPositionOutside\r\n            });\r\n        }\r\n        var emphasisModel = itemModel.getModel(['emphasis']);\r\n        enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        setStatesStylesFromModel(el, itemModel);\r\n        if (isZeroOnPolar(layout)) {\r\n            each(el.states, function (state) {\r\n                if (state.style) {\r\n                    state.style.fill = state.style.stroke = 'none';\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function getLineWidth(itemModel, rawLayout) {\r\n        var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\r\n        var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\r\n        var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\r\n        return Math.min(lineWidth, width, height);\r\n    }\r\n    var LagePathShape = (function () {\r\n        function LagePathShape() {\r\n        }\r\n        return LagePathShape;\r\n    }());\r\n    var LargePath = (function (_super) {\r\n        __extends(LargePath, _super);\r\n        function LargePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'largeBar';\r\n            return _this;\r\n        }\r\n        LargePath.prototype.getDefaultShape = function () {\r\n            return new LagePathShape();\r\n        };\r\n        LargePath.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var startPoint = this.__startPoint;\r\n            var baseDimIdx = this.__baseDimIdx;\r\n            for (var i = 0; i < points.length; i += 2) {\r\n                startPoint[baseDimIdx] = points[i + baseDimIdx];\r\n                ctx.moveTo(startPoint[0], startPoint[1]);\r\n                ctx.lineTo(points[i], points[i + 1]);\r\n            }\r\n        };\r\n        return LargePath;\r\n    }(Path));\r\n    function createLarge(seriesModel, group, incremental) {\r\n        var data = seriesModel.getData();\r\n        var startPoint = [];\r\n        var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\r\n        startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\r\n        var largeDataIndices = data.getLayout('largeDataIndices');\r\n        var barWidth = data.getLayout('barWidth');\r\n        var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n        var drawBackground = seriesModel.get('showBackground', true);\r\n        if (drawBackground) {\r\n            var points = data.getLayout('largeBackgroundPoints');\r\n            var backgroundStartPoint = [];\r\n            backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\r\n            var bgEl = new LargePath({\r\n                shape: { points: points },\r\n                incremental: !!incremental,\r\n                silent: true,\r\n                z2: 0\r\n            });\r\n            bgEl.__startPoint = backgroundStartPoint;\r\n            bgEl.__baseDimIdx = baseDimIdx;\r\n            bgEl.__largeDataIndices = largeDataIndices;\r\n            bgEl.__barWidth = barWidth;\r\n            setLargeBackgroundStyle(bgEl, backgroundModel, data);\r\n            group.add(bgEl);\r\n        }\r\n        var el = new LargePath({\r\n            shape: { points: data.getLayout('largePoints') },\r\n            incremental: !!incremental\r\n        });\r\n        el.__startPoint = startPoint;\r\n        el.__baseDimIdx = baseDimIdx;\r\n        el.__largeDataIndices = largeDataIndices;\r\n        el.__barWidth = barWidth;\r\n        group.add(el);\r\n        setLargeStyle(el, seriesModel, data);\r\n        getECData(el).seriesIndex = seriesModel.seriesIndex;\r\n        if (!seriesModel.get('silent')) {\r\n            el.on('mousedown', largePathUpdateDataIndex);\r\n            el.on('mousemove', largePathUpdateDataIndex);\r\n        }\r\n    }\r\n    var largePathUpdateDataIndex = throttle(function (event) {\r\n        var largePath = this;\r\n        var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\r\n        getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\r\n    }, 30, false);\r\n    function largePathFindDataIndex(largePath, x, y) {\r\n        var baseDimIdx = largePath.__baseDimIdx;\r\n        var valueDimIdx = 1 - baseDimIdx;\r\n        var points = largePath.shape.points;\r\n        var largeDataIndices = largePath.__largeDataIndices;\r\n        var barWidthHalf = Math.abs(largePath.__barWidth / 2);\r\n        var startValueVal = largePath.__startPoint[valueDimIdx];\r\n        _eventPos[0] = x;\r\n        _eventPos[1] = y;\r\n        var pointerBaseVal = _eventPos[baseDimIdx];\r\n        var pointerValueVal = _eventPos[1 - baseDimIdx];\r\n        var baseLowerBound = pointerBaseVal - barWidthHalf;\r\n        var baseUpperBound = pointerBaseVal + barWidthHalf;\r\n        for (var i = 0, len = points.length / 2; i < len; i++) {\r\n            var ii = i * 2;\r\n            var barBaseVal = points[ii + baseDimIdx];\r\n            var barValueVal = points[ii + valueDimIdx];\r\n            if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound\r\n                && (startValueVal <= barValueVal\r\n                    ? (pointerValueVal >= startValueVal && pointerValueVal <= barValueVal)\r\n                    : (pointerValueVal >= barValueVal && pointerValueVal <= startValueVal))) {\r\n                return largeDataIndices[i];\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function setLargeStyle(el, seriesModel, data) {\r\n        var globalStyle = data.getVisual('style');\r\n        el.useStyle(extend({}, globalStyle));\r\n        el.style.fill = null;\r\n        el.style.stroke = globalStyle.fill;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function setLargeBackgroundStyle(el, backgroundModel, data) {\r\n        var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\r\n        var itemStyle = backgroundModel.getItemStyle();\r\n        el.useStyle(itemStyle);\r\n        el.style.fill = null;\r\n        el.style.stroke = borderColor;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function createBackgroundShape(isHorizontalOrRadial, layout, coord) {\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var rectShape = layout;\r\n            var coordLayout = coord.getArea();\r\n            return {\r\n                x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\r\n                y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\r\n                width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\r\n                height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\r\n            };\r\n        }\r\n        else {\r\n            var coordLayout = coord.getArea();\r\n            var sectorShape = layout;\r\n            return {\r\n                cx: coordLayout.cx,\r\n                cy: coordLayout.cy,\r\n                r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\r\n                r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\r\n                startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\r\n                endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\r\n            };\r\n        }\r\n    }\r\n    function createBackgroundEl(coord, isHorizontalOrRadial, layout) {\r\n        var ElementClz = coord.type === 'polar' ? Sector : Rect;\r\n        return new ElementClz({\r\n            shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\r\n            silent: true,\r\n            z2: 0\r\n        });\r\n    }\r\n    ChartView.registerClass(BarView);\n\n    registerAction({\r\n        type: 'changeAxisOrder',\r\n        event: 'changeAxisOrder',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        var componentType = payload.componentType || 'series';\r\n        ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n            if (payload.sortInfo) {\r\n                componentModel.axis.setCategorySortInfo(payload.sortInfo);\r\n            }\r\n        });\r\n    });\n\n    registerLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\n    registerLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\n    registerVisual({\r\n        seriesType: 'bar',\r\n        reset: function (seriesModel) {\r\n            seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n        }\r\n    });\n\n    function createListSimply (seriesModel, opt, nameList) {\r\n        opt = isArray(opt) && { coordDimensions: opt } || extend({}, opt);\r\n        var source = seriesModel.getSource();\r\n        var dimensionsInfo = createDimensions(source, opt);\r\n        var list = new List(dimensionsInfo, seriesModel);\r\n        list.initData(source, nameList);\r\n        return list;\r\n    }\n\n    var LegendVisualProvider = (function () {\r\n        function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\r\n            this._getDataWithEncodedVisual = getDataWithEncodedVisual;\r\n            this._getRawData = getRawData;\r\n        }\r\n        LegendVisualProvider.prototype.getAllNames = function () {\r\n            var rawData = this._getRawData();\r\n            return rawData.mapArray(rawData.getName);\r\n        };\r\n        LegendVisualProvider.prototype.containName = function (name) {\r\n            var rawData = this._getRawData();\r\n            return rawData.indexOfName(name) >= 0;\r\n        };\r\n        LegendVisualProvider.prototype.indexOfName = function (name) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.indexOfName(name);\r\n        };\r\n        LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.getItemVisual(dataIndex, key);\r\n        };\r\n        return LegendVisualProvider;\r\n    }());\n\n    var PieSeriesModel = (function (_super) {\r\n        __extends(PieSeriesModel, _super);\r\n        function PieSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        PieSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n            this._defaultLabelLine(option);\r\n        };\r\n        PieSeriesModel.prototype.mergeOption = function () {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n        };\r\n        PieSeriesModel.prototype.getInitialData = function () {\r\n            return createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n        };\r\n        PieSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var data = this.getData();\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n            var valueList = [];\r\n            data.each(data.mapDimension('value'), function (value) {\r\n                valueList.push(value);\r\n            });\r\n            params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\r\n            params.$vars.push('percent');\r\n            return params;\r\n        };\r\n        PieSeriesModel.prototype._defaultLabelLine = function (option) {\r\n            defaultEmphasis(option, 'labelLine', ['show']);\r\n            var labelLineNormalOpt = option.labelLine;\r\n            var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n            labelLineNormalOpt.show = labelLineNormalOpt.show\r\n                && option.label.show;\r\n            labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n                && option.emphasis.label.show;\r\n        };\r\n        PieSeriesModel.type = 'series.pie';\r\n        PieSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            center: ['50%', '50%'],\r\n            radius: [0, '75%'],\r\n            clockwise: true,\r\n            startAngle: 90,\r\n            minAngle: 0,\r\n            minShowLabelAngle: 0,\r\n            selectedOffset: 10,\r\n            percentPrecision: 2,\r\n            stillShowZeroSum: true,\r\n            left: 0,\r\n            top: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            width: null,\r\n            height: null,\r\n            label: {\r\n                rotate: 0,\r\n                show: true,\r\n                overflow: 'truncate',\r\n                position: 'outer',\r\n                alignTo: 'none',\r\n                edgeDistance: '25%',\r\n                bleedMargin: 10,\r\n                distanceToLabelLine: 5\r\n            },\r\n            labelLine: {\r\n                show: true,\r\n                length: 15,\r\n                length2: 15,\r\n                smooth: false,\r\n                minTurnAngle: 90,\r\n                maxSurfaceAngle: 90,\r\n                lineStyle: {\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 1\r\n            },\r\n            labelLayout: {\r\n                hideOverlap: true\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                scaleSize: 5\r\n            },\r\n            avoidLabelOverlap: true,\r\n            animationType: 'expansion',\r\n            animationDuration: 1000,\r\n            animationTypeUpdate: 'transition',\r\n            animationEasingUpdate: 'cubicInOut',\r\n            animationDurationUpdate: 500,\r\n            animationEasing: 'cubicInOut'\r\n        };\r\n        return PieSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(PieSeriesModel);\n\n    var RADIAN = Math.PI / 180;\r\n    function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\r\n        if (list.length < 2) {\r\n            return;\r\n        }\r\n        function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\r\n            var rB = semi.rB;\r\n            var rB2 = rB * rB;\r\n            for (var i = 0; i < semi.list.length; i++) {\r\n                var item = semi.list[i];\r\n                var dy = Math.abs(item.label.y - cy);\r\n                var rA = r + item.len;\r\n                var rA2 = rA * rA;\r\n                var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\r\n                item.label.x = cx + (dx + item.len2) * dir;\r\n            }\r\n        }\r\n        function recalculateX(items) {\r\n            var topSemi = { list: [], maxY: 0 };\r\n            var bottomSemi = { list: [], maxY: 0 };\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (items[i].labelAlignTo !== 'none') {\r\n                    continue;\r\n                }\r\n                var item = items[i];\r\n                var semi = item.label.y > cy ? bottomSemi : topSemi;\r\n                var dy = Math.abs(item.label.y - cy);\r\n                if (dy > semi.maxY) {\r\n                    var dx = item.label.x - cx - item.len2 * dir;\r\n                    var rA = r + item.len;\r\n                    var rB = dx < rA\r\n                        ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA))\r\n                        : rA;\r\n                    semi.rB = rB;\r\n                    semi.maxY = dy;\r\n                }\r\n                semi.list.push(item);\r\n            }\r\n            recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\r\n            recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\r\n        }\r\n        var len = list.length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\r\n                var dx = list[i].label.x - farthestX;\r\n                list[i].linePoints[1][0] += dx;\r\n                list[i].label.x = farthestX;\r\n            }\r\n        }\r\n        if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\r\n            recalculateX(list);\r\n        }\r\n    }\r\n    function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\r\n        var leftList = [];\r\n        var rightList = [];\r\n        var leftmostX = Number.MAX_VALUE;\r\n        var rightmostX = -Number.MAX_VALUE;\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var label = labelLayoutList[i].label;\r\n            if (isPositionCenter(labelLayoutList[i])) {\r\n                continue;\r\n            }\r\n            if (label.x < cx) {\r\n                leftmostX = Math.min(leftmostX, label.x);\r\n                leftList.push(labelLayoutList[i]);\r\n            }\r\n            else {\r\n                rightmostX = Math.max(rightmostX, label.x);\r\n                rightList.push(labelLayoutList[i]);\r\n            }\r\n        }\r\n        adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\r\n        adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            if (isPositionCenter(layout)) {\r\n                continue;\r\n            }\r\n            var linePoints = layout.linePoints;\r\n            if (linePoints) {\r\n                var isAlignToEdge = layout.labelAlignTo === 'edge';\r\n                var realTextWidth = layout.rect.width;\r\n                var targetTextWidth = void 0;\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = linePoints[2][0] - layout.labelDistance\r\n                            - viewLeft - layout.edgeDistance;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - layout.edgeDistance\r\n                            - linePoints[2][0] - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = label.x - viewLeft - layout.bleedMargin;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\r\n                    }\r\n                }\r\n                if (targetTextWidth < layout.rect.width) {\r\n                    layout.label.style.width = targetTextWidth;\r\n                    if (layout.labelAlignTo === 'edge') {\r\n                        realTextWidth = targetTextWidth;\r\n                    }\r\n                }\r\n                var dist = linePoints[1][0] - linePoints[2][0];\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance\r\n                            - realTextWidth - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = label.x + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = label.x - layout.labelDistance;\r\n                    }\r\n                    linePoints[1][0] = linePoints[2][0] + dist;\r\n                }\r\n                linePoints[1][1] = linePoints[2][1] = label.y;\r\n            }\r\n        }\r\n    }\r\n    function isPositionCenter(sectorShape) {\r\n        return sectorShape.position === 'center';\r\n    }\r\n    function labelLayout (seriesModel) {\r\n        var data = seriesModel.getData();\r\n        var labelLayoutList = [];\r\n        var cx;\r\n        var cy;\r\n        var hasLabelRotate = false;\r\n        var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\r\n        var viewRect = data.getLayout('viewRect');\r\n        var r = data.getLayout('r');\r\n        var viewWidth = viewRect.width;\r\n        var viewLeft = viewRect.x;\r\n        var viewTop = viewRect.y;\r\n        var viewHeight = viewRect.height;\r\n        function setNotShow(el) {\r\n            el.ignore = true;\r\n        }\r\n        data.each(function (idx) {\r\n            var sector = data.getItemGraphicEl(idx);\r\n            var sectorShape = sector.shape;\r\n            var label = sector.getTextContent();\r\n            var labelLine = sector.getTextGuideLine();\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\r\n            var labelDistance = labelModel.get('distanceToLabelLine');\r\n            var labelAlignTo = labelModel.get('alignTo');\r\n            var edgeDistance = parsePercent$2(labelModel.get('edgeDistance'), viewWidth);\r\n            var bleedMargin = labelModel.get('bleedMargin');\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var labelLineLen = labelLineModel.get('length');\r\n            labelLineLen = parsePercent$2(labelLineLen, viewWidth);\r\n            var labelLineLen2 = labelLineModel.get('length2');\r\n            labelLineLen2 = parsePercent$2(labelLineLen2, viewWidth);\r\n            if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\r\n                each(label.states, setNotShow);\r\n                label.ignore = true;\r\n                return;\r\n            }\r\n            var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\r\n            var nx = Math.cos(midAngle);\r\n            var ny = Math.sin(midAngle);\r\n            var textX;\r\n            var textY;\r\n            var linePoints;\r\n            var textAlign;\r\n            cx = sectorShape.cx;\r\n            cy = sectorShape.cy;\r\n            var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\r\n            if (labelPosition === 'center') {\r\n                textX = sectorShape.cx;\r\n                textY = sectorShape.cy;\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\r\n                var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\r\n                textX = x1 + nx * 3;\r\n                textY = y1 + ny * 3;\r\n                if (!isLabelInside) {\r\n                    var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\r\n                    var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\r\n                    var x3 = x2 + ((nx < 0 ? -1 : 1) * labelLineLen2);\r\n                    var y3 = y2;\r\n                    if (labelAlignTo === 'edge') {\r\n                        textX = nx < 0\r\n                            ? viewLeft + edgeDistance\r\n                            : viewLeft + viewWidth - edgeDistance;\r\n                    }\r\n                    else {\r\n                        textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\r\n                    }\r\n                    textY = y3;\r\n                    linePoints = [[x1, y1], [x2, y2], [x3, y3]];\r\n                }\r\n                textAlign = isLabelInside\r\n                    ? 'center'\r\n                    : (labelAlignTo === 'edge'\r\n                        ? (nx > 0 ? 'right' : 'left')\r\n                        : (nx > 0 ? 'left' : 'right'));\r\n            }\r\n            var labelRotate;\r\n            var rotate = labelModel.get('rotate');\r\n            if (typeof rotate === 'number') {\r\n                labelRotate = rotate * (Math.PI / 180);\r\n            }\r\n            else {\r\n                labelRotate = rotate\r\n                    ? (nx < 0 ? -midAngle + Math.PI : -midAngle)\r\n                    : 0;\r\n            }\r\n            hasLabelRotate = !!labelRotate;\r\n            label.x = textX;\r\n            label.y = textY;\r\n            label.rotation = labelRotate;\r\n            label.setStyle({\r\n                verticalAlign: 'middle'\r\n            });\r\n            if (!isLabelInside) {\r\n                var textRect = label.getBoundingRect().clone();\r\n                textRect.applyTransform(label.getComputedTransform());\r\n                var margin = (label.style.margin || 0) + 2.1;\r\n                textRect.x -= margin / 2;\r\n                textRect.y -= margin / 2;\r\n                textRect.width += margin;\r\n                textRect.height += margin;\r\n                labelLayoutList.push({\r\n                    label: label,\r\n                    labelLine: labelLine,\r\n                    position: labelPosition,\r\n                    len: labelLineLen,\r\n                    len2: labelLineLen2,\r\n                    minTurnAngle: labelLineModel.get('minTurnAngle'),\r\n                    maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\r\n                    surfaceNormal: new Point(nx, ny),\r\n                    linePoints: linePoints,\r\n                    textAlign: textAlign,\r\n                    labelDistance: labelDistance,\r\n                    labelAlignTo: labelAlignTo,\r\n                    edgeDistance: edgeDistance,\r\n                    bleedMargin: bleedMargin,\r\n                    rect: textRect\r\n                });\r\n            }\r\n            else {\r\n                label.setStyle({\r\n                    align: textAlign\r\n                });\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            sector.setTextConfig({\r\n                inside: isLabelInside\r\n            });\r\n        });\r\n        if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\r\n            avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\r\n        }\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            var labelLine = layout.labelLine;\r\n            var notShowLabel = isNaN(label.x) || isNaN(label.y);\r\n            if (label) {\r\n                label.setStyle({\r\n                    align: layout.textAlign\r\n                });\r\n                if (notShowLabel) {\r\n                    each(label.states, setNotShow);\r\n                    label.ignore = true;\r\n                }\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            if (labelLine) {\r\n                var linePoints = layout.linePoints;\r\n                if (notShowLabel || !linePoints) {\r\n                    each(labelLine.states, setNotShow);\r\n                    labelLine.ignore = true;\r\n                }\r\n                else {\r\n                    limitTurnAngle(linePoints, layout.minTurnAngle);\r\n                    limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\r\n                    labelLine.setShape({ points: linePoints });\r\n                    label.__hostTarget.textGuideLineConfig = {\r\n                        anchor: new Point(linePoints[0][0], linePoints[0][1])\r\n                    };\r\n                }\r\n            }\r\n        }\r\n    }\n\n    var PiePiece = (function (_super) {\r\n        __extends(PiePiece, _super);\r\n        function PiePiece(data, idx, startAngle) {\r\n            var _this = _super.call(this) || this;\r\n            _this.z2 = 2;\r\n            var polyline = new Polyline();\r\n            var text = new ZRText();\r\n            _this.setTextGuideLine(polyline);\r\n            _this.setTextContent(text);\r\n            _this.updateData(data, idx, startAngle, true);\r\n            return _this;\r\n        }\r\n        PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\r\n            var sector = this;\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var layout = data.getItemLayout(idx);\r\n            var sectorShape = extend({}, layout);\r\n            if (firstCreate) {\r\n                sector.setShape(sectorShape);\r\n                var animationType = seriesModel.getShallow('animationType');\r\n                if (animationType === 'scale') {\r\n                    sector.shape.r = layout.r0;\r\n                    initProps(sector, {\r\n                        shape: {\r\n                            r: layout.r\r\n                        }\r\n                    }, seriesModel, idx);\r\n                }\r\n                else {\r\n                    if (startAngle != null) {\r\n                        sector.setShape({ startAngle: startAngle, endAngle: startAngle });\r\n                        initProps(sector, {\r\n                            shape: {\r\n                                startAngle: layout.startAngle,\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                    else {\r\n                        sector.shape.endAngle = layout.startAngle;\r\n                        updateProps(sector, {\r\n                            shape: {\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                updateProps(sector, {\r\n                    shape: sectorShape\r\n                }, seriesModel, idx);\r\n            }\r\n            sector.useStyle(data.getItemVisual(idx, 'style'));\r\n            setStatesStylesFromModel(sector, itemModel);\r\n            var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n            var offset = seriesModel.get('selectedOffset');\r\n            var dx = Math.cos(midAngle) * offset;\r\n            var dy = Math.sin(midAngle) * offset;\r\n            var cursorStyle = itemModel.getShallow('cursor');\r\n            cursorStyle && sector.attr('cursor', cursorStyle);\r\n            this._updateLabel(seriesModel, data, idx);\r\n            sector.ensureState('emphasis').shape = {\r\n                r: layout.r + (emphasisModel.get('scale')\r\n                    ? (emphasisModel.get('scaleSize') || 0) : 0)\r\n            };\r\n            extend(sector.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            var labelLine = sector.getTextGuideLine();\r\n            var labelText = sector.getTextContent();\r\n            extend(labelLine.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            extend(labelText.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        };\r\n        PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\r\n            var sector = this;\r\n            var labelText = sector.getTextContent();\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelTextEmphasisState = labelText.ensureState('emphasis');\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelHoverModel = itemModel.getModel(['emphasis', 'label']);\r\n            var style = data.getItemVisual(idx, 'style');\r\n            var visualColor = style && style.fill;\r\n            setLabelStyle(sector, getLabelStatesModels(itemModel), {\r\n                labelFetcher: data.hostModel,\r\n                labelDataIndex: idx,\r\n                inheritColor: visualColor,\r\n                defaultText: seriesModel.getFormattedLabel(idx, 'normal')\r\n                    || data.getName(idx)\r\n            }, { normal: {\r\n                    opacity: style && style.opacity\r\n                } });\r\n            sector.setTextConfig({\r\n                position: null,\r\n                rotation: null\r\n            });\r\n            labelText.attr({\r\n                z2: 10\r\n            });\r\n            labelText.ignore = !labelModel.get('show');\r\n            labelTextEmphasisState.ignore = !labelHoverModel.get('show');\r\n            setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\r\n                stroke: visualColor,\r\n                opacity: style && style.opacity\r\n            });\r\n        };\r\n        return PiePiece;\r\n    }(Sector));\r\n    var PieView = (function (_super) {\r\n        __extends(PieView, _super);\r\n        function PieView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.ignoreLabelLineUpdate = true;\r\n            return _this;\r\n        }\r\n        PieView.prototype.init = function () {\r\n            var sectorGroup = new Group();\r\n            this._sectorGroup = sectorGroup;\r\n        };\r\n        PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            var startAngle;\r\n            if (!oldData && data.count() > 0) {\r\n                var shape = data.getItemLayout(0);\r\n                for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\r\n                    shape = data.getItemLayout(s);\r\n                }\r\n                if (shape) {\r\n                    startAngle = shape.startAngle;\r\n                }\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var piePiece = new PiePiece(data, idx, startAngle);\r\n                data.setItemGraphicEl(idx, piePiece);\r\n                group.add(piePiece);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var piePiece = oldData.getItemGraphicEl(oldIdx);\r\n                piePiece.updateData(data, newIdx, startAngle);\r\n                piePiece.off('click');\r\n                group.add(piePiece);\r\n                data.setItemGraphicEl(newIdx, piePiece);\r\n            })\r\n                .remove(function (idx) {\r\n                var piePiece = oldData.getItemGraphicEl(idx);\r\n                removeElementWithFadeOut(piePiece, seriesModel, idx);\r\n            })\r\n                .execute();\r\n            labelLayout(seriesModel);\r\n            if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\r\n                this._data = data;\r\n            }\r\n        };\r\n        PieView.prototype.dispose = function () { };\r\n        PieView.prototype.containPoint = function (point, seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var itemLayout = data.getItemLayout(0);\r\n            if (itemLayout) {\r\n                var dx = point[0] - itemLayout.cx;\r\n                var dy = point[1] - itemLayout.cy;\r\n                var radius = Math.sqrt(dx * dx + dy * dy);\r\n                return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n            }\r\n        };\r\n        PieView.type = 'pie';\r\n        return PieView;\r\n    }(ChartView));\r\n    ChartView.registerClass(PieView);\n\n    var PI2$6 = Math.PI * 2;\r\n    var RADIAN$1 = Math.PI / 180;\r\n    function getViewRect(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function pieLayout (seriesType, ecModel, api) {\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var viewRect = getViewRect(seriesModel, api);\r\n            var center = seriesModel.get('center');\r\n            var radius = seriesModel.get('radius');\r\n            if (!isArray(radius)) {\r\n                radius = [0, radius];\r\n            }\r\n            if (!isArray(center)) {\r\n                center = [center, center];\r\n            }\r\n            var width = parsePercent$2(viewRect.width, api.getWidth());\r\n            var height = parsePercent$2(viewRect.height, api.getHeight());\r\n            var size = Math.min(width, height);\r\n            var cx = parsePercent$2(center[0], width) + viewRect.x;\r\n            var cy = parsePercent$2(center[1], height) + viewRect.y;\r\n            var r0 = parsePercent$2(radius[0], size / 2);\r\n            var r = parsePercent$2(radius[1], size / 2);\r\n            var startAngle = -seriesModel.get('startAngle') * RADIAN$1;\r\n            var minAngle = seriesModel.get('minAngle') * RADIAN$1;\r\n            var validDataCount = 0;\r\n            data.each(valueDim, function (value) {\r\n                !isNaN(value) && validDataCount++;\r\n            });\r\n            var sum = data.getSum(valueDim);\r\n            var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var roseType = seriesModel.get('roseType');\r\n            var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n            var extent = data.getDataExtent(valueDim);\r\n            extent[0] = 0;\r\n            var restAngle = PI2$6;\r\n            var valueSumLargerThanMinAngle = 0;\r\n            var currentAngle = startAngle;\r\n            var dir = clockwise ? 1 : -1;\r\n            data.setLayout({ viewRect: viewRect, r: r });\r\n            data.each(valueDim, function (value, idx) {\r\n                var angle;\r\n                if (isNaN(value)) {\r\n                    data.setItemLayout(idx, {\r\n                        angle: NaN,\r\n                        startAngle: NaN,\r\n                        endAngle: NaN,\r\n                        clockwise: clockwise,\r\n                        cx: cx,\r\n                        cy: cy,\r\n                        r0: r0,\r\n                        r: roseType\r\n                            ? NaN\r\n                            : r\r\n                    });\r\n                    return;\r\n                }\r\n                if (roseType !== 'area') {\r\n                    angle = (sum === 0 && stillShowZeroSum)\r\n                        ? unitRadian : (value * unitRadian);\r\n                }\r\n                else {\r\n                    angle = PI2$6 / validDataCount;\r\n                }\r\n                if (angle < minAngle) {\r\n                    angle = minAngle;\r\n                    restAngle -= minAngle;\r\n                }\r\n                else {\r\n                    valueSumLargerThanMinAngle += value;\r\n                }\r\n                var endAngle = currentAngle + dir * angle;\r\n                data.setItemLayout(idx, {\r\n                    angle: angle,\r\n                    startAngle: currentAngle,\r\n                    endAngle: endAngle,\r\n                    clockwise: clockwise,\r\n                    cx: cx,\r\n                    cy: cy,\r\n                    r0: r0,\r\n                    r: roseType\r\n                        ? linearMap(value, extent, [r0, r])\r\n                        : r\r\n                });\r\n                currentAngle = endAngle;\r\n            });\r\n            if (restAngle < PI2$6 && validDataCount) {\r\n                if (restAngle <= 1e-3) {\r\n                    var angle_1 = PI2$6 / validDataCount;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_1 = data.getItemLayout(idx);\r\n                            layout_1.angle = angle_1;\r\n                            layout_1.startAngle = startAngle + dir * idx * angle_1;\r\n                            layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    unitRadian = restAngle / valueSumLargerThanMinAngle;\r\n                    currentAngle = startAngle;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_2 = data.getItemLayout(idx);\r\n                            var angle = layout_2.angle === minAngle\r\n                                ? minAngle : value * unitRadian;\r\n                            layout_2.startAngle = currentAngle;\r\n                            layout_2.endAngle = currentAngle + dir * angle;\r\n                            currentAngle += dir * angle;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    }\n\n    function dataFilter (seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel) {\r\n                var legendModels = ecModel.findComponents({\r\n                    mainType: 'legend'\r\n                });\r\n                if (!legendModels || !legendModels.length) {\r\n                    return;\r\n                }\r\n                var data = seriesModel.getData();\r\n                data.filterSelf(function (idx) {\r\n                    var name = data.getName(idx);\r\n                    for (var i = 0; i < legendModels.length; i++) {\r\n                        if (!legendModels[i].isSelected(name)) {\r\n                            return false;\r\n                        }\r\n                    }\r\n                    return true;\r\n                });\r\n            }\r\n        };\r\n    }\n\n    createLegacyDataSelectAction('pie', registerAction);\r\n    registerLayout(curry(pieLayout, 'pie'));\r\n    registerProcessor(dataFilter('pie'));\n\n    exports.PRIORITY = PRIORITY;\n    exports.connect = connect;\n    exports.dataTool = dataTool;\n    exports.dependencies = dependencies;\n    exports.disConnect = disConnect;\n    exports.disconnect = disconnect;\n    exports.dispose = dispose;\n    exports.extendChartView = extendChartView;\n    exports.extendComponentModel = extendComponentModel;\n    exports.extendComponentView = extendComponentView;\n    exports.extendSeriesModel = extendSeriesModel;\n    exports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\n    exports.getInstanceByDom = getInstanceByDom;\n    exports.getInstanceById = getInstanceById;\n    exports.getMap = getMap;\n    exports.init = init$1;\n    exports.registerAction = registerAction;\n    exports.registerCoordinateSystem = registerCoordinateSystem;\n    exports.registerLayout = registerLayout;\n    exports.registerLoading = registerLoading;\n    exports.registerLocale = registerLocale;\n    exports.registerMap = registerMap;\n    exports.registerPostUpdate = registerPostUpdate;\n    exports.registerPreprocessor = registerPreprocessor;\n    exports.registerProcessor = registerProcessor;\n    exports.registerTheme = registerTheme;\n    exports.registerTransform = registerTransform;\n    exports.registerVisual = registerVisual;\n    exports.setCanvasCreator = setCanvasCreator;\n    exports.version = version;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n"]}