{"version":3,"sources":["webpack:///./src/views/Cass/Datanalysis/components/rxanalysis.vue?20a8","webpack:///./src/components/public/brain/brain.vue?3d37","webpack:///./node_modules/echarts/lib/model/referHelper.js","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesData.js","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue?42f6","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue?e1a8","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue?1ec2","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue","webpack:///./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack:///./src/components/page/emrDetail/emrDetail.vue?1fc2","webpack:///./src/components/public/cSteps/cStep/cStep.vue?8622","webpack:///./src/components/public/cSteps/cStep/cStep.vue","webpack:///./src/components/public/cSteps/cSteps.vue?91ca","webpack:///./src/components/public/cSteps/cSteps.vue","webpack:///./src/components/page/emrDetail/emrDetail.vue?5ca0","webpack:///./src/components/page/emrDetail/emrDetail.vue","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue?0f92","webpack:///./src/views/Cass/Datanalysis/prescriptanslysis/prescriptanslysis.vue?67a0","webpack:///./node_modules/echarts/lib/export/api/helper.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/echarts/lib/coord/geo/Region.js","webpack:///./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack:///./node_modules/echarts/lib/export/api.js","webpack:///./node_modules/echarts/lib/export/core.js","webpack:///./src/components/public/cSteps/cStep/cStep.vue?7e5e","webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///./node_modules/echarts/lib/processor/dataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///./node_modules/echarts/lib/chart/helper/pieHelper.js","webpack:///./node_modules/echarts/lib/chart/pie/PieView.js","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/install.js","webpack:///./src/components/public/navTitle/navTitle.vue?e90c","webpack:///./src/util/contant.ts","webpack:///./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack:///./node_modules/echarts/lib/coord/Axis.js","webpack:///./node_modules/echarts/lib/label/labelGuideHelper.js","webpack:///./src/views/Cass/Datanalysis/components/compareDatanalysisView.vue?967c","webpack:///./node_modules/echarts/lib/legacy/getTextRect.js","webpack:///./src/components/public/navTitle/navTitle.vue?dcb1","webpack:///./src/components/public/navTitle/navTitle.vue?286a","webpack:///./src/components/public/navTitle/navTitle.vue","webpack:///./src/components/public/brain/brain.vue?575d","webpack:///./src/components/public/brain/brain.vue?4b59","webpack:///./src/components/public/brain/brain.vue","webpack:///./src/views/Cass/Datanalysis/components/pieTree.ts","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue?c837","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue","webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack:///./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack:///./src/components/public/empty/empty.vue?77e4","webpack:///./src/components/public/empty/empty.vue","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue?d577","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue?2777","webpack:///./src/components/public/cSteps/cSteps.vue?888b","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue?3afe","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue","webpack:///./node_modules/echarts/lib/label/LabelManager.js","webpack:///./node_modules/echarts/lib/label/installLabelLayout.js","webpack:///./src/components/public/empty/empty.vue?0a4d","webpack:///./src/views/Cass/Datanalysis/prescriptanslysis/prescriptanslysis.vue?9a34","webpack:///./node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack:///./node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack:///./node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack:///./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack:///./node_modules/echarts/lib/chart/graph/graphHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/circularLayout.js","webpack:///./node_modules/echarts/lib/chart/graph/forceHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/forceLayout.js","webpack:///./node_modules/echarts/lib/coord/View.js","webpack:///./node_modules/echarts/lib/chart/graph/createView.js","webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack:///./node_modules/echarts/lib/chart/helper/LinePath.js","webpack:///./node_modules/echarts/lib/chart/helper/Line.js","webpack:///./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack:///./node_modules/echarts/lib/component/helper/interactionMutex.js","webpack:///./node_modules/echarts/lib/component/helper/RoamController.js","webpack:///./node_modules/echarts/lib/component/helper/roamHelper.js","webpack:///./node_modules/echarts/lib/component/helper/cursorHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack:///./node_modules/echarts/lib/chart/graph/GraphView.js","webpack:///./node_modules/echarts/lib/data/Graph.js","webpack:///./node_modules/echarts/lib/data/helper/linkSeriesData.js","webpack:///./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack:///./node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack:///./node_modules/echarts/lib/action/roamHelper.js","webpack:///./node_modules/echarts/lib/chart/graph/install.js","webpack:///./src/views/Cass/Datanalysis/components/rxanalysis.vue?77fc","webpack:///./src/views/Cass/Datanalysis/components/rxanalysis.vue","webpack:///./src/views/Cass/Datanalysis/components/compareDatanalysisView.vue?6059","webpack:///./src/views/Cass/Datanalysis/components/compareDatanalysisView.vue","webpack:///./src/views/Cass/Datanalysis/prescriptanslysis/prescriptanslysis.vue?6263","webpack:///./src/views/Cass/Datanalysis/prescriptanslysis/prescriptanslysis.vue","webpack:///./node_modules/echarts/lib/component/legend/LegendModel.js","webpack:///./node_modules/echarts/lib/component/helper/listComponent.js","webpack:///./node_modules/echarts/lib/component/legend/LegendView.js","webpack:///./node_modules/echarts/lib/component/legend/legendFilter.js","webpack:///./node_modules/echarts/lib/component/legend/legendAction.js","webpack:///./node_modules/echarts/lib/component/legend/installLegendPlain.js","webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack:///./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack:///./node_modules/echarts/lib/component/legend/installLegendScroll.js","webpack:///./node_modules/echarts/lib/component/legend/install.js"],"names":["CoordSysInfo","coordSysName","this","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","seriesModel","get","result","fetch","fetchers","cartesian2d","xAxisModel","getReferringComponents","models","yAxisModel","set","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","geo","parallel","ecModel","parallelModel","getComponent","dimensions","slice","parallelAxisIndex","axisIndex","index","axisModel","axisDim","getCoordSysDimDefs","coordSysInfo","coordSysDimDefs","registeredCoordSys","CoordinateSystem","dim","dimInfo","name","axisType","type","getDimensionsInfo","injectOrdinalMeta","dimInfoList","createInvertedIndices","hasNameEncode","dimIndex","coordDim","categoryAxisModel","ordinalMeta","getOrdinalMeta","otherDims","itemName","createSeriesData","sourceRaw","opt","source","sourceManager","getSourceManager","isOriginalSource","getSource","sourceFormat","useEncodeDefaulter","encodeDefaulter","createDimensionOptions","coordDimensions","generateCoord","encodeDefine","getEncode","canOmitUnusedDimensions","schema","store","getSharedDataStore","stackCalculationInfo","data","SeriesData","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","dataIndex","defaultDimValueGetter","hasItemOption","initData","sampleItem","firstDataNotNull","arr","i","length","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","key","_defineComponent","__name","props","tableData","arrlenth","tableType","emits","setup","__props","emit","tableList","ref","reactive","handleCaseNo","item","row","id","per","patnId","handleEffect","patName","watch","val","immediate","_ctx","_cache","_component_el_table_column","_resolveComponent","_component_el_table","_openBlock","_createElementBlock","_createVNode","style","default","_withCtx","width","scope","_createTextVNode","_toDisplayString","title","_","_Fragment","_renderList","idx","_createBlock","prop","$index","onClick","$event","_normalizeClass","src","_unref","ImgUrlFix","alt","_createCommentVNode","__exports__","firsttitle","secondtitle","propsecondtitle","showCaseBack","_createElementVNode","value","AxisModelCommonMixin","prototype","getNeedCrossZero","option","scale","getCoordSysModel","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_6","_hoisted_7","modelValue","direction","description","assistLabel","strpsProp","inject","select","active","_renderSlot","$slots","list","height","provide","_normalizeStyle","Boolean","dataId","isSimplyType","state","useStore","medicineRadio","dataLoading","listLoading","startval","pbFn","changeTimeToUse","Date","getTime","split","endval","initDate","dateValue","emrList","emrData","curAutor","userName","computed","userInfo","B_RealName","selectTree","e","level","disabled","loading","ElLoading","service","lock","text","background","saveClinicalSeminarEmr","grapaId","mdtrt_no","patn_id","parentId","then","close","catch","err","treeValue","clinicalSeminarTree","treeData","caseList","label","labelTip","recipeData","stepActive","drugUeWayData","drugUeWayList","forEach","t","qidData","qidList","selectStep","getDetail","getData","async","getEmrList","emrDetailData","getEmrDetail","_times","cseIsDeleted","getTmplInfo","getTmplInfoByid","synDiffId","alias","mdtrt_date","replace","emrExpand","atddrName","wm_diagsArr","tcm_disesArr","tcm_dises","push","tcm_dise_name","code","tcm_dise_code","wm_diags","wm_diag_name","wm_diag_code","Object","assign","map","JSON","parse","error","v","tcm_symp_code","prnp_trt_code","drord","emrType","getClinicalSeminarTree","isSelectAll","tmplList","obj","synList","synDiffList","obj1","dxName","children","splice","QueryStreamlineData","getQueryStreamline","startDate","endDate","times","mdtrtDate","AssistLabel","Math","floor","changeEmrType","updateEmrType","onClose","_component_el_space","_component_el_aside","_component_el_tree_select","_component_el_option","_component_el_select","_component_el_header","_component_el_main","_component_el_container","_component_el_button","_component_el_dialog","_directive_loading","_resolveDirective","footer","plain","pickerGroup","cSteps","cStep","onSelect","tcmDiseName","tcmSympName","curEff","clearable","filterable","onNodeClick","onChange","placeholder","_withDirectives","emrDetail","createList","dataStack","isDimensionStacked","enableDataStack","getStackedDimension","createScale","dataExtent","axisHelper","setExtent","mixinAxisModelCommonMethods","Model","createTextStyle","textStyleModel","opts","EPSILON","isAroundEqual","a","b","abs","contain","points","x","y","w","p","p2","windingLine","p0","TMP_TRANSFORM","transformPoints","transform","updateBBoxFromPoints","min","max","projection","project","isFinite","centroid","signedArea","cx","cy","len","x0","y0","x1","y1","Region","setCenter","center","_center","getCenter","calcCenter","GeoJSONPolygonGeometry","exterior","interiors","GeoJSONLineStringGeometry","_super","GeoJSONRegion","geometries","cp","_this","call","largestGeo","largestGeoSize","size","rect","getBoundingRect","_rect","Infinity","BoundingRect","coord","loopGeo","k","transformTo","aspect","target","calculateTransform","interior","copy","cloneShallow","newRegion","GeoSVGRegion","elOnlyForCalculate","_elOnlyForCalculate","el","mat","matrix","isGeoSVGGraphicRoot","getLocalTransform","parent","decode","json","UTF8Encoding","jsonCompressed","encodeScale","UTF8Scale","features","feature","geometry","encodeOffsets","coordinates","decodeRing","decodeRings","rings","c","coordinate","prevX","prevY","charCodeAt","parseGeoJSON","geoJson","nameProperty","featureObj","properties","region","extendComponentModel","proto","Component","extend","registerClass","extendComponentView","View","extendSeriesModel","Series","extendChartView","Chart","installLabelLayout","PI2","PI","RADIAN","getViewRect","api","getBoxLayoutParams","getWidth","getHeight","getBasicPieLayout","viewRect","radius","r0","r","coordSys","coordinateSystem","point","dataToPoint","pieLayout","seriesType","eachSeriesByType","valueDim","mapDimension","_a","startAngle","minAngle","validDataCount","each","isNaN","sum","getSum","unitRadian","clockwise","roseType","stillShowZeroSum","extent","getDataExtent","restAngle","valueSumLargerThanMinAngle","currentAngle","dir","setLayout","angle","setItemLayout","NaN","endAngle","angle_1","layout_1","getItemLayout","layout_2","dataFilter","reset","legendModels","findComponents","mainType","filterSelf","getName","isSelected","adjustSingleSide","viewWidth","viewHeight","viewLeft","viewTop","farthestX","position","labelAlignTo","dx","linePoints","recalculateX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","dy","rA","rA2","sqrt","newX","len2","deltaX","newTargetWidth","targetTextWidth","constrainTextWidth","items","topSemi","maxY","bottomSemi","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","Number","MAX_VALUE","rightmostX","isPositionCenter","layout","labelStyleWidth","labelDistance","edgeDistance","bleedMargin","isAlignToEdge","padding","paddingH","extraPaddingH","backgroundColor","realTextWidth","dist","availableWidth","forceRecalculate","textRect","bgColor","overflow","oldOuterWidth","oldHeight","match","setStyle","innerRect","ceil","availableInnerWidth","newWidth","unconstrainedWidth","newRect","margin","sectorShape","pieLabelLayout","hasLabelRotate","minShowLabelRadian","getLayout","setNotShow","ignore","isLabelShown","states","sector","getItemGraphicEl","shape","getTextContent","labelLine","getTextGuideLine","itemModel","getItemModel","labelModel","getModel","labelPosition","labelLineModel","labelLineLen","labelLineLen2","textX","textY","textAlign","midAngle","nx","cos","ny","sin","isLabelInside","x2","y2","x3","y3","labelRotate","rotate","radialAngle","rad","atan2","isDown","rotation","verticalAlign","align","selectState","clone","applyTransform","getComputedTransform","minTurnAngle","maxSurfaceAngle","surfaceNormal","Point","setTextConfig","inside","notShowLabel","setShape","__hostTarget","textGuideLineConfig","anchor","getSectorCornerRadius","model","zeroIfNull","cornerRadius","dr","cr","PiePiece","z2","setTextContent","updateData","firstCreate","hostModel","emphasisModel","animationType","getShallow","ssr","scaleX","scaleY","isFrom","originX","originY","useStyle","getItemVisual","offset","cursorStyle","attr","_updateLabel","ensureState","labelText","visualColor","fill","visualOpacity","opacity","labelFetcher","labelDataIndex","inheritColor","defaultOpacity","defaultText","getFormattedLabel","removeTextGuideLine","polyline","setTextGuideLine","stroke","PieView","apply","arguments","ignoreLabelLineUpdate","render","payload","oldData","_data","group","count","s","_emptyCircleSector","remove","getItemStyle","add","diff","piePiece","setItemGraphicEl","update","newIdx","oldIdx","off","execute","dispose","containPoint","itemLayout","createSeriesDataSimply","nameList","PieSeriesModel","init","legendVisualProvider","LegendVisualProvider","getRawData","_defaultLabelLine","mergeOption","getInitialData","valueList","seats","getDataParams","params","percent","$vars","labelLineNormalOpt","labelLineEmphasisOpt","emphasis","show","defaultOption","z","legendHoverLink","colorBy","minShowLabelAngle","selectedOffset","percentPrecision","left","top","right","bottom","alignTo","distanceToLabelLine","length2","smooth","lineStyle","itemStyle","borderWidth","borderJoin","showEmptyCircle","emptyCircleStyle","color","labelLayout","hideOverlap","scaleSize","avoidLabelOverlap","animationDuration","animationTypeUpdate","animationEasingUpdate","animationDurationUpdate","animationEasing","PieSeries","negativeDataFilter","curValue","install","registers","registerChartView","registerSeriesModel","registerAction","registerLayout","registerProcessor","location","origin","pathname","header","header2","effcollDateSelect","effcollType","directionType","defaultMethod","charCodeArr","ALPHA","SEX","AGE","markReg","groupLabelList","EYE_VALUE","EYE_LIST","nameAlias","groupOfLabel","syndiffAlias","inner","createAxisLabels","axis","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","tickModel","makeCategoryTicks","ticks","getTicks","tick","getLabelModel","makeCategoryLabelsActually","isBlank","labels","labelCategoryInterval","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","labelItem","tickValue","labelFormatter","formattedLabel","rawLabel","getLabel","cache","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","getExtent","tickCount","step","unitSpan","dataToCoord","unitW","unitH","maxW","maxH","font","dw","dh","interval","axisExtent","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","isHorizontal","getFont","categoryInterval","onlyTick","startTick","round","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","inverse","_extent","containData","getPixelPrecision","start","end","clamp","normalize","fixExtentWithBands","coordToData","pointToData","getTicksCoords","getTickModel","ticksCoords","tickVal","getRawOrdinalNumber","alignWithLabel","fixOnBandTicksCoords","getMinorTicksCoords","minorTickModel","splitNumber","minorTicks","getMinorTicks","minorTicksCoords","minorTicksGroup","minorTick","getViewLabels","getBandWidth","nTick","ticksLen","last","diffSize","crossLen","shift_1","ticksItem","littleThan","shift","unshift","pop","CMD","DEFAULT_SEARCH_SPACE","getCandidateAnchor","pos","distance","outPt","outDir","projectPointToArc","anticlockwise","out","d","ox","oy","tmp","d1","d2","projectPointToLine","limitToEnds","dx1","dy1","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","path","xi","yi","minDist","cmd","M","L","C","Q","A","rx","ry","theta","dTheta","_x","R","Z","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelGuideConfig","searchSpace","candidates","labelRect","anchorPoint","targetTransform","targetInversedTransform","candidate","scaleAndAdd","boundingRect","toArray","limitTurnAngle","tmpArr","tmpProjPoint","fromArray","sub","len1","angleCos","dot","minTurnAngleCos","tan","limitSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","acos","newAngle","setLabelLineState","stateName","stateModel","isNormal","stateObj","styleObj","getLineStyle","buildLabelLinePath","moveTo","lineTo","moveLen","midPoint0","midPoint2","midPoint1","bezierCurveTo","setLabelLineStyle","targetEl","statesModels","defaultStyle","normalModel","normal","showNormal","labelIgnoreNormal","stateShow","isLabelIgnored","stateProxy","showAbove","labelLineConfig","buildPath","getLabelLineStatesModels","labelLineName","getTextRect","rich","truncate","lineHeight","textEl","$props","$setup","$data","$options","navlabel","secondNavLabel","defineComponent","components","String","secondLabel","toRefs","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_component_el_tooltip","hasNav","brainName","autoplay","loop","muted","poster","pointList","poin","brainClickHandle","effect","content","placement","isActive","bgcolor","navList","info","img","unit","st","Array","brainRef","navBoxRef","pointListRef","poinSitionList","poinMaxW","poinH","reSetPoinStation","randomPoinStation","setTimeout","offsetWidth","offsetHeight","itemList","document","querySelectorAll","poinSition","getRandomInt","isInArray","maxWidth","maxHeight","setNavStation","brainWidt","parseInt","degSt","deg","getLocation","getX","nextTick","display","deep","isOverlap","rect1","rect2","l1","r1","l2","r2","flag","echart","TooltipComponent","PieChart","CanvasRenderer","LabelLayout","echarts","onMounted","myChart","textStyle","fontSize","subtext","subtextStyle","fontWeight","series","borderRadius","borderColor","graphic","LinearGradient","zlevel","setOption","on","param","ref_key","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","rawData","mapArray","containName","indexOfName","dataWithEncodedVisual","getDefaultLabel","labelDims","mapDimensionsAll","rawVal","vals","join","getDefaultInterpolatedLabel","interpolatedValue","getDimensionIndex","imgSrc","_hoisted_22","_hoisted_23","dialogVisible","caseeffectitem","propcaseeffectitem","radio","dialogeffectVisible","effectData","topicData","checkboxSelect","getCisw","getQuestionnaire","effcollId","concat","submitTopic","effcollforms","submitOption","selected","console","log","Score","_component_el_radio","_component_el_radio_group","_component_el_checkbox","_component_el_checkbox_group","_component_el_col","_component_el_row","_directive_key","gutter","span","innerHTML","selectName","cloneArr","newPoints","prepareLayoutCallbackParams","hostEl","dataType","seriesIndex","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","Transformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","keys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","layoutOption","labelStyle","textConfig","labelTransform","setLocalTransform","host","labelGuide","computedLayoutOption","priority","defaultAttr","labelGuideIgnore","cursor","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","traverse","child","ecData","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","local","needsUpdateLabelLine","guideLine","labelLayoutStore","draggable","labelList","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","animationEnabled","isAnimationEnabled","forceLabelAnimation","_updateLabelLine","_animateLabels","visualStyle","visualType","getVisual","invisible","disableLabelAnimation","layoutStore","oldLayout","newProps","prevStates","oldLayoutSelect","oldLayoutEmphasis","valueAnimation","oldOpacity","layoutSelect","layoutEmphasis","newLayout","strokePercent","getLabelManager","registerUpdateLifecycle","labelManager","updatedSeries","getViewOfSeriesModel","_component_nav_title","_component_picker_group","_component_el_form_item","_component_search","_component_el_form","_component_brain","_component_compare_datanalysis_view","_component_empty","_component_c_cell","_component_rxanalysis","showCase","inline","mrType","options","onSearchHandle","getSearch","searchWord","keyword","placeholderText","btnText","compareRecipe","isSHowCompareView","justify","graph","analysisData","icon","showCaseMethod","fjName","tip","isChecked","onchecked","useCount","avgEff","analysisLoading","fjItem","onEmitshowCase","emitshowCase","categoryFilter","graphSeries","categoriesData","getCategoriesData","getGraph","categoryNames","category","categoryVisual","paletteScope","categoryNameIdxMap","getColorFromPalette","setItemVisual","symbolVisualList","symbolVisual","categoryIdx","categoryStyle","ensureUniqueItemVisual","visualList","graphEdgeVisual","edgeData","getEdgeData","symbolType","symbolSize","setVisual","edge","getEdgeByIndex","existsStyle","nodeStyle","node1","node2","KEY_DELIMITER","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","n1","n2","uid","getOppositeKey","getEdgeFromMap","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","lenV","edgeMap","initCurvenessList","createEdgeMapForCurveness","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","curKey","parityCorrection","oppositeKey","resValue","simpleLayout","eachNode","node","simpleLayoutEdge","eachEdge","curveness","p1","graphSimpleLayout","data_1","dimensions_1","hasValue","getNodeGlobalScale","nodeScaleRatio","groupZoom","roamZoom","getZoom","nodeScale","getSymbolSize","_symbolRadiansHalf","circularLayout","basedOn","draggingNode","pointer","nodeData","tempX","tempY","circularRotateLabel","rotateNodeLabel","_layoutNodesBasedOn","cp1","x12","y12","unitAngle","getValue","radianHalf","sumRadian","symbolRadianHalf","asin","halfRemainRadian","fixed","getGraphicEl","nodeModel","symbolPath","getSymbolPath","isLeft","textPosition","emphasisState","graphCircularLayout","inNodes","inEdges","nodes","edges","gravity","random","pp","beforeStepCallback","afterStepCallback","initialFriction","friction","warmUp","setFixed","setUnfixed","beforeStep","cb","afterStep","v12","nLen","ignoreForceLayout","j","repFact","rep","finished","graphForceLayout","preservedPoints_1","preservedPoints","graph_1","nodeData_1","forceModel","initLayout","getId","nodeDataExtent_1","edgeDataExtent_1","repulsion","edgeLength","repulsionArr_1","edgeLengthArr_1","nodes_1","edgeModel","forceInstance","l","getNodeByIndex","stopped","forceLayout","v2ApplyTransform","vector","_roamTransformable","_rawTransformable","setBoundingRect","setViewRect","_transformTo","_viewRect","rawTransform","rawParent","decomposeTransform","_updateTransform","centerCoord","_updateCenterAndZoom","setZoom","zoom","zoomLimit","_zoom","getDefaultCenter","rawRect","getRoamTransform","rawTransformMatrix","roamTransform","defaultCenter","roamTransformable","rawTransformable","updateTransform","_rawTransform","invTransform","getTransformInfo","roam","raw","getViewRectAfterRoam","noRoam","convertToPixel","finder","getCoordSys","convertFromPixel","pixel","createViewCoordSys","viewList","coordSysType","positions","bbox","bbWidth","bbHeight","viewCoordSys","Symbol","seriesScope","_createSymbol","keepAspect","removeAll","culling","drift","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","childAt","stopAnimation","getSymbolType","highlight","downplay","setZ","setDraggable","hasCursorOption","silent","isInit","disableAnimation","_updateCommon","_sizeX","_sizeY","emphasisItemStyle","blurItemStyle","selectItemStyle","focus","blurScope","emphasisDisabled","labelStatesModels","hoverScale","symbolRotate","symbolOffset","symbolStyle","pathStyle","image","__isEmptyBrush","decal","setColor","symbolInnerColor","strokeNoScale","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","scaleRatio","setSymbolScale","fadeOut","animationOpt","animation","fadeLabel","textContent","removeOpt","removeTextContent","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","_progressiveEls","symbolUpdateOpt","getSymbolPoint","symbolEl","setPosition","newSymbolType","oldSymbolType","_getSymbolPoint","updateLayout","eachItemGraphicEl","markRedraw","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","isGroup","incremental","hoverLayer","eachRendered","enableAnimation","straightLineProto","bezierCurveProto","StraightLineShape","CurveShape","isStraightLine","cpx1","cpy1","ECLinePath","getDefaultStyle","getDefaultShape","ctx","pointAt","tangentAt","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","createSymbol","lineData","symbolKeepAspect","symbolSizeArr","symbolOffsetArr","__specifiedRotation","createLine","line","subPixelOptimize","setLinePoints","targetShape","Line","_createLine","symbol","_updateCommonStl","childOfName","getLinePath","emphasisLineStyle","blurLineStyle","selectLineStyle","lineState","getState","lineStateStyle","stateStyle","getRawValue","labelNormalModel","__align","__verticalAlign","__position","__labelDistance","linePath","dirty","beforeUpdate","lineGroup","symbolFrom","symbolTo","invScale","parentNode","__dirty","fromPos","toPos","setSymbolRotation","textVerticalAlign","distanceX","distanceY","halfPercent","tangent","specifiedRotation","LineDraw","LineCtor","_LineCtor","lineDraw","oldLineData","_lineData","_doAdd","_doUpdate","isEffectObject","lineNeedsDraw","newLineData","itemEl","animators","isPointNaN","pts","ATTR","isTaken","zr","resourceKey","getStore","event","RoamController","_zr","mousedownHandler","_mousedownHandler","mousemoveHandler","_mousemoveHandler","mouseupHandler","_mouseupHandler","mousewheelHandler","_mousewheelHandler","pinchHandler","_pinchHandler","enable","controlType","disable","_opt","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","isDragging","_dragging","isPinching","_pinching","setPointerChecker","pointerChecker","offsetX","offsetY","_y","isAvailableBehavior","gestureEvent","oldX","oldY","trigger","newY","shouldZoom","shouldMove","wheelDelta","absWheelDeltaDelta","factor","checkPointerAndTrigger","absDelta","scrollDelta","pinchScale","pinchX","pinchY","Eventful","controller","eventName","behaviorToCheck","contollerEvent","settings","setting","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomX","zoomY","newZoom","zoomMin","zoomMax","zoomScale","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","getComponentByElement","topTarget","hasOwnProperty","v1","v2","v3","quadraticAt","curve","v2DistSquare","mathAbs","intersectCurveCircle","curvePoints","radiusSquare","_t","next","nextDiff","adjustEdge","tmp0","quadraticSubdivide","pts2","fromSymbol","toSymbol","__original","originalPoints","isViewCoordSys","GraphView","symbolDraw","_controller","getZr","_controllerHost","_symbolDraw","_lineDraw","_firstRender","_model","groupNewProp","_updateNodeAndLinkScale","_updateController","clearTimeout","_layoutTimeout","layoutAnimation","_startForceLayoutIteration","_layouting","getAdjacentDataIndices","self","dispatchAction","seriesId","updateLabelLayout","generateNodeKey","Graph","directed","_nodesMap","_edgesMap","_directed","isDirected","addNode","nodesMap","GraphNode","hostGraph","rawIdx","getRawIndex","getNodeById","addEdge","edgesMap","GraphEdge","outEdges","getEdge","context","breadthFirstTraverse","startNode","edgeType","__visited","queue","currentNode","otherNode","degree","inDegree","outDegree","dataIndices","adjacentEdge","createGraphDataProxyMixin","hostName","dataName","dimension","merge","linkSeriesData","mainData","datas","main","datasAttr","linkAll","TRANSFERABLE_METHODS","methodName","wrapMethod","transferInjection","cloneShallowInjection","CHANGABLE_METHODS","changeInjection","res","isMainData","linkSingle","struct","getLinkedData","getLinkedDataAll","structAttr","createGraphFromNodeEdge","beforeLink","linkNameList","validEdges","linkCount","link","coordSysCtor","GraphSeriesModel","hasSymbolVisual","_categoriesData","fillDataTextStyle","links","_updateCategoriesData","mergeDefaultAndTheme","categoriesModels","_categoriesModels","categoryModel","parentModel","oldGetModel","newGetModel","resolveParentPath","pathArr","newPathArr","formatTooltip","multipleSeries","sourceName","targetName","nameArr","noValue","nodeMarkup","categories","dependencies","circular","rotateLabel","force","edgeSymbol","edgeSymbolSize","edgeLabel","formatter","GraphSeries","getCenterCoord","view","pointToProjected","updateCenterAndZoom","previousZoom","projectedToPoint","fixX","fixY","actionInfo","registerVisual","PRIORITY","VISUAL","POST_CHART_LAYOUT","registerCoordinateSystem","create","eachComponent","query","undefined","TitleComponent","LegendComponent","GraphChart","isViewForm","viewsDom","propfjItem","rxLoading","bingliShow","caseeffectShow","mainDrugStr","compArr","emitshowCaseNo","emitshowEffect","getDiffMeth","getSingleRx","stime","etime","fj_name","drugStr","drugs","drugName","qty","mrs","zidrugStr","drug","keyList","patnRemarks","synDiffAlias","changeView","getSingleRxView","requestData","showLoading","fjId","dxs","dxId","synDiff","synDiffName","hideLoading","tooltip","legend","textBorderColor","breadnav","onEmitshowNav","cassTable","onEmitshowEffect","onEmitshowCaseNo","caseeffect","renderView","chartDom","getElementById","str","templateProgress","rxanalysis","cCell","compareDatanalysisView","search","navTitle","brain","empty","echartflag","stopDefault","stopPropagation","getRxAnalysis","temList","arr1","s_tem","tem","recipeList","checkedList","getRecipeDetail","drugList","isIn","filter","targetId","fjData","targetDxName","getFjDetail","simpleUnique","Search","getDefaultSelectorOptions","getLocaleModel","LegendModel","layoutMode","ignoreSize","_updateSelector","selector","optionUpdated","_updateData","legendData","hasSelected","name_1","potentialData","availableNames","eachRawSeries","isPotential","seriesName","provider","names","isSeriesFiltered","_availableNames","dataItem","selectedMode","unSelect","toggleSelected","allSelect","inverseSelect","getOrient","orient","itemGap","itemWidth","itemHeight","inactiveColor","inactiveBorderColor","inactiveBorderWidth","borderCap","borderDashOffset","borderMiterLimit","inactiveWidth","cap","dashOffset","miterLimit","selectorLabel","fontFamily","selectorPosition","selectorItemGap","selectorButtonGap","makeBackground","componentModel","format","curry","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","legendModel","isFirstRender","resetInner","itemAlign","renderInner","positionInfo","viewportSize","maxSize","mainRect","layoutInner","layoutRect","_backgroundEl","contentGroup","legendDrawnMap","selectMode","excludeSeriesId","legendItemModel","g","newline","getSeriesByName","lineVisualStyle","legendIcon","itemGroup","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","colorArr","_createSelector","selectorGroup","selectorItem","onclick","emphasisLabelModel","itemVisualStyle","drawType","visualDrawType","iconRotate","legendIconType","getLegendStyle","getLegendIcon","getDefaultLegendIcon","getTextColor","hitRect","tooltipModel","itemTooltipOption","eachChild","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","wh","hw","yx","iconType","handleCommonProps","lineWidth","propVal","propName","itemStyleModel","iconBrushType","lastIndexOf","decalStyle","legendLineModel","visualHasBorder","symboType","setOrigin","indexOf","isUseHoverLayer","storage","getDisplayList","legendFilter","filterSeries","legendSelectActionHandler","selectedMap","isToggleSelect","isItemSelected","installLegendAction","registerComponentModel","registerComponentView","PROCESSOR","SERIES_FILTER","registerSubTypeDefaulter","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","inputPositionParams","mergeAndNormalizeLayoutParams","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","horizontal","vertical","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","WH","XY","ScrollableLegendView","_currentIndex","_containerGroup","_controllerGroup","removeClipPath","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","xy","processMaxSize","_layoutContentAndController","containerGroup","controllerRect","showController","_showController","containerPos","controllerPos","setClipPath","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","to","legendId","canJump","pageText","current","total","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","intersect","itemRect","itemInfo","winStart","targetDataIndex","defaultIndex","legendDataIdx","installScrollableLegendAction","subType"],"mappings":"0HAAA,W,oCCAA,W,uIC0EI,EAEJ,WACE,SAASA,EAAaC,GACpBC,KAAKC,aAAe,GACpBD,KAAKE,QAAU,6BACfF,KAAKG,gBAAkB,6BACvBH,KAAKD,aAAeA,EAGtB,OAAOD,EART,GAWO,SAASM,EAAwBC,GACtC,IAAIN,EAAeM,EAAYC,IAAI,oBAC/BC,EAAS,IAAI,EAAaR,GAC1BS,EAAQC,EAASV,GAErB,GAAIS,EAEF,OADAA,EAAMH,EAAaE,EAAQA,EAAOL,QAASK,EAAOJ,iBAC3CI,EAGX,IAAIE,EAAW,CACbC,YAAa,SAAUL,EAAaE,EAAQL,EAASC,GACnD,IAAIQ,EAAaN,EAAYO,uBAAuB,QAAS,QAAkBC,OAAO,GAClFC,EAAaT,EAAYO,uBAAuB,QAAS,QAAkBC,OAAO,GAYtFN,EAAON,aAAe,CAAC,IAAK,KAC5BC,EAAQa,IAAI,IAAKJ,GACjBT,EAAQa,IAAI,IAAKD,GAEbE,EAAWL,KACbR,EAAgBY,IAAI,IAAKJ,GACzBJ,EAAOU,sBAAwB,GAG7BD,EAAWF,KACbX,EAAgBY,IAAI,IAAKD,GACO,MAAhCP,EAAOU,wBAAkCV,EAAOU,sBAAwB,KAG5EC,WAAY,SAAUb,EAAaE,EAAQL,EAASC,GAClD,IAAIgB,EAAkBd,EAAYO,uBAAuB,aAAc,QAAkBC,OAAO,GAQhGN,EAAON,aAAe,CAAC,UACvBC,EAAQa,IAAI,SAAUI,GAElBH,EAAWG,KACbhB,EAAgBY,IAAI,SAAUI,GAC9BZ,EAAOU,sBAAwB,IAGnCG,MAAO,SAAUf,EAAaE,EAAQL,EAASC,GAC7C,IAAIkB,EAAahB,EAAYO,uBAAuB,QAAS,QAAkBC,OAAO,GAClFS,EAAkBD,EAAWE,cAAc,cAC3CC,EAAiBH,EAAWE,cAAc,aAY9ChB,EAAON,aAAe,CAAC,SAAU,SACjCC,EAAQa,IAAI,SAAUO,GACtBpB,EAAQa,IAAI,QAASS,GAEjBR,EAAWM,KACbnB,EAAgBY,IAAI,SAAUO,GAC9Bf,EAAOU,sBAAwB,GAG7BD,EAAWQ,KACbrB,EAAgBY,IAAI,QAASS,GACG,MAAhCjB,EAAOU,wBAAkCV,EAAOU,sBAAwB,KAG5EQ,IAAK,SAAUpB,EAAaE,EAAQL,EAASC,GAC3CI,EAAON,aAAe,CAAC,MAAO,QAEhCyB,SAAU,SAAUrB,EAAaE,EAAQL,EAASC,GAChD,IAAIwB,EAAUtB,EAAYsB,QACtBC,EAAgBD,EAAQE,aAAa,WAAYxB,EAAYC,IAAI,kBACjEL,EAAeM,EAAON,aAAe2B,EAAcE,WAAWC,QAClE,kBAAKH,EAAcI,mBAAmB,SAAUC,EAAWC,GACzD,IAAIC,EAAYR,EAAQE,aAAa,eAAgBI,GACjDG,EAAUnC,EAAaiC,GAC3BhC,EAAQa,IAAIqB,EAASD,GAEjBnB,EAAWmB,KACbhC,EAAgBY,IAAIqB,EAASD,GAEO,MAAhC5B,EAAOU,wBACTV,EAAOU,sBAAwBiB,SAOzC,SAASlB,EAAWmB,GAClB,MAAiC,aAA1BA,EAAU7B,IAAI,Q,oDC7IvB,SAAS+B,EAAmBhC,EAAaiC,GACvC,IAEIC,EAFAxC,EAAeM,EAAYC,IAAI,oBAC/BkC,EAAqBC,EAAA,KAAiBnC,IAAIP,GAwB9C,OArBIuC,GAAgBA,EAAarC,eAC/BsC,EAAkB,SAAWD,EAAarC,cAAc,SAAUyC,GAChE,IAAIC,EAAU,CACZC,KAAMF,GAEJP,EAAYG,EAAapC,QAAQI,IAAIoC,GAEzC,GAAIP,EAAW,CACb,IAAIU,EAAWV,EAAU7B,IAAI,QAC7BqC,EAAQG,KAAO,eAAuBD,GAGxC,OAAOF,MAINJ,IAEHA,EAAkBC,IAAuBA,EAAmBO,kBAAoBP,EAAmBO,oBAAsBP,EAAmBV,WAAWC,UAAY,CAAC,IAAK,MAGpKQ,EAGT,SAASS,EAAkBC,EAAaC,EAAuBZ,GAC7D,IAAIrB,EACAkC,EA0BJ,OAzBAb,GAAgB,UAAYW,GAAa,SAAUN,EAASS,GAC1D,IAAIC,EAAWV,EAAQU,SACnBC,EAAoBhB,EAAanC,gBAAgBG,IAAI+C,GAErDC,IAC2B,MAAzBrC,IACFA,EAAwBmC,GAG1BT,EAAQY,YAAcD,EAAkBE,iBAEpCN,IACFP,EAAQO,uBAAwB,IAIF,MAA9BP,EAAQc,UAAUC,WACpBP,GAAgB,MAIfA,GAA0C,MAAzBlC,IACpBgC,EAAYhC,GAAuBwC,UAAUC,SAAW,GAGnDzC,EAQT,SAAS0C,EAAiBC,EAAWvD,EAAawD,GAChDA,EAAMA,GAAO,GACb,IACIC,EADAC,EAAgB1D,EAAY2D,mBAE5BC,GAAmB,EAEnBL,GACFK,GAAmB,EACnBH,EAAS,eAAiCF,KAE1CE,EAASC,EAAcG,YAEvBD,EAAmBH,EAAOK,eAAiB,QAG7C,IAAI7B,EAAelC,EAAwBC,GACvCkC,EAAkBF,EAAmBhC,EAAaiC,GAClD8B,EAAqBP,EAAIO,mBACzBC,EAAkB,gBAAkBD,GAAsBA,EAAqBA,EAAqB,WAAa,OAAiC7B,EAAiBlC,GAAe,KAClLiE,EAAyB,CAC3BC,gBAAiBhC,EACjBiC,cAAeX,EAAIW,cACnBC,aAAcpE,EAAYqE,YAC1BL,gBAAiBA,EACjBM,yBAA0BV,GAExBW,EAAS,eAAwBd,EAAQQ,GACzCrD,EAAwB+B,EAAkB4B,EAAO9C,WAAY+B,EAAIX,sBAAuBZ,GACxFuC,EAASZ,EAA8D,KAA3CF,EAAce,mBAAmBF,GAC7DG,EAAuB,eAAgB1E,EAAa,CACtDuE,OAAQA,EACRC,MAAOA,IAELG,EAAO,IAAIC,EAAA,KAAWL,EAAQvE,GAClC2E,EAAKE,mBAAmBH,GACxB,IAAII,EAA0C,MAAzBlE,GAAiCmE,EAA0BtB,GAAU,SAAUuB,EAASC,EAASC,EAAWnC,GAE/H,OAAOA,IAAanC,EAAwBsE,EAAYvF,KAAKwF,sBAAsBH,EAASC,EAASC,EAAWnC,IAC9G,KAIJ,OAHA4B,EAAKS,eAAgB,EACrBT,EAAKU,SACLzB,EAAmBH,EAASe,EAAO,KAAMM,GAClCH,EAGT,SAASI,EAA0BtB,GACjC,GAAIA,EAAOK,eAAiB,OAAwB,CAClD,IAAIwB,EAAaC,EAAiB9B,EAAOkB,MAAQ,IACjD,OAAQ,aAAe,eAAiBW,KAI5C,SAASC,EAAiBC,GACxB,IAAIC,EAAI,EAER,MAAOA,EAAID,EAAIE,QAAoB,MAAVF,EAAIC,GAC3BA,IAGF,OAAOD,EAAIC,GAGE,U,6DCtLf,W,gECGA,MACME,EAAa,CAAEC,MAAO,aACtBC,EAAa,CAAC,WACdC,EAAa,CAAC,OACdC,EAAa,CAAC,WACdC,EAAa,CAAEC,IAAK,GAMEC,mCAAiB,CAC3CC,OAAQ,YACRC,MAAO,CACLC,UAAW,KACXC,SAAU,KACVC,UAAW,MAEbC,MAAO,CAAC,iBAAkB,kBAC1BC,MAAMC,GAAc,KAAEC,IAExB,MAAMP,EAAQM,EAWRE,GAHaC,iBAAI,SACCA,kBAAI,GACFA,kBAAI,GACZC,sBAASV,EAAMC,YAG3BU,EAAe,CAAClF,EAAcmF,KAC9B,MAAMC,EAAM,CAACC,GAAG,GAAGC,IAAI,GAAGC,OAAO,IACjCH,EAAIC,GAAKF,EAAK,KAAOnF,GACrBoF,EAAIG,OAASJ,EAAK,SAAWnF,GAC3B8E,EAAK,iBAAiB,CACpBhC,KAAMsC,EACNpF,WAKJwF,EAAe,CAACxF,EAAcmF,KAClC,GAAmB,iBAATA,GAAqBA,GAAQ,EAAE,CACvC,MAAMC,EAAM,CAACC,GAAG,GAAIC,IAAI,GAAIC,OAAO,GAAIE,QAAQ,IAC/CL,EAAIC,GAAKN,EAAU,GAAG,YAAc/E,IAAU+E,EAAU,GAAG,KAAO/E,GAClEoF,EAAIE,IAAMH,GAAQ,EAAIA,EAAO,EAC7BC,EAAIK,QAAUV,EAAU,GAAG,SAAW/E,GACtC8E,EAAK,iBAAiBM,KAc1B,OAVAM,mBAAM,IAAMnB,EAAMC,UAAYmB,IACtBpB,EAAMC,UAAYmB,GACpB,CACEC,WAAU,IAElBF,mBAAM,IAAMnB,EAAME,SAAWkB,IACzBpB,EAAME,SAAWkB,IAId,CAACE,EAAUC,KAChB,MAAMC,EAA6BC,8BAAkB,mBAC/CC,EAAsBD,8BAAkB,YAE9C,OAAQE,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DsC,yBAAaH,EAAqB,CAChCnD,KAAMiC,EACN,eAAe,EACfsB,MAAO,CAAC,MAAQ,OAAO,aAAa,WACnC,CACDC,QAASC,qBAAS,IAAM,CACtBH,yBAAaL,EAA4B,CAAES,MAAO,OAAS,CACzDF,QAASC,qBAAUE,GAAU,CAC3BC,6BAAiBC,6BAAiBF,EAAMrB,IAAIwB,OAAQ,KAEtDC,EAAG,KAEJX,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAYxC,EAAME,SAAU,CAACU,EAAM6B,KACjFd,yBAAce,yBAAalB,EAA4B,CAC7DS,MAAO,MACPU,KAAM,SAAWF,EACjB5C,IAAK4C,GACJ,CACDV,QAASC,qBAAUE,GAAU,CACV,GAAhBA,EAAMU,QACFjB,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLgD,QAAUC,GAAiBnC,EAAa8B,EAAKP,EAAMrB,KACnDrB,MAAOuD,4BAAgB,CAAC,UAAYb,EAAMrB,IAAI,SAAW4B,IAAS,KACjE,CACDN,6BAAiBC,6BAAiBF,EAAMrB,IAAI,SAAW4B,IAAO,GAC7DP,EAAMrB,IAAI,YAAc4B,IACpBd,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLL,MAAO,MACPwD,IAAKC,mBAAOC,QAAa,sBACzBC,IAAK,IACJ,KAAM,EAAGzD,IACZ0D,gCAAoB,IAAI,IAC3B,GAAI3D,IACU,GAAhByC,EAAMU,QACJjB,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLL,MAAOuD,4BAAgB,CAAC,UAAYb,EAAMrB,IAAI,SAAW4B,IAAS,IAClEI,QAAUC,GAAiB7B,EAAawB,EAAKP,EAAMrB,IAAI,SAAW4B,KACjEL,6BAAiBF,EAAMrB,IAAI,SAAW4B,IAAQ,EAAIP,EAAMrB,IAAI,SAAW4B,GAAO,IAAM,MAAO,GAAI9C,KACjGgC,yBAAcC,gCAAoB,MAAOhC,EAAYwC,6BAAiBF,EAAMrB,IAAI,SAAW4B,IAAO,MAE3GH,EAAG,GACF,KAAM,CAAC,WACR,QAENA,EAAG,GACF,EAAG,CAAC,e,iCCpHX,MAAMe,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,U,oDCLf,MACM9D,EAAa,CAAEC,MAAO,YAIAM,mCAAiB,CAC3CC,OAAQ,WACRC,MAAO,CACLsD,WAAY,KACZC,YAAa,MAEfnD,MAAO,CAAC,eACRC,MAAMC,GAAc,KAAEC,IAExB,MAAMP,EAAQM,EAORkD,EAAkB/C,iBAAIT,EAAMuD,aAC5BE,EAAe,KACjBlD,EAAK,gBAGT,MAAO,CAACe,EAAUC,KACRI,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DmE,gCAAoB,KAAM,KAAMtB,6BAAiBpC,EAAMsD,YAAa,GACpEnB,6BAAiB,OACjBuB,gCAAoB,KAAM,KAAMtB,6BAAiBoB,EAAgBG,OAAQ,GACzED,gCAAoB,IAAK,CAAEb,QAASY,GAAgB,Y,iCC5BxD,MAAMJ,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,U,oECoCf,IAAIO,EAEJ,WACE,SAASA,KAgBT,OAdAA,EAAqBC,UAAUC,iBAAmB,WAChD,IAAIC,EAASxK,KAAKwK,OAClB,OAAQA,EAAOC,OAQjBJ,EAAqBC,UAAUI,iBAAmB,aAI3CL,EAjBT,I,oCC9CA,W,wECGA,MAAMM,EAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzE5E,EAA2B2E,EAAa,IAAmBR,gCAAoB,MAAO,CAAElE,MAAO,cAAgB,MAAO,IACtHC,EAAa,CACjBI,IAAK,EACLL,MAAO,qBAEHE,EAAa,CAAEF,MAAO,cACtBG,EAAa,CAAEH,MAAO,iBACtBI,EAAa,CAAEJ,MAAO,uBACtB8E,EAAa,CAAEzE,IAAK,GACpB0E,EAAa,CAAE/E,MAAO,6BAIAM,mCAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLwE,WAAY,CAAEzC,QAAS,GACvB0C,UAAW,CAAE1C,QAAS,YACtBM,MAAO,CAAEN,QAAS,IAClB2C,YAAa,CAAE3C,QAAS,IACxB4C,YAAa,CAAE5C,QAAS,IACxBtG,MAAO,CAAEsG,QAAS,IAEpB3B,MAAO,CAAC,UACRC,MAAMC,GAAgBC,KAAMH,IAI9B,MAAMJ,EAAQM,EAIJsE,EAAiBC,oBAAO,cACxBC,EAAS,KACX1E,EAAM,SAAUJ,EAAMvE,QAG9B,MAAO,CAAC6F,EAAUC,KACRI,yBAAcC,gCAAoB,KAAM,CAC9CiB,QAASiC,EACTtF,MAAOuD,4BAAgB,CAAC,QAAS,CAACgC,OAAQ9B,mBAAO2B,GAAWJ,YAAcxE,EAAMvE,UAC/E,CACD8D,EACCS,EAAM2E,aACFhD,yBAAcC,gCAAoB,MAAOnC,EAAY,CACpDiE,gCAAoB,OAAQ,KAAMtB,6BAAiBpC,EAAM2E,aAAc,MAEzEvB,gCAAoB,IAAI,GAC5BM,gCAAoB,MAAOhE,EAAY,CACrCsF,wBAAY1D,EAAK2D,OAAQ,UAE3BvB,gCAAoB,MAAO/D,EAAY,CACrC+D,gCAAoB,MAAO9D,EAAY,CACpCI,EAAMqC,OACFV,yBAAcC,gCAAoB,OAAQ0C,EAAYlC,6BAAiBpC,EAAMqC,OAAQ,IACtFe,gCAAoB,IAAI,GAC5B4B,wBAAY1D,EAAK2D,OAAQ,WAE3BvB,gCAAoB,MAAOa,EAAY,CACrCb,gCAAoB,OAAQ,KAAMtB,6BAAiBpC,EAAM0E,aAAc,GACvEM,wBAAY1D,EAAK2D,OAAQ,oBAG5B,O,iCC7DL,MAAM5B,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,QCLf,MACM9D,EAAa,CAAEC,MAAO,UASAM,mCAAiB,CAC3CC,OAAQ,SACRC,MAAO,CACLwE,WAAY,CAAEzC,QAAS,GACvBmD,KAAM,CAAEnD,QAAS,IACjB0C,UAAW,CAAE1C,QAAS,YACtBoD,OAAQ,CAAEpD,QAAS,IAErB1B,MAAMC,GAER,MAAMN,EAAQM,EAGV8E,qBAAQ,aAAcpF,GAK1B,MAAO,CAACsB,EAAUC,KACRI,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DmE,gCAAoB,KAAM,CACxBlE,MAAOuD,4BAAgB,CAAC,SAAU,CAAC/C,EAAMyE,aACzC3C,MAAOuD,4BAAgB,CAACF,OAAQnF,EAAMmF,UACrC,CACDH,wBAAY1D,EAAK2D,OAAQ,YACxB,S,UChCP,MAAM,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,Q,wECLf,MAAM1F,EAA0BmE,gCAAoB,MAAO,CAAElE,MAAO,+CAAiD,CACtGkE,gCAAoB,OAAQ,KAAM,KAClCA,gCAAoB,OAAQ,KAAM,QAClCA,gCAAoB,OAAQ,KAAM,QAC7C,GACEjE,EAAa,CAAED,MAAO,uBACtBE,EAA0BgE,gCAAoB,OAAQ,KAAM,WAAY,GACxE/D,EAA0B+D,gCAAoB,OAAQ,KAAM,SAAU,GACtE9D,EAAa,CAAEJ,MAAO,iBAuBAM,mCAAiB,CAC3CC,OAAQ,YACRC,MAAO,CACLwE,WAAY,CAAEnI,KAAMiJ,QAASvD,SAAS,GACtCwD,OAAQ,CAAExD,QAAS,IACnBf,OAAQ,CAAEe,QAAS,IACnBM,MAAO,CAAEN,QAAS,MAClByD,aAAc,CAAEnJ,KAAMiJ,QAASvD,SAAS,IAE1C3B,MAAO,CAAC,oBAAqB,iBAC7BC,MAAMC,GAAgBC,KAAMH,IAK9B,MAAMJ,EAAQM,GAER,MAAEmF,GAAUC,iBASZC,GADUjF,sBAAS,CAAC,GAAI,IAAK,MACSD,iBAAI,KAC1CmF,EAAcnF,kBAAI,GAClBoF,EAAcpF,kBAAI,GAElBqF,EAAWrF,iBAAIsF,OAAKC,iBAAgB,IAAIC,MAAOC,UAAY,SAA2BC,MAAM,KAAK,IACjGC,EAAS3F,iBAAIsF,OAAKC,iBAAgB,IAAIC,MAAOC,WAAWC,MAAM,KAAK,IACnEE,EAAW,KACbP,EAASnC,MAAQoC,OAAKC,iBAAgB,IAAIC,MAAOC,UAAY,SAA2BC,MAAM,KAAK,GACnGC,EAAOzC,MAAQoC,OAAKC,iBAAgB,IAAIC,MAAOC,WAAWC,MAAM,KAAK,GAC9D,CAACJ,OAAKC,iBAAgB,IAAIC,MAAOC,UAAY,SAA2BC,MAAM,KAAK,GAAIJ,OAAKC,iBAAgB,IAAIC,MAAOC,WAAWC,MAAM,KAAK,KAElJG,EAA2B7F,iBAAI4F,KAC/BE,EAAe7F,sBAAS,IACxB8F,EAAe9F,sBAAS,IAGxB+F,GADkC/F,sBAAS,IAChCD,kBAAI,IACfiG,EAAWC,sBAAS,IAAMlB,EAAMmB,SAASC,YACzCC,EAAcC,IAChB,GAAe,GAAXA,EAAEC,QAAeD,EAAEE,SAAU,CAC7B,IAAIC,EAAUC,OAAUC,QAAQ,CAC5BC,MAAM,EACNC,KAAM,UACNC,WAAY,uBAEEC,gBAAuB,CACrCjJ,KAAM,CACF,kBAAqBwI,EAAEU,QACvB,QAAWjB,EAAQkB,SACnB,OAAUlB,EAAQmB,QAClB,UAAaZ,EAAEjG,GACf,OAAUiG,EAAEa,YAGfC,KAAMtJ,IACH,MAAM6C,EAAMuE,EAAchC,MAC1BvD,EAAM,gBAAiBgB,GACvB8F,EAAQY,UAEXC,MAAOC,IACJd,EAAQY,YAQlBG,EAAYxH,iBAAI,IAEhByH,EAA2BxH,sBAAS,IACpCyH,EAAW1H,iBAAIyH,GAEfE,EAA2B1H,sBAAS,CACtC,CAAE2B,MAAO,MAAOgG,MAAO,GAAIhM,KAAM,WACjC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,YAClC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,YAClC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,YAClC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,WAClC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,WAClC,CAAEgG,MAAO,OAAQgG,MAAO,GAAIhM,KAAM,UAClC,CAAEgG,MAAO,cAAegG,MAAO,GAAIhM,KAAM,cAEzC,CAAEgG,MAAO,UAAWgG,MAAO,GAAIhM,KAAM,WACrC,CAAEgG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,kBACnC,CAAEgG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,gBAAiBiM,UAAU,GAC9D,CAAEjG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,gBAAiBiM,UAAU,GAC9D,CAAEjG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,eAAgBiM,UAAU,GAC7D,CAAEjG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,aACnC,CAAEgG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,WAAYiM,UAAU,GACzD,CAAEjG,MAAO,QAASgG,MAAO,GAAIhM,KAAM,MAEjCkM,EAAkB7H,sBAAS,IAC3B8H,EAA0B/H,iBAAI,GAE9BgI,EAAqB/H,sBAAS,IACpCgI,OAAcC,QAAQC,IAClBH,EAAcG,EAAE9H,IAAM8H,EAAEzM,OAE5B,MAAM0M,EAAenI,sBAAS,IAC9BoI,OAAQH,QAAQC,IACZC,EAAQD,EAAEjF,OAASiF,EAAEvG,QAEzB,MAAM0G,EAActG,IAChB+F,EAAW7E,MAAQlB,EACnBuG,EAAUzC,EAAQ9D,GAAK3B,KAErBmI,EAAUC,UACZF,EAAUzK,EAAKgH,QACf4D,EAAW5K,EAAKyC,SAEdgI,EAAYE,UACdtD,EAAYjC,OAAQ,EACpB,MAAMyF,QAAsBC,eAAa,CACrC9K,KAAM,CACFuC,GAAIA,EACJwI,QAAQ,IAAIrD,MAAOC,aAG3B,GAAiC,GAA9BkD,EAAcG,aACbtB,EAAUtE,MAAQ,QAChB,GAAiC,GAA9ByF,EAAcG,aAAkB,CACrC,MAAMC,QAAoBC,gBAAgB,CACtClL,KAAM,CACFuC,GAAIsI,EAAcM,UAClBJ,QAAQ,IAAIrD,MAAOC,aAG3B+B,EAAUtE,MAAQ6F,EAAYG,MAASH,EAAYrN,KAAO,IAAMqN,EAAYG,MAAQ,IAAMH,EAAYrN,UAGtG8L,EAAUtE,MAAQyF,EAAcM,UAEpCN,EAAcQ,WAAaR,EAAcQ,WAAaR,EAAcQ,WAAWC,QAAQ,IAAK,KAAO,GACnGpD,EAAS9C,MAAQyF,EAAcU,UAAUC,YAAcrD,EAAS/C,MAEhE,IAAIqG,EAAc,GAAIC,EAAe,GACjC,cAAeb,GAAiB,GAAUA,EAAcc,UAAU5K,SAClE2K,EAAaE,KAAK,CACdhO,KAAMiN,EAAcgB,cACpBC,KAAMjB,EAAckB,gBAExBlB,EAAcc,UAAYD,GAE1B,aAAcb,GAAiB,GAAUA,EAAcmB,SAASjL,SAChE0K,EAAYG,KAAK,CACbhO,KAAMiN,EAAcoB,aACpBH,KAAMjB,EAAcqB,eAExBrB,EAAcmB,SAAWP,EAAY1K,QAGzCoL,OAAOC,OAAOnE,EAAS4C,GACvBhB,EAASwC,IAAIhC,IACT,GAAc,cAAVA,EAAEvM,KAAsB,CACxB,IAAIgM,EAAQ,GACR9J,EAAY,GAChB,IACIA,EAAOsM,KAAKC,MAAM1B,EAAcR,EAAEvM,OAAS,MAC7C,MAAO0O,GACLxM,EAAO,CAAEsB,IAAKuJ,EAAcR,EAAEvM,OAElC,IAAK,MAAM2O,KAAKzM,EACZ8J,GAAS9J,EAAKyM,GAAK,IAEvBpC,EAAEP,MAAQA,EAAM/M,MAAM,EAAG+M,EAAM/I,OAAS,QAEpCsJ,EAAEN,WACY,iBAAVM,EAAEvM,KACFuM,EAAEyB,KAAOjB,EAAckB,cACN,iBAAV1B,EAAEvM,KACTuM,EAAEyB,KAAOjB,EAAc6B,cACN,gBAAVrC,EAAEvM,KACTuM,EAAEyB,KAAOjB,EAAcqB,aACN,YAAV7B,EAAEvM,OACTuM,EAAEyB,KAAOjB,EAAc8B,gBAG/BtC,EAAEP,MAAQe,EAAcR,EAAEvM,MAG9B,OAAOuM,IAIX8B,OAAOC,OAAOpC,EAAYa,EAAc+B,OACxCxF,EAAchC,MAAQyF,EAAcU,UAAiD,KAApCV,EAAcU,UAAUsB,SAAsD,OAApChC,EAAcU,UAAUsB,QAAoB,GAAKhC,EAAcU,UAAUsB,QAAU,GAC9KxF,EAAYjC,OAAQ,GAGlBwF,EAAaD,UACfrD,EAAYlC,OAAQ,QACd0H,eAAuB,CACzB9M,KAAM,CACF+M,aAAa,KAGhBzD,KAAMtJ,IACH,MAAM2G,EAAc,GACpB3G,EAAKoK,QAAS/H,IAAa,MACvB,IAAI2K,EAAgB,GACH,QAAjB,EAAI3K,EAAK2K,gBAAQ,OAAb,EAAejM,QACfsB,EAAK2K,SAAS5C,QAAS6C,IAAY,MAC/B,IAAIC,EAAe,GACA,QAAnB,EAAID,EAAIE,mBAAW,OAAf,EAAiBpM,QACjBkM,EAAIE,YAAY/C,QAASgD,IACrBF,EAAQtB,KAAK,IACNwB,EACHlE,QAAS7G,EAAKE,GACd8G,SAAU4D,EAAI1K,GACduH,MAAOsD,EAAKhC,MAAQgC,EAAKxP,KAAO,IAAMwP,EAAKhC,MAAQ,IAAMgC,EAAKxP,KAC9DwH,MAAOgI,EAAK7K,GACZkG,MAAO,MAKnBuE,EAASpB,KAAK,IACPqB,EACHnD,MAAQmD,EAAI7B,MAAQ6B,EAAII,OAAS,IAAMJ,EAAI7B,MAAQ,IAAM6B,EAAII,OAC7DjI,MAAO6H,EAAI1K,GACXkG,MAAO,EACP6E,SAAUJ,MAOtBvG,EAAKiF,KAAK,IACHvJ,EACHyH,MAAOzH,EAAKzE,KACZwH,MAAO/C,EAAKE,GACZkG,MAAO,EACP6E,SAAUN,IAGdrD,EAAoB4D,OAAO,EAAG5D,EAAoB5I,UAAW4F,OAGpE6C,MAAOC,OACKvH,iBAAIyH,GAArB,MAEM6D,QAA4BC,eAAmB,CACjDzN,KAAM,CACFyC,OAAQF,EACRmL,UAAWnG,EAASnC,MACpBuI,QAAS9F,EAAOzC,MAChB2F,QAAQ,IAAIrD,MAAOC,aAI3B6F,EAAoBD,OAAO,EAAGC,EAAoBzM,UAAWyM,GAE7DA,EAAoBnB,IAAI,CAAChC,EAAQvJ,KAE7B,GAAI0M,EAAoB1M,EAAI,GAAI,CAC5B,IAAI8M,EAAQ,IAAIlG,KAAK2C,EAAEwD,WAAWlG,UAAY,IAAID,KAAK8F,EAAoB1M,EAAI,GAAG+M,WAAWlG,UAC7F0C,EAAEyD,YAAcC,KAAKC,MAAMJ,EAAQ,OAAyB,IAEhE,OAAOvD,IAEXrC,EAAQuF,OAAO,EAAGvF,EAAQjH,UAAWyM,GAErCA,EAAoBpD,QAAQ,CAACC,EAAQvJ,KAC7BuJ,EAAE9H,IAAMd,EAAMuF,SACdiD,EAAW7E,MAAQtE,KAK3BwG,EAAYlC,OAAQ,GAGxBxC,mBAAM,IAAMnB,EAAMwE,WAAapD,IAC3BkF,EAAU3C,MAAQ0C,IAGdjF,GAEA6H,EAAQ,CACJ1D,OAAQvF,EAAMuF,OACdvE,OAAQhB,EAAMgB,WAK1BG,mBAAM2E,EAAUvH,IACA,MAARA,EACAuH,EAASnC,MAAQ,GAEjBwF,EAAWnJ,EAAMgB,UAGzBG,mBAAMiF,EAAQ7H,IACE,MAARA,EACA6H,EAAOzC,MAAQ,GAEfwF,EAAWnJ,EAAMgB,UAIzB,MAAMwL,EAAgBtD,UAClBtD,EAAYjC,OAAQ,QACd8I,gBAAc,CAChBlO,KAAM,CACF,QAAW6C,EAEX,GAAMmF,EAAQiC,EAAW7E,OAAO7C,GAChCwI,QAAQ,IAAIrD,MAAOC,aAG3BN,EAAYjC,OAAQ,EAEpBvD,EAAM,gBAAiBgB,IAerBsL,EAAU,KACZtM,EAAM,qBAAqB,IAG/B,MAAO,CAACkB,EAAUC,KAChB,MAAMoL,EAAsBlL,8BAAkB,YACxCmL,EAAsBnL,8BAAkB,YACxCoL,EAA4BpL,8BAAkB,kBAC9CqL,EAAuBrL,8BAAkB,aACzCsL,EAAuBtL,8BAAkB,aACzCuL,EAAuBvL,8BAAkB,aACzCwL,EAAqBxL,8BAAkB,WACvCyL,EAA0BzL,8BAAkB,gBAC5C0L,EAAuB1L,8BAAkB,aACzC2L,EAAuB3L,8BAAkB,aACzC4L,EAAqBC,8BAAkB,WAE7C,OAAQ3L,yBAAce,yBAAa0K,EAAsB,CACvD5I,WAAYxE,EAAMwE,WAClB,sBAAuBjD,EAAO,KAAOA,EAAO,GAAMuB,GAAkB9C,EAAMwE,WAAc1B,GACxFT,MAAO/B,EAAQ+B,MACfJ,MAAO,MACPyK,QAASA,EACT,wBAAwB,EACxB,yBAAyB,EACzB,eAAgB,aACf,CACDa,OAAQvL,qBAAS,IAAM,CACrB0B,gCAAoB,OAAQ9D,EAAY,CACtCiC,yBAAasL,EAAsB,CACjC9Q,KAAM,UACNmR,MAAO,GACP3K,QAAS6J,GACR,CACD3K,QAASC,qBAAS,IAAM,CACtBG,6BAAiB,QAEnBG,EAAG,QAITP,QAASC,qBAAS,IAAM,CACtBH,yBAAaqL,EAAyB,CACpC1N,MAAOuD,4BAAgB,CAAC,sBAAuB,EAA0B,IAAzBzC,EAAQkF,aAAyB,GAAK,aACrF,CACDzD,QAASC,qBAAS,IAAM,CACpB1B,EAAQkF,aAkDNpC,gCAAoB,IAAI,IAjDvBzB,yBAAce,yBAAakK,EAAqB,CAC/C/M,IAAK,EACLL,MAAO,mBACN,CACDuC,QAASC,qBAAS,IAAM,CACtBH,yBAAa8K,EAAqB,KAAM,CACtC5K,QAASC,qBAAS,IAAM,CACtBH,yBAAa4L,OAAa,CACxBxB,UAAWnG,EAASnC,MACpB,qBAAsBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBgD,EAAUnC,MAAQb,GACrFoJ,QAAS9F,EAAOzC,MAChB,mBAAoBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBsD,EAAQzC,MAAQb,IAChF,KAAM,EAAG,CAAC,YAAa,cAE5BR,EAAG,IAEL/C,EACAsC,yBAAaoB,mBAAOyK,GAAS,CAC3BlO,MAAO,4BACP2F,OAAyB,GAAjBoB,EAAQjH,OAAc,KAC9BkF,WAAYgE,EAAW7E,MACvB,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB0F,EAAY7E,MAAQb,IACvF,CACDf,QAASC,qBAAS,IAAM,EACrBL,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAY+D,EAAS,CAAC3F,EAAM6B,KAC1Ed,yBAAce,yBAAaO,mBAAO0K,GAAQ,CAChDhJ,YAAa/D,EAAKyL,YAClB7M,MAAO,UACPoO,SAAU7E,EACVtN,MAAOgH,EACPiC,YAAa9D,EAAKiN,YAAc,IAAMjN,EAAKkN,YAAc,IACzDjO,IAAK4C,GACJ,CACDJ,MAAOL,qBAAS,IAAM,CACpB0B,gCAAoB,MAAOjE,EAAY,CACrCiE,gCAAoB,OAAQ,KAAMtB,6BAAiBxB,EAAKwL,UAAYxL,EAAKwL,UAAUjG,MAAM,KAAK,GAAK,IAAK,GACxGzC,gCAAoB,OAAQ,KAAMtB,6BAAiBxB,EAAKkJ,UAAUiE,QAAU,EAAInN,EAAKkJ,UAAUiE,OAAS,IAAM,MAAO,GACrHrK,gCAAoB,OAAQ,KAAMtB,6BAAiBxB,EAAKkJ,UAAUC,WAAa9G,mBAAOyD,GAAY9F,EAAKkJ,UAAUC,UAAY,IAAK,OAGtIzH,EAAG,GACF,KAAM,CAAC,cAAe,QAAS,kBAChC,QAENA,EAAG,GACF,EAAG,CAAC,SAAU,iBAEnBA,EAAG,KAGTT,yBAAaqL,EAAyB,CAAE1N,MAAO,uBAAyB,CACtEuC,QAASC,qBAAS,IAAM,CACtBH,yBAAamL,EAAsB,CAAExN,MAAO,oBAAsB,CAChEuC,QAASC,qBAAS,IAAM,CACtB0B,gCAAoB,MAAO,KAAM,CAC/BhE,EACAmC,yBAAagL,EAA2B,CACtCrI,WAAYyD,EAAUtE,MACtB,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBmF,EAAWtE,MAAQb,GACvFtD,MAAO,gBACPwO,UAAW,GACXC,WAAY,GACZ1P,KAAM4J,EAASxE,MACfuK,YAAapH,EACbG,SAAU3G,EAAQkF,cAAwC,GAAxBgB,EAAQ+C,cAAqB9C,EAAS9C,OACvE,KAAM,EAAG,CAAC,aAAc,OAAQ,eAErCD,gCAAoB,MAAO,KAAM,CAC/B/D,EACAkC,yBAAakL,EAAsB,CACjCoB,SAAU3B,EACVhI,WAAYmB,EAAchC,MAC1B,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB6C,EAAehC,MAAQb,GAC3FsL,YAAa,MACbnH,SAAU3G,EAAQkF,cAAgBiB,EAAS9C,OAC1C,CACD5B,QAASC,qBAAS,IAAM,CACtBH,yBAAaiL,EAAsB,CACjCzE,MAAO,MACP1E,MAAO,KAET9B,yBAAaiL,EAAsB,CACjCzE,MAAO,OACP1E,MAAO,IAET9B,yBAAaiL,EAAsB,CACjCzE,MAAO,OACP1E,MAAO,MAGXrB,EAAG,GACF,EAAG,CAAC,aAAc,iBAGzBA,EAAG,IAEL+L,6BAAiB1M,yBAAce,yBAAauK,EAAoB,CAAEzN,MAAO,kBAAoB,CAC3FuC,QAASC,qBAAS,IAAM,CACpB4D,EAAYjC,MAKVP,gCAAoB,IAAI,IAJvBzB,yBAAce,yBAAaO,mBAAOqL,gBAAY,CAC7CzO,IAAK,EACL2G,QAASA,GACR,KAAM,EAAG,CAAC,eAGnBlE,EAAG,KACA,CACH,CAAC+K,EAAoBzH,EAAYjC,WAGrCrB,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,aAAc,c,UChhBvB,MAAM,EAAc,EAEL,U,oCCPf,W,oCCAA,W,o9OC6DO,SAASiM,EAAW3U,GACzB,OAAO,OAAAsD,EAAA,MAAiB,KAAMtD,GASzB,IAAI4U,EAAY,CACrBC,mBAAoB,OACpBC,gBAAiB,OACjBC,oBAAqB,QAoBhB,SAASC,EAAYC,EAAY9K,GACtC,IAAIrI,EAAYqI,EAEVA,aAAkB,SACtBrI,EAAY,IAAI,OAAMqI,IAUxB,IAAIC,EAAQ8K,EAAA,KAA8BpT,GAG1C,OAFAsI,EAAM+K,UAAUF,EAAW,GAAIA,EAAW,IAC1CC,EAAA,KAA2B9K,EAAOtI,GAC3BsI,EAaF,SAASgL,EAA4BC,GAC1C,WAAaA,EAAO,QAIf,SAASC,EAAgBC,EAAgBC,GAE9C,OADAA,EAAOA,GAAQ,GACR,eAAqBD,EAAgB,KAAM,KAAqB,WAAfC,EAAK3J,O,gEClI3D4J,EAAU,KACd,SAASC,EAAcC,EAAGC,GACtB,OAAOlD,KAAKmD,IAAIF,EAAIC,GAAKH,EAEtB,SAASK,EAAQC,EAAQC,EAAGC,GAC/B,IAAIC,EAAI,EACJC,EAAIJ,EAAO,GACf,IAAKI,EACD,OAAO,EAEX,IAAK,IAAI1Q,EAAI,EAAGA,EAAIsQ,EAAOrQ,OAAQD,IAAK,CACpC,IAAI2Q,EAAKL,EAAOtQ,GAChByQ,GAAK,OAAAG,EAAA,MAAYF,EAAE,GAAIA,EAAE,GAAIC,EAAG,GAAIA,EAAG,GAAIJ,EAAGC,GAC9CE,EAAIC,EAER,IAAIE,EAAKP,EAAO,GAIhB,OAHKL,EAAcS,EAAE,GAAIG,EAAG,KAAQZ,EAAcS,EAAE,GAAIG,EAAG,MACvDJ,GAAK,OAAAG,EAAA,MAAYF,EAAE,GAAIA,EAAE,GAAIG,EAAG,GAAIA,EAAG,GAAIN,EAAGC,IAErC,IAANC,EC6BX,IAAIK,EAAgB,GAEpB,SAASC,EAAgBT,EAAQU,GAC/B,IAAK,IAAIN,EAAI,EAAGA,EAAIJ,EAAOrQ,OAAQyQ,IACjC,oBAAoBJ,EAAOI,GAAIJ,EAAOI,GAAIM,GAI9C,SAASC,EAAqBX,EAAQY,EAAKC,EAAKC,GAC9C,IAAK,IAAIpR,EAAI,EAAGA,EAAIsQ,EAAOrQ,OAAQD,IAAK,CACtC,IAAI0Q,EAAIJ,EAAOtQ,GAEXoR,IAEFV,EAAIU,EAAWC,QAAQX,IAGrBA,GAAKY,SAASZ,EAAE,KAAOY,SAASZ,EAAE,MACpC,SAASQ,EAAKA,EAAKR,GACnB,SAASS,EAAKA,EAAKT,KAKzB,SAASa,EAASjB,GAQhB,IAPA,IAAIkB,EAAa,EACbC,EAAK,EACLC,EAAK,EACLC,EAAMrB,EAAOrQ,OACb2R,EAAKtB,EAAOqB,EAAM,GAAG,GACrBE,EAAKvB,EAAOqB,EAAM,GAAG,GAEhB3R,EAAI,EAAGA,EAAI2R,EAAK3R,IAAK,CAC5B,IAAI8R,EAAKxB,EAAOtQ,GAAG,GACf+R,EAAKzB,EAAOtQ,GAAG,GACfkQ,EAAI0B,EAAKG,EAAKD,EAAKD,EACvBL,GAActB,EACduB,IAAOG,EAAKE,GAAM5B,EAClBwB,IAAOG,EAAKE,GAAM7B,EAClB0B,EAAKE,EACLD,EAAKE,EAGP,OAAOP,EAAa,CAACC,EAAKD,EAAa,EAAGE,EAAKF,EAAa,EAAGA,GAAc,CAAClB,EAAO,GAAG,IAAM,EAAGA,EAAO,GAAG,IAAM,GAGnH,IAAI0B,EAEJ,WACE,SAASA,EAAOlV,GACd5C,KAAK4C,KAAOA,EAyBd,OAtBAkV,EAAOxN,UAAUyN,UAAY,SAAUC,GACrChY,KAAKiY,QAAUD,GASjBF,EAAOxN,UAAU4N,UAAY,WAC3B,IAAIF,EAAShY,KAAKiY,QAQlB,OANKD,IAGHA,EAAShY,KAAKiY,QAAUjY,KAAKmY,cAGxBH,GAGFF,EA3BT,GAgCIM,EAEJ,WACE,SAASA,EAAuBC,EAAUC,GACxCtY,KAAK8C,KAAO,UACZ9C,KAAKqY,SAAWA,EAChBrY,KAAKsY,UAAYA,EAGnB,OAAOF,EAPT,GAYIG,EAEJ,WACE,SAASA,EAA0BnC,GACjCpW,KAAK8C,KAAO,aACZ9C,KAAKoW,OAASA,EAGhB,OAAOmC,EANT,GAWI,EAEJ,SAAUC,GAGR,SAASC,EAAc7V,EAAM8V,EAAYC,GACvC,IAAIC,EAAQJ,EAAOK,KAAK7Y,KAAM4C,IAAS5C,KAKvC,OAHA4Y,EAAM9V,KAAO,UACb8V,EAAMF,WAAaA,EACnBE,EAAMX,QAAUU,GAAM,CAACA,EAAG,GAAIA,EAAG,IAC1BC,EAqJT,OA7JA,eAAUH,EAAeD,GAWzBC,EAAcnO,UAAU6N,WAAa,WAKnC,IAJA,IACIW,EADAJ,EAAa1Y,KAAK0Y,WAElBK,EAAiB,EAEZjT,EAAI,EAAGA,EAAI4S,EAAW3S,OAAQD,IAAK,CAC1C,IAAIrE,EAAMiX,EAAW5S,GACjBuS,EAAW5W,EAAI4W,SAGfW,EAAOX,GAAYA,EAAStS,OAE5BiT,EAAOD,IACTD,EAAarX,EACbsX,EAAiBC,GAIrB,GAAIF,EACF,OAAOzB,EAASyB,EAAWT,UAI7B,IAAIY,EAAOjZ,KAAKkZ,kBAChB,MAAO,CAACD,EAAK5C,EAAI4C,EAAKvQ,MAAQ,EAAGuQ,EAAK3C,EAAI2C,EAAKrN,OAAS,IAG1D6M,EAAcnO,UAAU4O,gBAAkB,SAAUhC,GAClD,IAAI+B,EAAOjZ,KAAKmZ,MAEhB,GAAIF,IAAS/B,EACX,OAAO+B,EAGT,IAAIjC,EAAM,CAACoC,IAAUA,KACjBnC,EAAM,EAAEmC,KAAWA,KACnBV,EAAa1Y,KAAK0Y,WAsBtB,OArBA,kBAAKA,GAAY,SAAUjX,GACR,YAAbA,EAAIqB,KAENiU,EAAqBtV,EAAI4W,SAAUrB,EAAKC,EAAKC,GAE7C,kBAAKzV,EAAI2U,QAAQ,SAAUA,GACzBW,EAAqBX,EAAQY,EAAKC,EAAKC,SAKvCE,SAASJ,EAAI,KAAOI,SAASJ,EAAI,KAAOI,SAASH,EAAI,KAAOG,SAASH,EAAI,MAC7ED,EAAI,GAAKA,EAAI,GAAKC,EAAI,GAAKA,EAAI,GAAK,GAGtCgC,EAAO,IAAII,EAAA,KAAarC,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAEjEE,IACHlX,KAAKmZ,MAAQF,GAGRA,GAGTR,EAAcnO,UAAU6L,QAAU,SAAUmD,GAC1C,IAAIL,EAAOjZ,KAAKkZ,kBACZR,EAAa1Y,KAAK0Y,WAEtB,IAAKO,EAAK9C,QAAQmD,EAAM,GAAIA,EAAM,IAChC,OAAO,EAGTC,EAAS,IAAK,IAAIzT,EAAI,EAAG2R,EAAMiB,EAAW3S,OAAQD,EAAI2R,EAAK3R,IAAK,CAC9D,IAAIrE,EAAMiX,EAAW5S,GAErB,GAAiB,YAAbrE,EAAIqB,KAAR,CAIA,IAAIuV,EAAW5W,EAAI4W,SACfC,EAAY7W,EAAI6W,UAEpB,GAAI,EAAuBD,EAAUiB,EAAM,GAAIA,EAAM,IAAK,CAExD,IAAK,IAAIE,EAAI,EAAGA,GAAKlB,EAAYA,EAAUvS,OAAS,GAAIyT,IACtD,GAAI,EAAuBlB,EAAUkB,GAAIF,EAAM,GAAIA,EAAM,IACvD,SAASC,EAIb,OAAO,IAIX,OAAO,GAWTd,EAAcnO,UAAUmP,YAAc,SAAUpD,EAAGC,EAAG5N,EAAOkD,GAC3D,IAAIqN,EAAOjZ,KAAKkZ,kBACZQ,EAAST,EAAKvQ,MAAQuQ,EAAKrN,OAE1BlD,EAEOkD,IACVA,EAASlD,EAAQgR,GAFjBhR,EAAQgR,EAAS9N,EASnB,IAJA,IAAI+N,EAAS,IAAIN,EAAA,KAAahD,EAAGC,EAAG5N,EAAOkD,GACvCkL,EAAYmC,EAAKW,mBAAmBD,GACpCjB,EAAa1Y,KAAK0Y,WAEb5S,EAAI,EAAGA,EAAI4S,EAAW3S,OAAQD,IAAK,CAC1C,IAAIrE,EAAMiX,EAAW5S,GAEJ,YAAbrE,EAAIqB,MACN+T,EAAgBpV,EAAI4W,SAAUvB,GAC9B,kBAAKrV,EAAI6W,WAAW,SAAUuB,GAC5BhD,EAAgBgD,EAAU/C,OAG5B,kBAAKrV,EAAI2U,QAAQ,SAAUA,GACzBS,EAAgBT,EAAQU,MAK9BmC,EAAOjZ,KAAKmZ,MACZF,EAAKa,KAAKH,GAEV3Z,KAAKiY,QAAU,CAACgB,EAAK5C,EAAI4C,EAAKvQ,MAAQ,EAAGuQ,EAAK3C,EAAI2C,EAAKrN,OAAS,IAGlE6M,EAAcnO,UAAUyP,aAAe,SAAUnX,GACvC,MAARA,IAAiBA,EAAO5C,KAAK4C,MAC7B,IAAIoX,EAAY,IAAIvB,EAAc7V,EAAM5C,KAAK0Y,WAAY1Y,KAAKiY,SAI9D,OAHA+B,EAAUb,MAAQnZ,KAAKmZ,MACvBa,EAAUP,YAAc,KAEjBO,GAGFvB,EA9JT,CA+JEX,IAMF,SAAUU,GAGR,SAASyB,EAAarX,EAAMsX,GAC1B,IAAItB,EAAQJ,EAAOK,KAAK7Y,KAAM4C,IAAS5C,KAIvC,OAFA4Y,EAAM9V,KAAO,SACb8V,EAAMuB,oBAAsBD,EACrBtB,EAPT,eAAUqB,EAAczB,GAUxByB,EAAa3P,UAAU6N,WAAa,WAClC,IAAIiC,EAAKpa,KAAKma,oBACVlB,EAAOmB,EAAGlB,kBACVlB,EAAS,CAACiB,EAAK5C,EAAI4C,EAAKvQ,MAAQ,EAAGuQ,EAAK3C,EAAI2C,EAAKrN,OAAS,GAC1DyO,EAAMC,EAAA,YAAgB1D,GACtB+C,EAASS,EAEb,MAAOT,IAAWA,EAAOY,oBACvBD,EAAA,OAAWD,EAAKV,EAAOa,oBAAqBH,GAC5CV,EAASA,EAAOc,OAKlB,OAFAH,EAAA,UAAcD,EAAKA,GACnB,oBAAoBrC,EAAQA,EAAQqC,GAC7BrC,IAzBX,CA6BEF,GC9SF,SAAS4C,EAAOC,GACd,IAAKA,EAAKC,aACR,OAAOD,EAGT,IAAIE,EAAiBF,EACjBG,EAAcD,EAAeE,UAEd,MAAfD,IACFA,EAAc,MAGhB,IAAIE,EAAWH,EAAeG,SAgC9B,OA/BA,UAAYA,GAAU,SAAUC,GAC9B,IAAIC,EAAWD,EAAQC,SACnBC,EAAgBD,EAASC,cACzBC,EAAcF,EAASE,YAG3B,GAAKD,EAIL,OAAQD,EAASpY,MACf,IAAK,aACHoY,EAASE,YAAcC,GAAWD,EAAaD,EAAeL,GAC9D,MAEF,IAAK,UACHQ,GAAYF,EAAaD,EAAeL,GACxC,MAEF,IAAK,kBACHQ,GAAYF,EAAaD,EAAeL,GACxC,MAEF,IAAK,eACH,UAAYM,GAAa,SAAUG,EAAOrS,GACxC,OAAOoS,GAAYC,EAAOJ,EAAcjS,GAAM4R,UAKtDD,EAAeD,cAAe,EACvBC,EAGT,SAASS,GAAYC,EAAOJ,EAAeL,GACzC,IAAK,IAAIU,EAAI,EAAGA,EAAID,EAAMxV,OAAQyV,IAChCD,EAAMC,GAAKH,GAAWE,EAAMC,GAAIL,EAAcK,GAAIV,GAItD,SAASO,GAAWI,EAAYN,EAAeL,GAK7C,IAJA,IAAIva,EAAS,GACTmb,EAAQP,EAAc,GACtBQ,EAAQR,EAAc,GAEjBrV,EAAI,EAAGA,EAAI2V,EAAW1V,OAAQD,GAAK,EAAG,CAC7C,IAAIuQ,EAAIoF,EAAWG,WAAW9V,GAAK,GAC/BwQ,EAAImF,EAAWG,WAAW9V,EAAI,GAAK,GAEvCuQ,EAAIA,GAAK,IAAU,EAAJA,GACfC,EAAIA,GAAK,IAAU,EAAJA,GAEfD,GAAKqF,EACLpF,GAAKqF,EACLD,EAAQrF,EACRsF,EAAQrF,EAER/V,EAAOqQ,KAAK,CAACyF,EAAIyE,EAAaxE,EAAIwE,IAGpC,OAAOva,EAGM,SAASsb,GAAaC,EAASC,GAE5C,OADAD,EAAUpB,EAAOoB,GACV,SAAW,YAAcA,EAAQd,UAAU,SAAUgB,GAE1D,OAAOA,EAAWd,UAAYc,EAAWC,YAAcD,EAAWd,SAASE,YAAYrV,OAAS,MAC9F,SAAUiW,GACZ,IAAIC,EAAaD,EAAWC,WACxBxa,EAAMua,EAAWd,SACjBxC,EAAa,GAEjB,OAAQjX,EAAIqB,MACV,IAAK,UACH,IAAIsY,EAAc3Z,EAAI2Z,YAGtB1C,EAAW9H,KAAK,IAAIwH,EAAuBgD,EAAY,GAAIA,EAAYrZ,MAAM,KAC7E,MAEF,IAAK,eACH,UAAYN,EAAI2Z,aAAa,SAAU/T,GACjCA,EAAK,IACPqR,EAAW9H,KAAK,IAAIwH,EAAuB/Q,EAAK,GAAIA,EAAKtF,MAAM,QAGnE,MAEF,IAAK,aACH2W,EAAW9H,KAAK,IAAI2H,EAA0B,CAAC9W,EAAI2Z,eACnD,MAEF,IAAK,kBACH1C,EAAW9H,KAAK,IAAI2H,EAA0B9W,EAAI2Z,cAGtD,IAAIc,EAAS,IAAI,EAAcD,EAAWF,GAAgB,QAASrD,EAAYuD,EAAWtD,IAE1F,OADAuD,EAAOD,WAAaA,EACbC,K,gXCpEJ,SAASC,GAAqBC,GACnC,IAAI1G,EAAQ2G,EAAA,KAAeC,OAAOF,GAElC,OADAC,EAAA,KAAeE,cAAc7G,GACtBA,EAEF,SAAS8G,GAAoBJ,GAClC,IAAIK,EAAO,OAAcH,OAAOF,GAEhC,OADA,OAAcG,cAAcE,GACrBA,EAEF,SAASC,GAAkBN,GAChC,IAAI1G,EAAQiH,EAAA,KAAYL,OAAOF,GAE/B,OADAO,EAAA,KAAYJ,cAAc7G,GACnBA,EAEF,SAASkH,GAAgBR,GAC9B,IAAIK,EAAOI,EAAA,KAAUP,OAAOF,GAE5B,OADAS,EAAA,KAAUN,cAAcE,GACjBA,E,iBC9DT,eAAIK,GAAA,O,kCClDJ,W,0HC8CIC,EAAgB,EAAVhK,KAAKiK,GACXC,EAASlK,KAAKiK,GAAK,IAEvB,SAASE,EAAY7c,EAAa8c,GAChC,OAAO,OAAqB9c,EAAY+c,qBAAsB,CAC5D1U,MAAOyU,EAAIE,WACXzR,OAAQuR,EAAIG,cAIT,SAASC,EAAkBld,EAAa8c,GAC7C,IAAIK,EAAWN,EAAY7c,EAAa8c,GACpCnF,EAAS3X,EAAYC,IAAI,UACzBmd,EAASpd,EAAYC,IAAI,UAExB,aAAemd,KAClBA,EAAS,CAAC,EAAGA,IAGV,aAAezF,KAClBA,EAAS,CAACA,EAAQA,IAGpB,IAKIT,EACAC,EANA9O,EAAQ,eAAa8U,EAAS9U,MAAOyU,EAAIE,YACzCzR,EAAS,eAAa4R,EAAS5R,OAAQuR,EAAIG,aAC3CtE,EAAOjG,KAAKiE,IAAItO,EAAOkD,GACvB8R,EAAK,eAAaD,EAAO,GAAIzE,EAAO,GACpC2E,EAAI,eAAaF,EAAO,GAAIzE,EAAO,GAGnC4E,EAAWvd,EAAYwd,iBAE3B,GAAID,EAAU,CAEZ,IAAIE,EAAQF,EAASG,YAAY/F,GACjCT,EAAKuG,EAAM,IAAM,EACjBtG,EAAKsG,EAAM,IAAM,OAEjBvG,EAAK,eAAaS,EAAO,GAAItP,GAAS8U,EAASnH,EAC/CmB,EAAK,eAAaQ,EAAO,GAAIpM,GAAU4R,EAASlH,EAGlD,MAAO,CACLiB,GAAIA,EACJC,GAAIA,EACJkG,GAAIA,EACJC,EAAGA,GAGQ,SAASK,EAAUC,EAAYtc,EAASwb,GACrDxb,EAAQuc,iBAAiBD,GAAY,SAAU5d,GAC7C,IAAI2E,EAAO3E,EAAYqP,UACnByO,EAAWnZ,EAAKoZ,aAAa,SAC7BZ,EAAWN,EAAY7c,EAAa8c,GAEpCkB,EAAKd,EAAkBld,EAAa8c,GACpC5F,EAAK8G,EAAG9G,GACRC,EAAK6G,EAAG7G,GACRmG,EAAIU,EAAGV,EACPD,EAAKW,EAAGX,GAERY,GAAcje,EAAYC,IAAI,cAAgB2c,EAC9CsB,EAAWle,EAAYC,IAAI,YAAc2c,EACzCuB,EAAiB,EACrBxZ,EAAKyZ,KAAKN,GAAU,SAAU/T,IAC3BsU,MAAMtU,IAAUoU,OAEnB,IAAIG,EAAM3Z,EAAK4Z,OAAOT,GAElBU,EAAa9L,KAAKiK,IAAM2B,GAAOH,GAAkB,EACjDM,EAAYze,EAAYC,IAAI,aAC5Bye,EAAW1e,EAAYC,IAAI,YAC3B0e,EAAmB3e,EAAYC,IAAI,oBAEnC2e,EAASja,EAAKka,cAAcf,GAChCc,EAAO,GAAK,EAEZ,IAAIE,EAAYpC,EACZqC,EAA6B,EAC7BC,EAAef,EACfgB,EAAMR,EAAY,GAAK,EAmD3B,GAlDA9Z,EAAKua,UAAU,CACb/B,SAAUA,EACVG,EAAGA,IAEL3Y,EAAKyZ,KAAKN,GAAU,SAAU/T,EAAOlB,GACnC,IAAIsW,EAEJ,GAAId,MAAMtU,GACRpF,EAAKya,cAAcvW,EAAK,CACtBsW,MAAOE,IACPpB,WAAYoB,IACZC,SAAUD,IACVZ,UAAWA,EACXvH,GAAIA,EACJC,GAAIA,EACJkG,GAAIA,EACJC,EAAGoB,EAAWW,IAAM/B,QATxB,CAgBE6B,EADe,SAAbT,EACc,IAARJ,GAAaK,EAAmBH,EAAazU,EAAQyU,EAErD9B,EAAMyB,EAGZgB,EAAQjB,GACViB,EAAQjB,EACRY,GAAaZ,GAEba,GAA8BhV,EAGhC,IAAIuV,EAAWN,EAAeC,EAAME,EACpCxa,EAAKya,cAAcvW,EAAK,CACtBsW,MAAOA,EACPlB,WAAYe,EACZM,SAAUA,EACVb,UAAWA,EACXvH,GAAIA,EACJC,GAAIA,EACJkG,GAAIA,EACJC,EAAGoB,EAAW,eAAU3U,EAAO6U,EAAQ,CAACvB,EAAIC,IAAMA,IAEpD0B,EAAeM,MAIbR,EAAYpC,GAAOyB,EAGrB,GAAIW,GAAa,KAAM,CACrB,IAAIS,EAAU7C,EAAMyB,EACpBxZ,EAAKyZ,KAAKN,GAAU,SAAU/T,EAAOlB,GACnC,IAAKwV,MAAMtU,GAAQ,CACjB,IAAIyV,EAAW7a,EAAK8a,cAAc5W,GAClC2W,EAASL,MAAQI,EACjBC,EAASvB,WAAaA,EAAagB,EAAMpW,EAAM0W,EAC/CC,EAASF,SAAWrB,EAAagB,GAAOpW,EAAM,GAAK0W,WAIvDf,EAAaM,EAAYC,EACzBC,EAAef,EACftZ,EAAKyZ,KAAKN,GAAU,SAAU/T,EAAOlB,GACnC,IAAKwV,MAAMtU,GAAQ,CACjB,IAAI2V,EAAW/a,EAAK8a,cAAc5W,GAC9BsW,EAAQO,EAASP,QAAUjB,EAAWA,EAAWnU,EAAQyU,EAC7DkB,EAASzB,WAAae,EACtBU,EAASJ,SAAWN,EAAeC,EAAME,EACzCH,GAAgBC,EAAME,SC5JnB,SAASQ,EAAW/B,GACjC,MAAO,CACLA,WAAYA,EACZgC,MAAO,SAAU5f,EAAasB,GAC5B,IAAIue,EAAeve,EAAQwe,eAAe,CACxCC,SAAU,WAGZ,GAAKF,GAAiBA,EAAana,OAAnC,CAIA,IAAIf,EAAO3E,EAAYqP,UACvB1K,EAAKqb,YAAW,SAAUnX,GAGxB,IAFA,IAAItG,EAAOoC,EAAKsb,QAAQpX,GAEfpD,EAAI,EAAGA,EAAIoa,EAAana,OAAQD,IAEvC,IAAKoa,EAAapa,GAAGya,WAAW3d,GAC9B,OAAO,EAIX,OAAO,Q,4HCjBX,EAASmQ,KAAKiK,GAAK,IAEvB,SAASwD,EAAiB7U,EAAM4L,EAAIC,EAAImG,EAAG2B,EAAKmB,EAAWC,EAAYC,EAAUC,EAASC,GACxF,KAAIlV,EAAK5F,OAAS,GAAlB,CAmEA,IAFA,IAAI0R,EAAM9L,EAAK5F,OAEND,EAAI,EAAGA,EAAI2R,EAAK3R,IACvB,GAAyB,UAArB6F,EAAK7F,GAAGgb,UAAiD,cAAzBnV,EAAK7F,GAAGib,aAA8B,CACxE,IAAIC,EAAKrV,EAAK7F,GAAGgJ,MAAMuH,EAAIwK,EAC3BlV,EAAK7F,GAAGmb,WAAW,GAAG,IAAMD,EAC5BrV,EAAK7F,GAAGgJ,MAAMuH,EAAIwK,EAIlB,eAAelV,EAAMiV,EAASA,EAAUF,IAC1CQ,EAAavV,GAtEf,SAASwV,EAAwCC,GAI/C,IAHA,IAAIC,EAAKD,EAAKC,GACVC,EAAMD,EAAKA,EAENvb,EAAI,EAAGA,EAAIsb,EAAKzV,KAAK5F,OAAQD,IAAK,CACzC,IAAIuB,EAAO+Z,EAAKzV,KAAK7F,GACjByb,EAAKxO,KAAKmD,IAAI7O,EAAKyH,MAAMwH,EAAIkB,GAE7BgK,EAAK7D,EAAItW,EAAKoQ,IACdgK,EAAMD,EAAKA,EAEXR,EAAKjO,KAAK2O,MAAM,EAAI3O,KAAKmD,IAAIqL,EAAKA,EAAKD,IAAQG,GAC/CE,EAAOpK,GAAMyJ,EAAK3Z,EAAKua,MAAQtC,EAC/BuC,EAASF,EAAOta,EAAKyH,MAAMuH,EAC3ByL,EAAiBza,EAAK0a,gBAAkBF,EAASvC,EAErD0C,EAAmB3a,EAAMya,GAAgB,GACzCza,EAAKyH,MAAMuH,EAAIsL,GAKnB,SAAST,EAAae,GAWpB,IATA,IAAIC,EAAU,CACZvW,KAAM,GACNwW,KAAM,GAEJC,EAAa,CACfzW,KAAM,GACNwW,KAAM,GAGCrc,EAAI,EAAGA,EAAImc,EAAMlc,OAAQD,IAChC,GAA8B,SAA1Bmc,EAAMnc,GAAGib,aAAb,CAIA,IAAI1Z,EAAO4a,EAAMnc,GACbsb,EAAO/Z,EAAKyH,MAAMwH,EAAIkB,EAAK4K,EAAaF,EACxCX,EAAKxO,KAAKmD,IAAI7O,EAAKyH,MAAMwH,EAAIkB,GAEjC,GAAI+J,GAAMH,EAAKe,KAAM,CACnB,IAAInB,EAAK3Z,EAAKyH,MAAMuH,EAAIkB,EAAKlQ,EAAKua,KAAOtC,EAErCkC,EAAK7D,EAAItW,EAAKoQ,IAEd4J,EAAKtO,KAAKmD,IAAI8K,GAAMQ,EAAKzO,KAAK2O,KAAKH,EAAKA,GAAM,EAAIP,EAAKA,EAAKQ,EAAKA,IAAOA,EAC5EJ,EAAKC,GAAKA,EACVD,EAAKe,KAAOZ,EAGdH,EAAKzV,KAAKiF,KAAKvJ,GAGjB8Z,EAAwCe,GACxCf,EAAwCiB,IAkB5C,SAASC,EAAaC,EAAiB/K,EAAIC,EAAImG,EAAG8C,EAAWC,EAAYC,EAAUC,GAMjF,IALA,IAAI2B,EAAW,GACXC,EAAY,GACZC,EAAYC,OAAOC,UACnBC,GAAcF,OAAOC,UAEhB7c,EAAI,EAAGA,EAAIwc,EAAgBvc,OAAQD,IAAK,CAC/C,IAAIgJ,EAAQwT,EAAgBxc,GAAGgJ,MAE3B+T,EAAiBP,EAAgBxc,MAIjCgJ,EAAMuH,EAAIkB,GACZkL,EAAY1P,KAAKiE,IAAIyL,EAAW3T,EAAMuH,GACtCkM,EAAS3R,KAAK0R,EAAgBxc,MAE9B8c,EAAa7P,KAAKkE,IAAI2L,EAAY9T,EAAMuH,GACxCmM,EAAU5R,KAAK0R,EAAgBxc,MAInC,IAASA,EAAI,EAAGA,EAAIwc,EAAgBvc,OAAQD,IAAK,CAC/C,IAAIgd,EAASR,EAAgBxc,GAE7B,IAAK+c,EAAiBC,IAAWA,EAAO7B,WAAY,CAClD,GAA8B,MAA1B6B,EAAOC,gBACT,SAGEjU,EAAQgU,EAAOhU,MAAnB,IACImS,EAAa6B,EAAO7B,WACpBc,OAAkB,EAIlBA,EAFwB,SAAxBe,EAAO/B,aACLjS,EAAMuH,EAAIkB,EACM0J,EAAW,GAAG,GAAK6B,EAAOE,cAAgBrC,EAAWmC,EAAOG,aAE5DtC,EAAWF,EAAYqC,EAAOG,aAAehC,EAAW,GAAG,GAAK6B,EAAOE,cAE1D,cAAxBF,EAAO/B,aACZjS,EAAMuH,EAAIkB,EACMkL,EAAY9B,EAAWmC,EAAOI,YAE9BvC,EAAWF,EAAYmC,EAAaE,EAAOI,YAG3DpU,EAAMuH,EAAIkB,EACMzI,EAAMuH,EAAIsK,EAAWmC,EAAOI,YAE5BvC,EAAWF,EAAY3R,EAAMuH,EAAIyM,EAAOI,YAI9DJ,EAAOf,gBAAkBA,EACzBC,EAAmBc,EAAQf,IAI/BvB,EAAiBgC,EAAWjL,EAAIC,EAAImG,EAAG,EAAG8C,EAAWC,EAAYC,EAAUC,EAASgC,GACpFpC,EAAiB+B,EAAUhL,EAAIC,EAAImG,GAAI,EAAG8C,EAAWC,EAAYC,EAAUC,EAAS6B,GAEpF,IAAS3c,EAAI,EAAGA,EAAIwc,EAAgBvc,OAAQD,IAAK,CAC3Cgd,EAASR,EAAgBxc,GAE7B,IAAK+c,EAAiBC,IAAWA,EAAO7B,WAAY,CAC9CnS,EAAQgU,EAAOhU,MACfmS,EAAa6B,EAAO7B,WADxB,IAEIkC,EAAwC,SAAxBL,EAAO/B,aACvBqC,EAAUtU,EAAMvG,MAAM6a,QACtBC,EAAWD,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAE/CE,EAAgBxU,EAAMvG,MAAMgb,gBAAkB,EAAIF,EAClDG,EAAgBV,EAAO7J,KAAKvQ,MAAQ4a,EACpCG,EAAOxC,EAAW,GAAG,GAAKA,EAAW,GAAG,GAExCkC,EACErU,EAAMuH,EAAIkB,EACZ0J,EAAW,GAAG,GAAKN,EAAWmC,EAAOG,aAAeO,EAAgBV,EAAOE,cAE3E/B,EAAW,GAAG,GAAKN,EAAWF,EAAYqC,EAAOG,aAAeO,EAAgBV,EAAOE,eAGrFlU,EAAMuH,EAAIkB,EACZ0J,EAAW,GAAG,GAAKnS,EAAMuH,EAAIyM,EAAOE,cAEpC/B,EAAW,GAAG,GAAKnS,EAAMuH,EAAIyM,EAAOE,cAGtC/B,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKwC,GAGxCxC,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKnS,EAAMwH,IAgBlD,SAAS0L,EAAmBc,EAAQY,EAAgBC,GAKlD,QAJyB,IAArBA,IACFA,GAAmB,GAGS,MAA1Bb,EAAOC,gBAAX,CAKA,IAAIjU,EAAQgU,EAAOhU,MACfvG,EAAQuG,EAAMvG,MACdqb,EAAWd,EAAO7J,KAClB4K,EAAUtb,EAAMgb,gBAChBH,EAAU7a,EAAM6a,QAChBC,EAAWD,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAC/CU,EAAWvb,EAAMub,SAEjBC,EAAgBH,EAASlb,OAASmb,EAAU,EAAIR,GAEpD,GAAIK,EAAiBK,GAAiBJ,EAAkB,CACtD,IAAIK,EAAYJ,EAAShY,OAEzB,GAAIkY,GAAYA,EAASG,MAAM,SAAU,CAGvCnV,EAAMoV,SAAS,kBAAmB,MAElCpV,EAAMoV,SAAS,QAASR,EAAiBL,GAEzC,IAAIc,EAAYrV,EAAMoK,kBACtBpK,EAAMoV,SAAS,QAASnR,KAAKqR,KAAKD,EAAUzb,QAC5CoG,EAAMoV,SAAS,kBAAmBL,OAC7B,CACL,IAAIQ,EAAsBX,EAAiBL,EACvCiB,EAAWZ,EAAiBK,EAC9BM,EAEFV,EAAmBU,EAAsBvB,EAAOyB,mBAG9C,KAGAF,EAEF,KACAvV,EAAMoV,SAAS,QAASI,GAG1B,IAAIE,EAAU1V,EAAMoK,kBACpB0K,EAASlb,MAAQ8b,EAAQ9b,MACzB,IAAI+b,GAAU3V,EAAMvG,MAAMkc,QAAU,GAAK,IACzCb,EAAShY,OAAS4Y,EAAQ5Y,OAAS6Y,EACnCb,EAAStN,IAAMsN,EAAShY,OAASoY,GAAa,IAIlD,SAASnB,EAAiB6B,GAExB,MAAgC,WAAzBA,EAAY5D,SAGN,SAAS6D,EAAetkB,GACrC,IAEIkX,EACAC,EAHAxS,EAAO3E,EAAYqP,UACnB4S,EAAkB,GAGlBsC,GAAiB,EACjBC,GAAsBxkB,EAAYC,IAAI,sBAAwB,GAAK,EACnEkd,EAAWxY,EAAK8f,UAAU,YAC1BnH,EAAI3Y,EAAK8f,UAAU,KACnBrE,EAAYjD,EAAS9U,MACrBiY,EAAWnD,EAASnH,EACpBuK,EAAUpD,EAASlH,EACnBoK,EAAalD,EAAS5R,OAE1B,SAASmZ,EAAW3K,GAClBA,EAAG4K,QAAS,EAGd,SAASC,EAAanW,GACpB,IAAKA,EAAMkW,OACT,OAAO,EAGT,IAAK,IAAI1e,KAAOwI,EAAMoW,OACpB,IAAiC,IAA7BpW,EAAMoW,OAAO5e,GAAK0e,OACpB,OAAO,EAIX,OAAO,EAGThgB,EAAKyZ,MAAK,SAAUvV,GAClB,IAAIic,EAASngB,EAAKogB,iBAAiBlc,GAC/Bwb,EAAcS,EAAOE,MACrBvW,EAAQqW,EAAOG,iBACfC,EAAYJ,EAAOK,mBACnBC,EAAYzgB,EAAK0gB,aAAaxc,GAC9Byc,EAAaF,EAAUG,SAAS,SAEhCC,EAAgBF,EAAWrlB,IAAI,aAAemlB,EAAUnlB,IAAI,CAAC,WAAY,QAAS,aAClF0iB,EAAgB2C,EAAWrlB,IAAI,uBAC/BygB,EAAe4E,EAAWrlB,IAAI,WAC9B2iB,EAAe,eAAa0C,EAAWrlB,IAAI,gBAAiBmgB,GAC5DyC,EAAcyC,EAAWrlB,IAAI,eAC7BwlB,EAAiBL,EAAUG,SAAS,aACpCG,EAAeD,EAAexlB,IAAI,UACtCylB,EAAe,eAAaA,EAActF,GAC1C,IAAIuF,EAAgBF,EAAexlB,IAAI,WAGvC,GAFA0lB,EAAgB,eAAaA,EAAevF,GAExC1N,KAAKmD,IAAIwO,EAAY/E,SAAW+E,EAAYpG,YAAcuG,EAI5D,OAHA,kBAAK/V,EAAMoW,OAAQH,GACnB,kBAAKQ,EAAUL,OAAQH,QACvBjW,EAAMkW,OAASO,EAAUP,QAAS,GAIpC,GAAKC,EAAanW,GAAlB,CAIA,IAGImX,EACAC,EACAjF,EACAkF,EANAC,GAAY1B,EAAYpG,WAAaoG,EAAY/E,UAAY,EAC7D0G,EAAKtT,KAAKuT,IAAIF,GACdG,EAAKxT,KAAKyT,IAAIJ,GAKlB7O,EAAKmN,EAAYnN,GACjBC,EAAKkN,EAAYlN,GACjB,IAAIiP,EAAkC,WAAlBZ,GAAgD,UAAlBA,EAElD,GAAsB,WAAlBA,EACFI,EAAQvB,EAAYnN,GACpB2O,EAAQxB,EAAYlN,GACpB2O,EAAY,aACP,CACL,IAAIvO,GAAM6O,GAAiB/B,EAAY/G,EAAI+G,EAAYhH,IAAM,EAAI2I,EAAK3B,EAAY/G,EAAI0I,GAAM9O,EACxFM,GAAM4O,GAAiB/B,EAAY/G,EAAI+G,EAAYhH,IAAM,EAAI6I,EAAK7B,EAAY/G,EAAI4I,GAAM/O,EAI5F,GAHAyO,EAAQrO,EAAU,EAALyO,EACbH,EAAQrO,EAAU,EAAL0O,GAERE,EAAe,CAElB,IAAIC,EAAK9O,EAAKyO,GAAMN,EAAepI,EAAI+G,EAAY/G,GAC/CgJ,EAAK9O,EAAK0O,GAAMR,EAAepI,EAAI+G,EAAY/G,GAC/CiJ,EAAKF,GAAML,EAAK,GAAK,EAAI,GAAKL,EAC9Ba,EAAKF,EAIPV,EAFmB,SAAjBlF,EAEMsF,EAAK,EAAI1F,EAAWsC,EAAetC,EAAWF,EAAYwC,EAE1D2D,GAAMP,EAAK,GAAKrD,EAAgBA,GAG1CkD,EAAQW,EACR5F,EAAa,CAAC,CAACrJ,EAAIC,GAAK,CAAC6O,EAAIC,GAAK,CAACC,EAAIC,IAGzCV,EAAYM,EAAgB,SAA4B,SAAjB1F,EAA0BsF,EAAK,EAAI,QAAU,OAASA,EAAK,EAAI,OAAS,QAGjH,IAAIrJ,EAAKjK,KAAKiK,GACV8J,EAAc,EACdC,EAASpB,EAAWrlB,IAAI,UAE5B,GAAI,sBAASymB,GACXD,EAAcC,GAAU/J,EAAK,UACxB,GAAsB,WAAlB6I,EACTiB,EAAc,OACT,GAAe,WAAXC,IAAkC,IAAXA,EAAiB,CACjD,IAAIC,EAAcX,EAAK,GAAKD,EAAWpJ,GAAMoJ,EAC7CU,EAAcE,OACT,GAAe,eAAXD,GAA6C,YAAlBlB,GAAiD,UAAlBA,EAA2B,CAC9F,IAAIoB,EAAMlU,KAAKmU,MAAMb,EAAIE,GAErBU,EAAM,IACRA,EAAW,EAALjK,EAASiK,GAGjB,IAAIE,EAASZ,EAAK,EAEdY,IACFF,EAAMjK,EAAKiK,GAGbH,EAAcG,EAAMjK,EAWtB,GARA4H,IAAmBkC,EACnBhY,EAAMuH,EAAI4P,EACVnX,EAAMwH,EAAI4P,EACVpX,EAAMsY,SAAWN,EACjBhY,EAAMoV,SAAS,CACbmD,cAAe,WAGZZ,EA0BE,CACL3X,EAAMoV,SAAS,CACboD,MAAOnB,IAET,IAAIoB,EAAczY,EAAMoW,OAAO3Z,OAE3Bgc,IACFA,EAAYlR,GAAKvH,EAAMuH,EACvBkR,EAAYjR,GAAKxH,EAAMwH,OAlCP,CAClB,IAAIsN,EAAW9U,EAAMoK,kBAAkBsO,QACvC5D,EAAS6D,eAAe3Y,EAAM4Y,wBAE9B,IAAIjD,GAAU3V,EAAMvG,MAAMkc,QAAU,GAAK,IACzCb,EAAStN,GAAKmO,EAAS,EACvBb,EAAShY,QAAU6Y,EACnBnC,EAAgB1R,KAAK,CACnB9B,MAAOA,EACPyW,UAAWA,EACXzE,SAAU+E,EACVpO,IAAKsO,EACLnE,KAAMoE,EACN2B,aAAc7B,EAAexlB,IAAI,gBACjCsnB,gBAAiB9B,EAAexlB,IAAI,mBACpCunB,cAAe,IAAIC,EAAA,KAAMzB,EAAIE,GAC7BtF,WAAYA,EACZkF,UAAWA,EACXnD,cAAeA,EACfjC,aAAcA,EACdkC,aAAcA,EACdC,YAAaA,EACbjK,KAAM2K,EACNW,mBAAoBX,EAASlb,MAC7Bqa,gBAAiBjU,EAAMvG,MAAMG,QAcjCyc,EAAO4C,cAAc,CACnBC,OAAQvB,SAIP7B,GAAkBvkB,EAAYC,IAAI,sBACrC+hB,EAAaC,EAAiB/K,EAAIC,EAAImG,EAAG8C,EAAWC,EAAYC,EAAUC,GAG5E,IAAK,IAAI9a,EAAI,EAAGA,EAAIwc,EAAgBvc,OAAQD,IAAK,CAC/C,IAAIgd,EAASR,EAAgBxc,GACzBgJ,EAAQgU,EAAOhU,MACfyW,EAAYzC,EAAOyC,UACnB0C,EAAevJ,MAAM5P,EAAMuH,IAAMqI,MAAM5P,EAAMwH,GAEjD,GAAIxH,EAAO,CACTA,EAAMoV,SAAS,CACboD,MAAOxE,EAAOqD,YAGZ8B,IACF,kBAAKnZ,EAAMoW,OAAQH,GACnBjW,EAAMkW,QAAS,GAGjB,IAAIuC,EAAczY,EAAMoW,OAAO3Z,OAE3Bgc,IACFA,EAAYlR,GAAKvH,EAAMuH,EACvBkR,EAAYjR,GAAKxH,EAAMwH,GAI3B,GAAIiP,EAAW,CACb,IAAItE,EAAa6B,EAAO7B,WAEpBgH,IAAiBhH,GACnB,kBAAKsE,EAAUL,OAAQH,GACvBQ,EAAUP,QAAS,IAEnB,eAAe/D,EAAY6B,EAAO6E,cAClC,eAAkB1G,EAAY6B,EAAO+E,cAAe/E,EAAO8E,iBAC3DrC,EAAU2C,SAAS,CACjB9R,OAAQ6K,IAGVnS,EAAMqZ,aAAaC,oBAAsB,CACvCC,OAAQ,IAAIP,EAAA,KAAM7G,EAAW,GAAG,GAAIA,EAAW,GAAG,Q,4BClerD,SAASqH,EAAsBC,EAAOlD,EAAOmD,GAClD,IAAIC,EAAeF,EAAMjoB,IAAI,gBAE7B,GAAoB,MAAhBmoB,EACF,OAAOD,EAAa,CAClBC,aAAc,GACZ,KAGD,qBAAQA,KACXA,EAAe,CAACA,EAAcA,EAAcA,EAAcA,IAG5D,IAAIC,EAAK3V,KAAKmD,IAAImP,EAAM1H,GAAK,EAAI0H,EAAM3H,IAAM,GAC7C,MAAO,CACL+K,aAAc,iBAAIA,GAAc,SAAUE,GACxC,OAAO,eAAaA,EAAID,OCH9B,IAAI,EAEJ,SAAUlQ,GAGR,SAASoQ,EAAS5jB,EAAMkE,EAAKoV,GAC3B,IAAI1F,EAAQJ,EAAOK,KAAK7Y,OAASA,KAEjC4Y,EAAMiQ,GAAK,EACX,IAAI9a,EAAO,IAAI,OAMf,OAJA6K,EAAMkQ,eAAe/a,GAErB6K,EAAMmQ,WAAW/jB,EAAMkE,EAAKoV,GAAY,GAEjC1F,EA0JT,OAtKA,eAAUgQ,EAAUpQ,GAepBoQ,EAASte,UAAUye,WAAa,SAAU/jB,EAAMkE,EAAKoV,EAAY0K,GAC/D,IAAI7D,EAASnlB,KACTK,EAAc2E,EAAKikB,UACnBxD,EAAYzgB,EAAK0gB,aAAaxc,GAC9BggB,EAAgBzD,EAAUG,SAAS,YACnC9C,EAAS9d,EAAK8a,cAAc5W,GAG5Bwb,EAAc,oBAAO4D,EAAsB7C,EAAUG,SAAS,aAAc9C,GAAQ,GAAOA,GAE/F,GAAIpE,MAAMgG,EAAYpG,YAEpB6G,EAAO+C,SAASxD,OAFlB,CAMA,GAAIsE,EAAa,CACf7D,EAAO+C,SAASxD,GAChB,IAAIyE,EAAgB9oB,EAAY+oB,WAAW,iBAEvC/oB,EAAYsB,QAAQ0nB,KAGtB,OAAkBlE,EAAQ,CACxBmE,OAAQ,EACRC,OAAQ,GACPlpB,EAAa,CACdkF,UAAW2D,EACXsgB,QAAQ,IAEVrE,EAAOsE,QAAU/E,EAAYnN,GAC7B4N,EAAOuE,QAAUhF,EAAYlN,IACF,UAAlB2R,GACThE,EAAOE,MAAM1H,EAAImF,EAAOpF,GACxB,OAAkByH,EAAQ,CACxBE,MAAO,CACL1H,EAAGmF,EAAOnF,IAEXtd,EAAa6I,IAGI,MAAdoV,GACF6G,EAAO+C,SAAS,CACd5J,WAAYA,EACZqB,SAAUrB,IAEZ,OAAkB6G,EAAQ,CACxBE,MAAO,CACL/G,WAAYwE,EAAOxE,WACnBqB,SAAUmD,EAAOnD,WAElBtf,EAAa6I,KAEhBic,EAAOE,MAAM1F,SAAWmD,EAAOxE,WAC/B,OAAoB6G,EAAQ,CAC1BE,MAAO,CACL1F,SAAUmD,EAAOnD,WAElBtf,EAAa6I,SAItB,eAAaic,GAEb,OAAoBA,EAAQ,CAC1BE,MAAOX,GACNrkB,EAAa6I,GAGlBic,EAAOwE,SAAS3kB,EAAK4kB,cAAc1gB,EAAK,UACxC,eAAyBic,EAAQM,GACjC,IAAIW,GAAYtD,EAAOxE,WAAawE,EAAOnD,UAAY,EACnDkK,EAASxpB,EAAYC,IAAI,kBACzB0gB,EAAKjO,KAAKuT,IAAIF,GAAYyD,EAC1BtI,EAAKxO,KAAKyT,IAAIJ,GAAYyD,EAC1BC,EAAcrE,EAAU2D,WAAW,UACvCU,GAAe3E,EAAO4E,KAAK,SAAUD,GAErC9pB,KAAKgqB,aAAa3pB,EAAa2E,EAAMkE,GAErCic,EAAO8E,YAAY,YAAY5E,MAAQ,oBAAO,CAC5C1H,EAAGmF,EAAOnF,GAAKuL,EAAc5oB,IAAI,UAAW4oB,EAAc5oB,IAAI,cAAoB,IACjFgoB,EAAsBY,EAActD,SAAS,aAAc9C,IAC9D,oBAAOqC,EAAO8E,YAAY,UAAW,CACnC5T,EAAG2K,EACH1K,EAAGiL,EACH8D,MAAOiD,EAAsB7C,EAAUG,SAAS,CAAC,SAAU,cAAe9C,KAE5E,oBAAOqC,EAAO8E,YAAY,QAAS,CACjC5E,MAAOiD,EAAsB7C,EAAUG,SAAS,CAAC,OAAQ,cAAe9C,KAE1E,IAAIyC,EAAYJ,EAAOK,mBACnB0E,EAAY/E,EAAOG,iBACvBC,GAAa,oBAAOA,EAAU0E,YAAY,UAAW,CACnD5T,EAAG2K,EACH1K,EAAGiL,IAGL,oBAAO2I,EAAUD,YAAY,UAAW,CACtC5T,EAAG2K,EACH1K,EAAGiL,IAEL,eAAoBvhB,KAAMkpB,EAAc5oB,IAAI,SAAU4oB,EAAc5oB,IAAI,aAAc4oB,EAAc5oB,IAAI,eAG1GsoB,EAASte,UAAU0f,aAAe,SAAU3pB,EAAa2E,EAAMkE,GAC7D,IAAIic,EAASnlB,KACTylB,EAAYzgB,EAAK0gB,aAAaxc,GAC9B4c,EAAiBL,EAAUG,SAAS,aACpCrd,EAAQvD,EAAK4kB,cAAc1gB,EAAK,SAChCihB,EAAc5hB,GAASA,EAAM6hB,KAC7BC,EAAgB9hB,GAASA,EAAM+hB,QACnC,eAAcnF,EAAQ,eAAqBM,GAAY,CACrD8E,aAAcvlB,EAAKikB,UACnBuB,eAAgBthB,EAChBuhB,aAAcN,EACdO,eAAgBL,EAChBM,YAAatqB,EAAYuqB,kBAAkB1hB,EAAK,WAAalE,EAAKsb,QAAQpX,KAE5E,IAAIghB,EAAY/E,EAAOG,iBAEvBH,EAAO4C,cAAc,CAEnBjH,SAAU,KACVsG,SAAU,OAIZ8C,EAAUH,KAAK,CACblB,GAAI,KAEN,IAAIhD,EAAgBxlB,EAAYC,IAAI,CAAC,QAAS,aAE9C,GAAsB,YAAlBulB,GAAiD,UAAlBA,EACjCV,EAAO0F,0BACF,CACL,IAAIC,EAAW9qB,KAAKwlB,mBAEfsF,IACHA,EAAW,IAAI,OACf9qB,KAAK+qB,iBAAiBD,IAIxB,eAAkB9qB,KAAM,eAAyBylB,GAAY,CAC3DuF,OAAQb,EACRG,QAAS,uBAAUxE,EAAexlB,IAAI,CAAC,YAAa,YAAa+pB,EAAe,OAK/EzB,EAvKT,CAwKE,QAGE,EAEJ,SAAUpQ,GAGR,SAASyS,IACP,IAAIrS,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAGhE,OADA4Y,EAAMwS,uBAAwB,EACvBxS,EAwET,OA9EA,eAAUqS,EAASzS,GASnByS,EAAQ3gB,UAAU+gB,OAAS,SAAUhrB,EAAasB,EAASwb,EAAKmO,GAC9D,IAGIhN,EAHAtZ,EAAO3E,EAAYqP,UACnB6b,EAAUvrB,KAAKwrB,MACfC,EAAQzrB,KAAKyrB,MAGjB,IAAKF,GAAWvmB,EAAK0mB,QAAU,EAAG,CAGhC,IAFA,IAAIrG,EAAQrgB,EAAK8a,cAAc,GAEtB6L,EAAI,EAAGjN,MAAM2G,GAASA,EAAM/G,aAAeqN,EAAI3mB,EAAK0mB,UAAWC,EACtEtG,EAAQrgB,EAAK8a,cAAc6L,GAGzBtG,IACF/G,EAAa+G,EAAM/G,YAUvB,GALIte,KAAK4rB,oBACPH,EAAMI,OAAO7rB,KAAK4rB,oBAIC,IAAjB5mB,EAAK0mB,SAAiBrrB,EAAYC,IAAI,mBAAoB,CAC5D,IAAI6kB,EAAS,IAAI,OAAe,CAC9BE,MAAO9H,EAAkBld,EAAa8c,KAExCgI,EAAOwE,SAAStpB,EAAYulB,SAAS,oBAAoBkG,gBACzD9rB,KAAK4rB,mBAAqBzG,EAC1BsG,EAAMM,IAAI5G,GAGZngB,EAAKgnB,KAAKT,GAASQ,KAAI,SAAU7iB,GAC/B,IAAI+iB,EAAW,IAAI,EAASjnB,EAAMkE,EAAKoV,GACvCtZ,EAAKknB,iBAAiBhjB,EAAK+iB,GAC3BR,EAAMM,IAAIE,MACTE,QAAO,SAAUC,EAAQC,GAC1B,IAAIJ,EAAWV,EAAQnG,iBAAiBiH,GACxCJ,EAASlD,WAAW/jB,EAAMonB,EAAQ9N,GAClC2N,EAASK,IAAI,SACbb,EAAMM,IAAIE,GACVjnB,EAAKknB,iBAAiBE,EAAQH,MAC7BJ,QAAO,SAAU3iB,GAClB,IAAI+iB,EAAWV,EAAQnG,iBAAiBlc,GACxC,OAAiC+iB,EAAU5rB,EAAa6I,MACvDqjB,UACH,EAAYlsB,GAEmC,cAA3CA,EAAYC,IAAI,yBAClBN,KAAKwrB,MAAQxmB,IAIjBimB,EAAQ3gB,UAAUkiB,QAAU,aAE5BvB,EAAQ3gB,UAAUmiB,aAAe,SAAU3O,EAAOzd,GAChD,IAAI2E,EAAO3E,EAAYqP,UACnBgd,EAAa1nB,EAAK8a,cAAc,GAEpC,GAAI4M,EAAY,CACd,IAAI1L,EAAKlD,EAAM,GAAK4O,EAAWnV,GAC3BgK,EAAKzD,EAAM,GAAK4O,EAAWlV,GAC3BiG,EAAS1K,KAAK2O,KAAKV,EAAKA,EAAKO,EAAKA,GACtC,OAAO9D,GAAUiP,EAAW/O,GAAKF,GAAUiP,EAAWhP,KAI1DuN,EAAQnoB,KAAO,MACRmoB,EA/ET,CAgFEpO,EAAA,MAEa,I,wBClQA,SAAS8P,EAAuBtsB,EAAawD,EAAK+oB,GAC/D/oB,EAAM,qBAAQA,IAAQ,CACpBU,gBAAiBV,IACd,oBAAO,CACVY,aAAcpE,EAAYqE,aACzBb,GACH,IAAIC,EAASzD,EAAY6D,YACrBpC,EAAa,eAAwBgC,EAAQD,GAAK/B,WAClD6J,EAAO,IAAI1G,EAAA,KAAWnD,EAAYzB,GAEtC,OADAsL,EAAKjG,SAAS5B,EAAQ8oB,GACfjhB,E,oDCfL,EAEJ,SAAU6M,GAGR,SAASqU,IACP,OAAkB,OAAXrU,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAkK7D,OArKA,eAAU6sB,EAAgBrU,GAU1BqU,EAAeviB,UAAUwiB,KAAO,SAAUtiB,GACxCgO,EAAOlO,UAAUwiB,KAAK5B,MAAMlrB,KAAMmrB,WAIlCnrB,KAAK+sB,qBAAuB,IAAIC,EAAA,KAAqB,UAAYhtB,KAAK0P,QAAS1P,MAAO,UAAYA,KAAKitB,WAAYjtB,OAEnHA,KAAKktB,kBAAkB1iB,IAOzBqiB,EAAeviB,UAAU6iB,YAAc,WACrC3U,EAAOlO,UAAU6iB,YAAYjC,MAAMlrB,KAAMmrB,YAO3C0B,EAAeviB,UAAU8iB,eAAiB,WACxC,IAAIpoB,EAAO2nB,EAAuB3sB,KAAM,CACtCuE,gBAAiB,CAAC,SAClBF,gBAAiB,WAAa,OAA8BrE,QAE1DqtB,EAAY,GAKhB,OAJAroB,EAAKyZ,KAAKzZ,EAAKoZ,aAAa,UAAU,SAAUhU,GAC9CijB,EAAUzc,KAAKxG,MAEjBpK,KAAKstB,MAAQ,eAAgBD,EAAWroB,EAAKikB,UAAU3oB,IAAI,qBACpD0E,GAOT6nB,EAAeviB,UAAUijB,cAAgB,SAAUhoB,GACjD,IAAIioB,EAAShV,EAAOlO,UAAUijB,cAAc1U,KAAK7Y,KAAMuF,GAIvD,OAFAioB,EAAOC,QAAUztB,KAAKstB,MAAM/nB,GAC5BioB,EAAOE,MAAM9c,KAAK,WACX4c,GAGTX,EAAeviB,UAAU4iB,kBAAoB,SAAU1iB,GAErD,OAA0BA,EAAQ,YAAa,CAAC,SAChD,IAAImjB,EAAqBnjB,EAAO+a,UAC5BqI,EAAuBpjB,EAAOqjB,SAAStI,UAE3CoI,EAAmBG,KAAOH,EAAmBG,MAAQtjB,EAAOsE,MAAMgf,KAClEF,EAAqBE,KAAOF,EAAqBE,MAAQtjB,EAAOqjB,SAAS/e,MAAMgf,MAGjFjB,EAAe/pB,KAAO,aACtB+pB,EAAekB,cAAgB,CAE7BC,EAAG,EACHC,iBAAiB,EACjBC,QAAS,OAETlW,OAAQ,CAAC,MAAO,OAChByF,OAAQ,CAAC,EAAG,OAEZqB,WAAW,EACXR,WAAY,GAEZC,SAAU,EAGV4P,kBAAmB,EAEnBC,eAAgB,GAKhBC,iBAAkB,EAElBrP,kBAAkB,EAElBsP,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACR/lB,MAAO,KACPkD,OAAQ,KACRkD,MAAO,CAGLiY,OAAQ,EACR+G,MAAM,EACNhK,SAAU,WAEVhD,SAAU,QAEV4N,QAAS,OAGTzL,aAAc,MAEdC,YAAa,GAEbyL,oBAAqB,GAMvBpJ,UAAW,CACTuI,MAAM,EAEN/nB,OAAQ,GAER6oB,QAAS,GACTC,QAAQ,EACRlH,aAAc,GACdC,gBAAiB,GACjBkH,UAAW,CAETpmB,MAAO,EACP5F,KAAM,UAGVisB,UAAW,CACTC,YAAa,EACbC,WAAY,SAEdC,iBAAiB,EACjBC,iBAAkB,CAChBC,MAAO,YACP9E,QAAS,GAEX+E,YAAa,CAEXC,aAAa,GAEfzB,SAAU,CACRpjB,OAAO,EACP8kB,UAAW,GAGbC,mBAAmB,EAEnBrG,cAAe,YACfsG,kBAAmB,IAEnBC,oBAAqB,aACrBC,sBAAuB,aACvBC,wBAAyB,IACzBC,gBAAiB,cAEZhD,EAtKT,CAuKElQ,EAAA,MAEamT,EAAA,ECnLA,SAASC,EAAmB9R,GACzC,MAAO,CACLA,WAAYA,EACZgC,MAAO,SAAU5f,EAAasB,GAC5B,IAAIqD,EAAO3E,EAAYqP,UACvB1K,EAAKqb,YAAW,SAAUnX,GAExB,IAAIiV,EAAWnZ,EAAKoZ,aAAa,SAC7B4R,EAAWhrB,EAAK1E,IAAI6d,EAAUjV,GAElC,QAAI,sBAAS8mB,KAActR,MAAMsR,IAAaA,EAAW,QCJ1D,SAASC,EAAQC,GACtBA,EAAUC,kBAAkB,GAC5BD,EAAUE,oBAAoBN,GAC9B,eAA6B,MAAOI,EAAUG,gBAC9CH,EAAUI,eAAe,mBAAMtS,EAAW,QAC1CkS,EAAUK,kBAAkBvQ,EAAW,QACvCkQ,EAAUK,kBAAkBR,EAAmB,U,oCCxDjD,W,6DCAA,skBAAIpmB,EAAoB6mB,SAASC,OAASD,SAASE,SAASpgB,QAAQ,aAAc,IAO3E,MAAMqgB,EAAS,CAClB,OACA,OACA,OACA,OACA,KACA,KACA,OACA,OACA,MAKSC,EAAU,CACnB,OACA,OACA,OACA,OACA,KACA,KACA,QAGSC,EAAoB,CAC7B,CACIzmB,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,OAIDgiB,EAAc,CACvB,CACI1mB,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,OAIDiiB,EAAgB,CACzB,CACI3mB,MAAM,EACN0E,MAAM,MAEV,CACI1E,MAAM,EACN0E,MAAM,OAKDkiB,EAAgB,CACzB,CACI5mB,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,MAEV,CACI1E,MAAM,KACN0E,MAAM,OAgBDmiB,EAAwB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEvJC,EAAQ,6BAERC,EAAM,CACf,CACI/mB,OAAQ,EACR0E,MAAM,MAEV,CACI1E,MAAO,EACP0E,MAAM,KAEV,CACI1E,MAAO,EACP0E,MAAM,MAIDsiB,EAAM,CACf,CACIhnB,MAAO,MACP0E,MAAM,MAEV,CACI1E,MAAO,OACP0E,MAAM,SAKDuiB,EAAU,oHAGVliB,EAAgB,CAAC,CAC1BvM,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,OACN,CACE3E,KAAM,KACN2E,GAAI,QAEKgI,EAAU,CAAC,CAAEzG,MAAO,WAAYsB,MAAO,MACpD,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,WAAYsB,MAAO,MAC5B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,cAAesB,MAAO,MAC/B,CAAEtB,MAAO,cAAesB,MAAO,MAC/B,CAAEtB,MAAO,cAAesB,MAAO,MAC/B,CAAEtB,MAAO,cAAesB,MAAO,MAC/B,CAAEtB,MAAO,cAAesB,MAAO,MAC/B,CAAEtB,MAAO,gBAAiBsB,MAAO,MACjC,CAAEtB,MAAO,WAAYsB,MAAO,MAC5B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,YAAasB,MAAO,MAC7B,CAAEtB,MAAO,aAAcsB,MAAO,MAC9B,CAAEtB,MAAO,SAAUsB,MAAO,MAC1B,CAAEtB,MAAO,SAAUsB,MAAO,MAC1B,CAAEtB,MAAO,SAAUsB,MAAO,MAC1B,CAAEtB,MAAO,aAAcsB,MAAO,OAGhBknB,EAAiB,CAC3B,CACIvjB,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,KAEX,CACI2D,KAAK,IACL3D,MAAO,MAEX,CACI2D,KAAK,IACL3D,MAAO,MAEX,CACI2D,KAAK,IACL3D,MAAO,MAEX,CACI2D,KAAK,IACL3D,MAAO,MAEX,CACI2D,KAAK,IACL3D,MAAO,OAIR,IAAMmnB,GAAb,SAAaA,GACTA,sBACAA,yBACAA,0BAHJ,CAAaA,MAAS,KAMf,MAAMC,EAAW,CACpB,CACI1iB,MAAMyiB,EAAUE,WAEpB,CACI3iB,MAAMyiB,EAAUG,cAEpB,CACI5iB,MAAMyiB,EAAUI,gB,uJClPpBC,EAAQ,iBACL,SAASC,EAAiBC,GAE/B,MAAqB,aAAdA,EAAKhvB,KAAsBivB,EAAmBD,GAAQE,EAAqBF,GAW7E,SAASG,EAAgBH,EAAMI,GAEpC,MAAqB,aAAdJ,EAAKhvB,KAAsBqvB,EAAkBL,EAAMI,GAAa,CACrEE,MAAO,SAAWN,EAAKrnB,MAAM4nB,YAAY,SAAUC,GACjD,OAAOA,EAAKloB,UAKlB,SAAS2nB,EAAmBD,GAC1B,IAAInM,EAAamM,EAAKS,gBAClBhyB,EAASiyB,EAA2BV,EAAMnM,GAC9C,OAAQA,EAAWrlB,IAAI,SAAWwxB,EAAKrnB,MAAMgoB,UAAY,CACvDC,OAAQ,GACRC,sBAAuBpyB,EAAOoyB,uBAC5BpyB,EAGN,SAASiyB,EAA2BV,EAAMnM,GACxC,IAQI+M,EACAE,EATAC,EAAcC,EAAahB,EAAM,UACjCiB,EAAsB,eAA0BpN,GAChDplB,EAASyyB,EAAaH,EAAaE,GAEvC,OAAIxyB,IAOA,gBAAkBwyB,GACpBL,EAASO,EAAuCnB,EAAMiB,IAEtDH,EAA+C,SAAxBG,EAAiCG,EAAyBpB,GAAQiB,EACzFL,EAASS,EAAoCrB,EAAMc,IAI9CQ,EAAaP,EAAaE,EAAqB,CACpDL,OAAQA,EACRC,sBAAuBC,KAI3B,SAAST,EAAkBL,EAAMI,GAC/B,IAQIE,EACAiB,EATAC,EAAaR,EAAahB,EAAM,SAChCyB,EAAqB,eAA0BrB,GAC/C3xB,EAASyyB,EAAaM,EAAYC,GAEtC,GAAIhzB,EACF,OAAOA,EAWT,GAJK2xB,EAAU5xB,IAAI,UAAWwxB,EAAKrnB,MAAMgoB,YACvCL,EAAQ,IAGN,gBAAkBmB,GACpBnB,EAAQa,EAAuCnB,EAAMyB,GAAoB,QAItE,GAA2B,SAAvBA,EAA+B,CACpC,IAAIC,EAAehB,EAA2BV,EAAMA,EAAKS,iBACzDc,EAAuBG,EAAab,sBACpCP,EAAQ,SAAWoB,EAAad,QAAQ,SAAUe,GAChD,OAAOA,EAAUC,kBAGnBL,EAAuBE,EACvBnB,EAAQe,EAAoCrB,EAAMuB,GAAsB,GAI5E,OAAOD,EAAaE,EAAYC,EAAoB,CAClDnB,MAAOA,EACPiB,qBAAsBA,IAI1B,SAASrB,EAAqBF,GAC5B,IAAIM,EAAQN,EAAKrnB,MAAM4nB,WACnBsB,EAAiB,eAAmB7B,GACxC,MAAO,CACLY,OAAQ,SAAWN,GAAO,SAAUE,EAAMppB,GACxC,MAAO,CACLuE,MAAO6kB,EAAK7kB,MACZmmB,eAAgBD,EAAerB,EAAMppB,GACrC2qB,SAAU/B,EAAKrnB,MAAMqpB,SAASxB,GAC9BoB,UAAWpB,EAAKloB,WAMxB,SAAS0oB,EAAahB,EAAM1oB,GAE1B,OAAOwoB,EAAME,GAAM1oB,KAAUwoB,EAAME,GAAM1oB,GAAQ,IAGnD,SAAS4pB,EAAae,EAAOztB,GAC3B,IAAK,IAAIR,EAAI,EAAGA,EAAIiuB,EAAMhuB,OAAQD,IAChC,GAAIiuB,EAAMjuB,GAAGQ,MAAQA,EACnB,OAAOytB,EAAMjuB,GAAGsE,MAKtB,SAASgpB,EAAaW,EAAOztB,EAAK8D,GAKhC,OAJA2pB,EAAMnjB,KAAK,CACTtK,IAAKA,EACL8D,MAAOA,IAEFA,EAGT,SAAS8oB,EAAyBpB,GAChC,IAAIvxB,EAASqxB,EAAME,GAAMkC,aACzB,OAAiB,MAAVzzB,EAAiBA,EAASqxB,EAAME,GAAMkC,aAAelC,EAAKmC,4BAS5D,SAASA,EAA0BnC,GACxC,IAAItE,EAAS0G,EAA2CpC,GACpD6B,EAAiB,eAAmB7B,GACpC1K,GAAYoG,EAAO2G,WAAa3G,EAAO1G,aAAe,IAAM/T,KAAKiK,GACjEoX,EAAetC,EAAKrnB,MACpB4pB,EAAgBD,EAAaE,YAI7BC,EAAYH,EAAa1I,QAE7B,GAAI2I,EAAc,GAAKA,EAAc,GAAK,EACxC,OAAO,EAGT,IAAIG,EAAO,EAEPD,EAAY,KACdC,EAAOzhB,KAAKkE,IAAI,EAAGlE,KAAKC,MAAMuhB,EAAY,MAW5C,IARA,IAAIb,EAAYW,EAAc,GAC1BI,EAAW3C,EAAK4C,YAAYhB,EAAY,GAAK5B,EAAK4C,YAAYhB,GAC9DiB,EAAQ5hB,KAAKmD,IAAIue,EAAW1hB,KAAKuT,IAAIc,IACrCwN,EAAQ7hB,KAAKmD,IAAIue,EAAW1hB,KAAKyT,IAAIY,IACrCyN,EAAO,EACPC,EAAO,EAGJpB,GAAaW,EAAc,GAAIX,GAAac,EAAM,CACvD,IAAI9rB,EAAQ,EACRkD,EAAS,EAGTqN,EAAO,OAA4B0a,EAAe,CACpDvpB,MAAOspB,IACLlG,EAAOuH,KAAM,SAAU,OAE3BrsB,EAAqB,IAAbuQ,EAAKvQ,MACbkD,EAAuB,IAAdqN,EAAKrN,OAEdipB,EAAO9hB,KAAKkE,IAAI4d,EAAMnsB,EAAO,GAC7BosB,EAAO/hB,KAAKkE,IAAI6d,EAAMlpB,EAAQ,GAGhC,IAAIopB,EAAKH,EAAOF,EACZM,EAAKH,EAAOF,EAEhBlW,MAAMsW,KAAQA,EAAK5b,KACnBsF,MAAMuW,KAAQA,EAAK7b,KACnB,IAAI8b,EAAWniB,KAAKkE,IAAI,EAAGlE,KAAKC,MAAMD,KAAKiE,IAAIge,EAAIC,KAC/ClB,EAAQnC,EAAME,EAAKvJ,OACnB4M,EAAarD,EAAKwC,YAClBc,EAAmBrB,EAAMqB,iBACzBC,EAAgBtB,EAAMsB,cAsB1B,OAfwB,MAApBD,GAA6C,MAAjBC,GAAyBtiB,KAAKmD,IAAIkf,EAAmBF,IAAa,GAAKniB,KAAKmD,IAAImf,EAAgBd,IAAc,GAE3Ia,EAAmBF,GAEnBnB,EAAMuB,cAAgBH,EAAW,IAAMpB,EAAMwB,cAAgBJ,EAAW,GACzED,EAAWE,GAITrB,EAAMsB,cAAgBd,EACtBR,EAAMqB,iBAAmBF,EACzBnB,EAAMuB,YAAcH,EAAW,GAC/BpB,EAAMwB,YAAcJ,EAAW,IAG5BD,EAGT,SAAShB,EAA2CpC,GAClD,IAAInM,EAAamM,EAAKS,gBACtB,MAAO,CACL4B,WAAYrC,EAAK0D,UAAY1D,EAAK0D,YAAc1D,EAAK2D,eAAiB3D,EAAK2D,eAAiB,GAAK,EACjG3O,YAAanB,EAAWrlB,IAAI,WAAa,EACzCy0B,KAAMpP,EAAW+P,WAIrB,SAASvC,EAAoCrB,EAAM6D,EAAkBC,GACnE,IAAIjC,EAAiB,eAAmB7B,GACpCsC,EAAetC,EAAKrnB,MACpB4pB,EAAgBD,EAAaE,YAC7B3O,EAAamM,EAAKS,gBAClBhyB,EAAS,GAETi0B,EAAOzhB,KAAKkE,KAAK0e,GAAoB,GAAK,EAAG,GAC7CE,EAAYxB,EAAc,GAC1BE,EAAYH,EAAa1I,QAKX,IAAdmK,GAAmBrB,EAAO,GAAKD,EAAYC,EAAO,IACpDqB,EAAY9iB,KAAK+iB,MAAM/iB,KAAKqR,KAAKyR,EAAYrB,GAAQA,IAQvD,IAAIuB,EAAe,eAAoBjE,GACnCkE,EAAkBrQ,EAAWrlB,IAAI,iBAAmBy1B,EACpDE,EAAkBtQ,EAAWrlB,IAAI,iBAAmBy1B,EAEpDC,GAAmBH,IAAcxB,EAAc,IACjD6B,EAAQ7B,EAAc,IAMxB,IAFA,IAAIX,EAAYmC,EAETnC,GAAaW,EAAc,GAAIX,GAAac,EACjD0B,EAAQxC,GAOV,SAASwC,EAAQxC,GACf,IAAIyC,EAAU,CACZ/rB,MAAOspB,GAETnzB,EAAOqQ,KAAKglB,EAAWlC,EAAY,CACjCE,eAAgBD,EAAewC,GAC/BtC,SAAUO,EAAaN,SAASqC,GAChCzC,UAAWA,IAIf,OAfIuC,GAAmBvC,EAAYc,IAASH,EAAc,IACxD6B,EAAQ7B,EAAc,IAcjB9zB,EAGT,SAAS0yB,EAAuCnB,EAAM6D,EAAkBC,GACtE,IAAIxB,EAAetC,EAAKrnB,MACpBkpB,EAAiB,eAAmB7B,GACpCvxB,EAAS,GAab,OAZA,UAAY6zB,EAAa/B,YAAY,SAAUC,GAC7C,IAAIuB,EAAWO,EAAaN,SAASxB,GACjCoB,EAAYpB,EAAKloB,MAEjBurB,EAAiBrD,EAAKloB,MAAOypB,IAC/BtzB,EAAOqQ,KAAKglB,EAAWlC,EAAY,CACjCE,eAAgBD,EAAerB,GAC/BuB,SAAUA,EACVH,UAAWA,OAIVnzB,EClTT,IAAI61B,EAAoB,CAAC,EAAG,GAKxB,EAEJ,WACE,SAASC,EAAK3zB,EAAK+H,EAAOwU,GACxBjf,KAAKs2B,QAAS,EACdt2B,KAAKu2B,SAAU,EACfv2B,KAAK0C,IAAMA,EACX1C,KAAKyK,MAAQA,EACbzK,KAAKw2B,QAAUvX,GAAU,CAAC,EAAG,GA0L/B,OAnLAoX,EAAK/rB,UAAU6L,QAAU,SAAUmD,GACjC,IAAI2F,EAASjf,KAAKw2B,QACdxf,EAAMjE,KAAKiE,IAAIiI,EAAO,GAAIA,EAAO,IACjChI,EAAMlE,KAAKkE,IAAIgI,EAAO,GAAIA,EAAO,IACrC,OAAO3F,GAAStC,GAAOsC,GAASrC,GAOlCof,EAAK/rB,UAAUmsB,YAAc,SAAUzxB,GACrC,OAAOhF,KAAKyK,MAAM0L,QAAQnR,IAO5BqxB,EAAK/rB,UAAUgqB,UAAY,WACzB,OAAOt0B,KAAKw2B,QAAQz0B,SAOtBs0B,EAAK/rB,UAAUosB,kBAAoB,SAAUphB,GAC3C,OAAO,eAAkBA,GAActV,KAAKyK,MAAM6pB,YAAat0B,KAAKw2B,UAOtEH,EAAK/rB,UAAUkL,UAAY,SAAUmhB,EAAOC,GAC1C,IAAI3X,EAASjf,KAAKw2B,QAClBvX,EAAO,GAAK0X,EACZ1X,EAAO,GAAK2X,GAOdP,EAAK/rB,UAAUoqB,YAAc,SAAU1vB,EAAM6xB,GAC3C,IAAI5X,EAASjf,KAAKw2B,QACd/rB,EAAQzK,KAAKyK,MAQjB,OAPAzF,EAAOyF,EAAMqsB,UAAU9xB,GAEnBhF,KAAKs2B,QAAyB,YAAf7rB,EAAM3H,OACvBmc,EAASA,EAAOld,QAChBg1B,EAAmB9X,EAAQxU,EAAMihB,UAG5B,eAAU1mB,EAAMoxB,EAAmBnX,EAAQ4X,IAOpDR,EAAK/rB,UAAU0sB,YAAc,SAAU1d,EAAOud,GAC5C,IAAI5X,EAASjf,KAAKw2B,QACd/rB,EAAQzK,KAAKyK,MAEbzK,KAAKs2B,QAAyB,YAAf7rB,EAAM3H,OACvBmc,EAASA,EAAOld,QAChBg1B,EAAmB9X,EAAQxU,EAAMihB,UAGnC,IAAIrc,EAAI,eAAUiK,EAAO2F,EAAQmX,EAAmBS,GACpD,OAAO72B,KAAKyK,MAAMA,MAAM4E,IAO1BgnB,EAAK/rB,UAAU2sB,YAAc,SAAUnZ,EAAO+Y,KAe9CR,EAAK/rB,UAAU4sB,eAAiB,SAAUrzB,GACxCA,EAAMA,GAAO,GACb,IAAIquB,EAAYruB,EAAIquB,WAAalyB,KAAKm3B,eAClC52B,EAAS0xB,EAAgBjyB,KAAMkyB,GAC/BE,EAAQ7xB,EAAO6xB,MACfgF,EAAc,iBAAIhF,GAAO,SAAUiF,GACrC,MAAO,CACL/d,MAAOtZ,KAAK00B,YAAgC,YAApB10B,KAAKyK,MAAM3H,KAAqB9C,KAAKyK,MAAM6sB,oBAAoBD,GAAWA,GAClG3D,UAAW2D,KAEZr3B,MACCu3B,EAAiBrF,EAAU5xB,IAAI,kBAEnC,OADAk3B,EAAqBx3B,KAAMo3B,EAAaG,EAAgB1zB,EAAIgzB,OACrDO,GAGTf,EAAK/rB,UAAUmtB,oBAAsB,WACnC,GAAwB,YAApBz3B,KAAKyK,MAAM3H,KAEb,MAAO,GAGT,IAAI40B,EAAiB13B,KAAKuoB,MAAM3C,SAAS,aACrC+R,EAAcD,EAAep3B,IAAI,eAE/Bq3B,EAAc,GAAKA,EAAc,MACrCA,EAAc,GAGhB,IAAIC,EAAa53B,KAAKyK,MAAMotB,cAAcF,GACtCG,EAAmB,iBAAIF,GAAY,SAAUG,GAC/C,OAAO,iBAAIA,GAAiB,SAAUC,GACpC,MAAO,CACL1e,MAAOtZ,KAAK00B,YAAYsD,GACxBtE,UAAWsE,KAEZh4B,QACFA,MACH,OAAO83B,GAGTzB,EAAK/rB,UAAU2tB,cAAgB,WAC7B,OAAOpG,EAAiB7xB,MAAM0yB,QAGhC2D,EAAK/rB,UAAUioB,cAAgB,WAC7B,OAAOvyB,KAAKuoB,MAAM3C,SAAS,cAW7ByQ,EAAK/rB,UAAU6sB,aAAe,WAC5B,OAAOn3B,KAAKuoB,MAAM3C,SAAS,aAO7ByQ,EAAK/rB,UAAU4tB,aAAe,WAC5B,IAAI/C,EAAan1B,KAAKw2B,QAClBlhB,EAAatV,KAAKyK,MAAM6pB,YACxB7c,EAAMnC,EAAW,GAAKA,EAAW,IAAMtV,KAAKs2B,OAAS,EAAI,GAErD,IAAR7e,IAAcA,EAAM,GACpB,IAAIuB,EAAOjG,KAAKmD,IAAIif,EAAW,GAAKA,EAAW,IAC/C,OAAOpiB,KAAKmD,IAAI8C,GAAQvB,GAS1B4e,EAAK/rB,UAAU2pB,0BAA4B,WACzC,OAAOA,EAA0Bj0B,OAG5Bq2B,EAhMT,GAmMA,SAASU,EAAmB9X,EAAQkZ,GAClC,IAAInf,EAAOiG,EAAO,GAAKA,EAAO,GAC1BxH,EAAM0gB,EACN1T,EAASzL,EAAOvB,EAAM,EAC1BwH,EAAO,IAAMwF,EACbxF,EAAO,IAAMwF,EAYf,SAAS+S,EAAqB1F,EAAMsF,EAAaG,EAAgBV,GAC/D,IAAIuB,EAAWhB,EAAYrxB,OAE3B,GAAK+rB,EAAKwE,SAAUiB,GAAmBa,EAAvC,CAIA,IACIC,EACAC,EAFAnD,EAAarD,EAAKwC,YAItB,GAAiB,IAAb8D,EACFhB,EAAY,GAAG9d,MAAQ6b,EAAW,GAClCkD,EAAOjB,EAAY,GAAK,CACtB9d,MAAO6b,EAAW,QAEf,CACL,IAAIoD,EAAWnB,EAAYgB,EAAW,GAAG1E,UAAY0D,EAAY,GAAG1D,UAChE8E,GAAWpB,EAAYgB,EAAW,GAAG9e,MAAQ8d,EAAY,GAAG9d,OAASif,EACzE,kBAAKnB,GAAa,SAAUqB,GAC1BA,EAAUnf,OAASkf,EAAU,KAE/B,IAAIljB,EAAawc,EAAKrnB,MAAM6pB,YAC5BgE,EAAW,EAAIhjB,EAAW,GAAK8hB,EAAYgB,EAAW,GAAG1E,UACzD2E,EAAO,CACL/e,MAAO8d,EAAYgB,EAAW,GAAG9e,MAAQkf,EAAUF,GAErDlB,EAAYxmB,KAAKynB,GAGnB,IAAI9B,EAAUpB,EAAW,GAAKA,EAAW,GAErCuD,EAAWtB,EAAY,GAAG9d,MAAO6b,EAAW,MAC9C0B,EAAQO,EAAY,GAAG9d,MAAQ6b,EAAW,GAAKiC,EAAYuB,SAGzD9B,GAAS6B,EAAWvD,EAAW,GAAIiC,EAAY,GAAG9d,QACpD8d,EAAYwB,QAAQ,CAClBtf,MAAO6b,EAAW,KAIlBuD,EAAWvD,EAAW,GAAIkD,EAAK/e,SACjCud,EAAQwB,EAAK/e,MAAQ6b,EAAW,GAAKiC,EAAYyB,OAG/ChC,GAAS6B,EAAWL,EAAK/e,MAAO6b,EAAW,KAC7CiC,EAAYxmB,KAAK,CACf0I,MAAO6b,EAAW,KAItB,SAASuD,EAAW1iB,EAAGC,GAKrB,OAFAD,EAAI,eAAMA,GACVC,EAAI,eAAMA,GACHsgB,EAAUvgB,EAAIC,EAAID,EAAIC,GAIlB,U,0UCnRX8G,EAAgB,EAAVhK,KAAKiK,GACX8b,EAAM,OAAUA,IAChBC,EAAuB,CAAC,MAAO,QAAS,SAAU,QAEtD,SAASC,EAAmBC,EAAKC,EAAUjgB,EAAMkgB,EAAOC,GACtD,IAAI1wB,EAAQuQ,EAAKvQ,MACbkD,EAASqN,EAAKrN,OAElB,OAAQqtB,GACN,IAAK,MACHE,EAAMp4B,IAAIkY,EAAK5C,EAAI3N,EAAQ,EAAGuQ,EAAK3C,EAAI4iB,GACvCE,EAAOr4B,IAAI,GAAI,GACf,MAEF,IAAK,SACHo4B,EAAMp4B,IAAIkY,EAAK5C,EAAI3N,EAAQ,EAAGuQ,EAAK3C,EAAI1K,EAASstB,GAChDE,EAAOr4B,IAAI,EAAG,GACd,MAEF,IAAK,OACHo4B,EAAMp4B,IAAIkY,EAAK5C,EAAI6iB,EAAUjgB,EAAK3C,EAAI1K,EAAS,GAC/CwtB,EAAOr4B,KAAK,EAAG,GACf,MAEF,IAAK,QACHo4B,EAAMp4B,IAAIkY,EAAK5C,EAAI3N,EAAQwwB,EAAUjgB,EAAK3C,EAAI1K,EAAS,GACvDwtB,EAAOr4B,IAAI,EAAG,GACd,OAIN,SAASs4B,EAAkB9hB,EAAIC,EAAImG,EAAGW,EAAYqB,EAAU2Z,EAAejjB,EAAGC,EAAGijB,GAC/EljB,GAAKkB,EACLjB,GAAKkB,EACL,IAAIgiB,EAAIzmB,KAAK2O,KAAKrL,EAAIA,EAAIC,EAAIA,GAC9BD,GAAKmjB,EACLljB,GAAKkjB,EAEL,IAAIC,EAAKpjB,EAAIsH,EAAIpG,EACbmiB,EAAKpjB,EAAIqH,EAAInG,EAEjB,GAAIzE,KAAKmD,IAAIoI,EAAaqB,GAAY5C,EAAM,KAI1C,OAFAwc,EAAI,GAAKE,EACTF,EAAI,GAAKG,EACFF,EAAI7b,EAGb,GAAI2b,EAAe,CACjB,IAAIK,EAAMrb,EACVA,EAAa,eAAgBqB,GAC7BA,EAAW,eAAgBga,QAE3Brb,EAAa,eAAgBA,GAC7BqB,EAAW,eAAgBA,GAGzBrB,EAAaqB,IACfA,GAAY5C,GAGd,IAAIyC,EAAQzM,KAAKmU,MAAM5Q,EAAGD,GAM1B,GAJImJ,EAAQ,IACVA,GAASzC,GAGPyC,GAASlB,GAAckB,GAASG,GAAYH,EAAQzC,GAAOuB,GAAckB,EAAQzC,GAAO4C,EAI1F,OAFA4Z,EAAI,GAAKE,EACTF,EAAI,GAAKG,EACFF,EAAI7b,EAGb,IAAI/F,EAAK+F,EAAI5K,KAAKuT,IAAIhI,GAAc/G,EAChCM,EAAK8F,EAAI5K,KAAKyT,IAAIlI,GAAc9G,EAChCkP,EAAK/I,EAAI5K,KAAKuT,IAAI3G,GAAYpI,EAC9BoP,EAAKhJ,EAAI5K,KAAKyT,IAAI7G,GAAYnI,EAC9BoiB,GAAMhiB,EAAKvB,IAAMuB,EAAKvB,IAAMwB,EAAKvB,IAAMuB,EAAKvB,GAC5CujB,GAAMnT,EAAKrQ,IAAMqQ,EAAKrQ,IAAMsQ,EAAKrQ,IAAMqQ,EAAKrQ,GAEhD,OAAIsjB,EAAKC,GACPN,EAAI,GAAK3hB,EACT2hB,EAAI,GAAK1hB,EACF9E,KAAK2O,KAAKkY,KAEjBL,EAAI,GAAK7S,EACT6S,EAAI,GAAK5S,EACF5T,KAAK2O,KAAKmY,IAIrB,SAASC,EAAmBliB,EAAIC,EAAI6O,EAAIC,EAAItQ,EAAGC,EAAGijB,EAAKQ,GACrD,IAAI/Y,EAAK3K,EAAIuB,EACT2J,EAAKjL,EAAIuB,EACTmiB,EAAMtT,EAAK9O,EACXqiB,EAAMtT,EAAK9O,EACXqiB,EAAUnnB,KAAK2O,KAAKsY,EAAMA,EAAMC,EAAMA,GAC1CD,GAAOE,EACPD,GAAOC,EAEP,IAAIC,EAAenZ,EAAKgZ,EAAMzY,EAAK0Y,EAC/B5qB,EAAI8qB,EAAeD,EAEnBH,IACF1qB,EAAI0D,KAAKiE,IAAIjE,KAAKkE,IAAI5H,EAAG,GAAI,IAG/BA,GAAK6qB,EACL,IAAIT,EAAKF,EAAI,GAAK3hB,EAAKvI,EAAI2qB,EACvBN,EAAKH,EAAI,GAAK1hB,EAAKxI,EAAI4qB,EAC3B,OAAOlnB,KAAK2O,MAAM+X,EAAKpjB,IAAMojB,EAAKpjB,IAAMqjB,EAAKpjB,IAAMojB,EAAKpjB,IAG1D,SAAS8jB,EAAmBxiB,EAAIC,EAAInP,EAAOkD,EAAQyK,EAAGC,EAAGijB,GACnD7wB,EAAQ,IACVkP,GAAUlP,EACVA,GAASA,GAGPkD,EAAS,IACXiM,GAAUjM,EACVA,GAAUA,GAGZ,IAAI8a,EAAK9O,EAAKlP,EACVie,EAAK9O,EAAKjM,EACV6tB,EAAKF,EAAI,GAAKxmB,KAAKiE,IAAIjE,KAAKkE,IAAIZ,EAAGuB,GAAK8O,GACxCgT,EAAKH,EAAI,GAAKxmB,KAAKiE,IAAIjE,KAAKkE,IAAIX,EAAGuB,GAAK8O,GAC5C,OAAO5T,KAAK2O,MAAM+X,EAAKpjB,IAAMojB,EAAKpjB,IAAMqjB,EAAKpjB,IAAMojB,EAAKpjB,IAG1D,IAAI+jB,EAAQ,GAEZ,SAASC,EAAmBC,EAAIthB,EAAMsgB,GACpC,IAAI9V,EAAO2W,EAAmBnhB,EAAK5C,EAAG4C,EAAK3C,EAAG2C,EAAKvQ,MAAOuQ,EAAKrN,OAAQ2uB,EAAGlkB,EAAGkkB,EAAGjkB,EAAG+jB,GAEnF,OADAd,EAAIx4B,IAAIs5B,EAAM,GAAIA,EAAM,IACjB5W,EAQT,SAAS+W,EAAmBD,EAAIE,EAAMlB,GAYpC,IAXA,IAII3hB,EACAC,EALA6iB,EAAK,EACLC,EAAK,EACLjjB,EAAK,EACLC,EAAK,EAGLijB,EAAUxhB,IACVpU,EAAOy1B,EAAKz1B,KACZqR,EAAIkkB,EAAGlkB,EACPC,EAAIikB,EAAGjkB,EAEFxQ,EAAI,EAAGA,EAAId,EAAKe,QAAS,CAChC,IAAI80B,EAAM71B,EAAKc,KAEL,IAANA,IACF40B,EAAK11B,EAAKc,GACV60B,EAAK31B,EAAKc,EAAI,GACd4R,EAAKgjB,EACL/iB,EAAKgjB,GAGP,IAAInB,EAAIoB,EAER,OAAQC,GACN,KAAK/B,EAAIgC,EAGPpjB,EAAK1S,EAAKc,KACV6R,EAAK3S,EAAKc,KACV40B,EAAKhjB,EACLijB,EAAKhjB,EACL,MAEF,KAAKmhB,EAAIiC,EACPvB,EAAIM,EAAmBY,EAAIC,EAAI31B,EAAKc,GAAId,EAAKc,EAAI,GAAIuQ,EAAGC,EAAG+jB,GAAO,GAClEK,EAAK11B,EAAKc,KACV60B,EAAK31B,EAAKc,KACV,MAEF,KAAKgzB,EAAIkC,EACPxB,EAAI,eAAkBkB,EAAIC,EAAI31B,EAAKc,KAAMd,EAAKc,KAAMd,EAAKc,KAAMd,EAAKc,KAAMd,EAAKc,GAAId,EAAKc,EAAI,GAAIuQ,EAAGC,EAAG+jB,GACtGK,EAAK11B,EAAKc,KACV60B,EAAK31B,EAAKc,KACV,MAEF,KAAKgzB,EAAImC,EACPzB,EAAI,eAAsBkB,EAAIC,EAAI31B,EAAKc,KAAMd,EAAKc,KAAMd,EAAKc,GAAId,EAAKc,EAAI,GAAIuQ,EAAGC,EAAG+jB,GACpFK,EAAK11B,EAAKc,KACV60B,EAAK31B,EAAKc,KACV,MAEF,KAAKgzB,EAAIoC,EAEP,IAAI3jB,EAAKvS,EAAKc,KACV0R,EAAKxS,EAAKc,KACVq1B,EAAKn2B,EAAKc,KACVs1B,EAAKp2B,EAAKc,KACVu1B,EAAQr2B,EAAKc,KACbw1B,EAASt2B,EAAKc,KAElBA,GAAK,EACL,IAAIwzB,KAAmB,EAAIt0B,EAAKc,MAChC8R,EAAK7E,KAAKuT,IAAI+U,GAASF,EAAK5jB,EAC5BM,EAAK9E,KAAKyT,IAAI6U,GAASD,EAAK5jB,EAExB1R,GAAK,IAEP4R,EAAKE,EACLD,EAAKE,GAIP,IAAI0jB,GAAMllB,EAAIkB,GAAM6jB,EAAKD,EAAK5jB,EAE9BiiB,EAAIH,EAAkB9hB,EAAIC,EAAI4jB,EAAIC,EAAOA,EAAQC,EAAQhC,EAAeiC,EAAIjlB,EAAG+jB,GAC/EK,EAAK3nB,KAAKuT,IAAI+U,EAAQC,GAAUH,EAAK5jB,EACrCojB,EAAK5nB,KAAKyT,IAAI6U,EAAQC,GAAUF,EAAK5jB,EACrC,MAEF,KAAKshB,EAAI0C,EACP9jB,EAAKgjB,EAAK11B,EAAKc,KACf6R,EAAKgjB,EAAK31B,EAAKc,KACf,IAAI4C,EAAQ1D,EAAKc,KACb8F,EAAS5G,EAAKc,KAClB0zB,EAAIY,EAAmB1iB,EAAIC,EAAIjP,EAAOkD,EAAQyK,EAAGC,EAAG+jB,GACpD,MAEF,KAAKvB,EAAI2C,EACPjC,EAAIM,EAAmBY,EAAIC,EAAIjjB,EAAIC,EAAItB,EAAGC,EAAG+jB,GAAO,GACpDK,EAAKhjB,EACLijB,EAAKhjB,EACL,MAGA6hB,EAAIoB,IACNA,EAAUpB,EACVD,EAAIx4B,IAAIs5B,EAAM,GAAIA,EAAM,KAI5B,OAAOO,EAIT,IAAIc,EAAM,IAAI,OACVC,EAAM,IAAI,OACVC,EAAM,IAAI,OACVtc,EAAM,IAAI,OACVuc,EAAO,IAAI,OASR,SAASC,EAAsBniB,EAAQmM,GAC5C,GAAKnM,EAAL,CAIA,IAAI4L,EAAY5L,EAAO6L,mBACnB1W,EAAQ6K,EAAO2L,iBAEnB,GAAMxW,GAASyW,EAAf,CAIA,IAAIwW,EAAmBpiB,EAAOyO,qBAAuB,GACjDhS,EAAS,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAC9B4lB,EAAcD,EAAiBE,YAAclD,EAC7CmD,EAAYptB,EAAMoK,kBAAkBsO,QACxC0U,EAAUzU,eAAe3Y,EAAM4Y,wBAC/B,IAAIkT,EAAUxhB,IACV+iB,EAAcJ,EAAiB1T,OAC/B+T,EAAkBziB,EAAO+N,uBACzB2U,EAA0BD,GAAmB,oBAAO,GAAIA,GACxD3kB,EAAMqO,EAAexlB,IAAI,YAAc,EAEvC67B,GACFP,EAAI9hB,KAAKqiB,GAGX,IAAK,IAAIr2B,EAAI,EAAGA,EAAIk2B,EAAYj2B,OAAQD,IAAK,CAC3C,IAAIw2B,EAAYN,EAAYl2B,GAC5BkzB,EAAmBsD,EAAW,EAAGJ,EAAWR,EAAKpc,GACjD,OAAMid,YAAYZ,EAAKD,EAAKpc,EAAK7H,GAEjCkkB,EAAI7kB,UAAUulB,GAEd,IAAIG,EAAe7iB,EAAOT,kBACtBuK,EAAO0Y,EAAcA,EAAYjD,SAASyC,GAAOhiB,aAAkB,OAAO6gB,EAAmBmB,EAAKhiB,EAAO8gB,KAAMmB,GAAOtB,EAAmBqB,EAAKa,EAAcZ,GAE5JnY,EAAOmX,IACTA,EAAUnX,EAEVkY,EAAI7kB,UAAUslB,GACdR,EAAI9kB,UAAUslB,GACdR,EAAIa,QAAQrmB,EAAO,IACnBulB,EAAIc,QAAQrmB,EAAO,IACnBslB,EAAIe,QAAQrmB,EAAO,KAIvBsmB,EAAetmB,EAAQ0P,EAAexlB,IAAI,iBAC1CilB,EAAU2C,SAAS,CACjB9R,OAAQA,MAIZ,IAAIumB,EAAS,GACTC,EAAe,IAAI,OAOhB,SAASF,EAAezb,EAAY0G,GACzC,GAAMA,GAAgB,KAAOA,EAAe,EAA5C,CAIAA,EAAeA,EAAe,IAAM5U,KAAKiK,GAKzC0e,EAAImB,UAAU5b,EAAW,IACzB0a,EAAIkB,UAAU5b,EAAW,IACzB2a,EAAIiB,UAAU5b,EAAW,IACzB,OAAM6b,IAAIxd,EAAKoc,EAAKC,GACpB,OAAMmB,IAAIjB,EAAMD,EAAKD,GACrB,IAAIoB,EAAOzd,EAAI7H,MACXmK,EAAOia,EAAKpkB,MAEhB,KAAIslB,EAAO,MAAQnb,EAAO,MAA1B,CAIAtC,EAAI7U,MAAM,EAAIsyB,GACdlB,EAAKpxB,MAAM,EAAImX,GACf,IAAIob,EAAW1d,EAAI2d,IAAIpB,GACnBqB,EAAkBnqB,KAAKuT,IAAIqB,GAE/B,GAAIuV,EAAkBF,EAAU,CAG9B,IAAIxD,EAAIM,EAAmB6B,EAAItlB,EAAGslB,EAAIrlB,EAAGslB,EAAIvlB,EAAGulB,EAAItlB,EAAGolB,EAAIrlB,EAAGqlB,EAAIplB,EAAGqmB,GAAQ,GAC7EC,EAAaC,UAAUF,GAEvBC,EAAaL,YAAYV,EAAMrC,EAAIzmB,KAAKoqB,IAAIpqB,KAAKiK,GAAK2K,IAEtD,IAAItY,EAAIusB,EAAIvlB,IAAMslB,EAAItlB,GAAKumB,EAAavmB,EAAIslB,EAAItlB,IAAMulB,EAAIvlB,EAAIslB,EAAItlB,IAAMumB,EAAatmB,EAAIqlB,EAAIrlB,IAAMslB,EAAItlB,EAAIqlB,EAAIrlB,GAE/G,GAAIoI,MAAMrP,GACR,OAGEA,EAAI,EACN,OAAMyK,KAAK8iB,EAAcjB,GAChBtsB,EAAI,GACb,OAAMyK,KAAK8iB,EAAchB,GAG3BgB,EAAaH,QAAQxb,EAAW,OAQ7B,SAASmc,EAAkBnc,EAAY4G,EAAeD,GAC3D,GAAMA,GAAmB,KAAOA,EAAkB,EAAlD,CAIAA,EAAkBA,EAAkB,IAAM7U,KAAKiK,GAC/C0e,EAAImB,UAAU5b,EAAW,IACzB0a,EAAIkB,UAAU5b,EAAW,IACzB2a,EAAIiB,UAAU5b,EAAW,IACzB,OAAM6b,IAAIxd,EAAKqc,EAAKD,GACpB,OAAMoB,IAAIjB,EAAMD,EAAKD,GACrB,IAAIoB,EAAOzd,EAAI7H,MACXmK,EAAOia,EAAKpkB,MAEhB,KAAIslB,EAAO,MAAQnb,EAAO,MAA1B,CAIAtC,EAAI7U,MAAM,EAAIsyB,GACdlB,EAAKpxB,MAAM,EAAImX,GACf,IAAIob,EAAW1d,EAAI2d,IAAIpV,GACnBwV,EAAqBtqB,KAAKuT,IAAIsB,GAElC,GAAIoV,EAAWK,EAAoB,CAEjC,IAAI7D,EAAIM,EAAmB6B,EAAItlB,EAAGslB,EAAIrlB,EAAGslB,EAAIvlB,EAAGulB,EAAItlB,EAAGolB,EAAIrlB,EAAGqlB,EAAIplB,EAAGqmB,GAAQ,GAC7EC,EAAaC,UAAUF,GACvB,IAAIW,EAAUvqB,KAAKiK,GAAK,EACpBugB,EAASxqB,KAAKyqB,KAAK3B,EAAKoB,IAAIpV,IAC5B4V,EAAWH,EAAUC,EAAS3V,EAElC,GAAI6V,GAAYH,EAEd,OAAMxjB,KAAK8iB,EAAchB,OACpB,CAELgB,EAAaL,YAAYV,EAAMrC,EAAIzmB,KAAKoqB,IAAIpqB,KAAKiK,GAAK,EAAIygB,IAE1D,IAAIpuB,EAAIusB,EAAIvlB,IAAMslB,EAAItlB,GAAKumB,EAAavmB,EAAIslB,EAAItlB,IAAMulB,EAAIvlB,EAAIslB,EAAItlB,IAAMumB,EAAatmB,EAAIqlB,EAAIrlB,IAAMslB,EAAItlB,EAAIqlB,EAAIrlB,GAE/G,GAAIoI,MAAMrP,GACR,OAGEA,EAAI,EACN,OAAMyK,KAAK8iB,EAAcjB,GAChBtsB,EAAI,GACb,OAAMyK,KAAK8iB,EAAchB,GAI7BgB,EAAaH,QAAQxb,EAAW,OAIpC,SAASyc,EAAkBnY,EAAWP,EAAQ2Y,EAAWC,GACvD,IAAIC,EAAyB,WAAdF,EACXG,EAAWD,EAAWtY,EAAYA,EAAU0E,YAAY0T,GAE5DG,EAAS9Y,OAASA,EAElB,IAAI6J,EAAS+O,EAAWt9B,IAAI,UAExBuuB,IAAqB,IAAXA,IACZA,EAAS,IAGXiP,EAASzY,MAAQyY,EAASzY,OAAS,GAE/BwJ,EAAS,IACXiP,EAASzY,MAAMwJ,OAASA,GAG1B,IAAIkP,EAAWH,EAAWhY,SAAS,aAAaoY,eAChDH,EAAWtY,EAAUoE,SAASoU,GAAYD,EAASv1B,MAAQw1B,EAG7D,SAASE,EAAmBxD,EAAMpV,GAChC,IAAIwJ,EAASxJ,EAAMwJ,OACfzY,EAASiP,EAAMjP,OAEnB,GAAKA,EAML,GAFAqkB,EAAKyD,OAAO9nB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAEhCyY,EAAS,GAAKzY,EAAOrQ,QAAU,EAAG,CACpC,IAAIg3B,EAAO,UAAY3mB,EAAO,GAAIA,EAAO,IACrCwL,EAAO,UAAYxL,EAAO,GAAIA,EAAO,IAEzC,IAAK2mB,IAASnb,EAGZ,OAFA6Y,EAAK0D,OAAO/nB,EAAO,GAAG,GAAIA,EAAO,GAAG,SACpCqkB,EAAK0D,OAAO/nB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAItC,IAAIgoB,EAAUrrB,KAAKiE,IAAI+lB,EAAMnb,GAAQiN,EACjCwP,EAAY,UAAY,GAAIjoB,EAAO,GAAIA,EAAO,GAAIgoB,EAAUrB,GAC5DuB,EAAY,UAAY,GAAIloB,EAAO,GAAIA,EAAO,GAAIgoB,EAAUxc,GAC5D2c,EAAY,UAAY,GAAIF,EAAWC,EAAW,IACtD7D,EAAK+D,cAAcH,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIE,EAAU,GAAIA,EAAU,IACnG9D,EAAK+D,cAAcF,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIloB,EAAO,GAAG,GAAIA,EAAO,GAAG,SAEnG,IAAK,IAAItQ,EAAI,EAAGA,EAAIsQ,EAAOrQ,OAAQD,IACjC20B,EAAK0D,OAAO/nB,EAAOtQ,GAAG,GAAIsQ,EAAOtQ,GAAG,IASnC,SAAS24B,EAAkBC,EAAUC,EAAcC,GACxD,IAAIrZ,EAAYmZ,EAASlZ,mBACrB1W,EAAQ4vB,EAASpZ,iBAErB,GAAKxW,EAAL,CAaA,IAJA,IAAI+vB,EAAcF,EAAaG,OAC3BC,EAAaF,EAAYv+B,IAAI,QAC7B0+B,EAAoBlwB,EAAMkW,OAErBlf,EAAI,EAAGA,EAAI,OAAeC,OAAQD,IAAK,CAC9C,IAAI63B,EAAY,OAAe73B,GAC3B83B,EAAae,EAAahB,GAC1BE,EAAyB,WAAdF,EAEf,GAAIC,EAAY,CACd,IAAIqB,EAAYrB,EAAWt9B,IAAI,QAC3B4+B,EAAiBrB,EAAWmB,EAAoB,uBAAUlwB,EAAMoW,OAAOyY,IAAc7uB,EAAMoW,OAAOyY,GAAW3Y,OAAQga,GAEzH,GAAIE,IACA,uBAAUD,EAAWF,GACvB,CACE,IAAIjB,EAAWD,EAAWtY,EAAYA,GAAaA,EAAUL,OAAOyY,GAEhEG,IACFA,EAAS9Y,QAAS,GAGpB,SAICO,IACHA,EAAY,IAAI,OAChBmZ,EAAS3T,iBAAiBxF,GAGrBsY,IAAamB,GAAsBD,GACtCrB,EAAkBnY,GAAW,EAAM,SAAUoZ,EAAaG,QAIxDJ,EAASS,aACX5Z,EAAU4Z,WAAaT,EAASS,aAIpCzB,EAAkBnY,GAAW,EAAOoY,EAAWC,IAInD,GAAIrY,EAAW,CACb,sBAASA,EAAUhd,MAAOq2B,GAE1BrZ,EAAUhd,MAAM6hB,KAAO,KACvB,IAAIgV,EAAYP,EAAYv+B,IAAI,aAC5B++B,EAAkBX,EAAStW,oBAAsBsW,EAAStW,qBAAuB,GACrFiX,EAAgBD,UAAYA,IAAa,EAEzC7Z,EAAU+Z,UAAYrB,QA5DlB1Y,GACFmZ,EAAS7T,sBA8DR,SAAS0U,EAAyB9Z,EAAW+Z,GAClDA,EAAgBA,GAAiB,YAKjC,IAJA,IAAIb,EAAe,CACjBG,OAAQrZ,EAAUG,SAAS4Z,IAGpB15B,EAAI,EAAGA,EAAI,OAAeC,OAAQD,IAAK,CAC9C,IAAI63B,EAAY,OAAe73B,GAC/B64B,EAAahB,GAAalY,EAAUG,SAAS,CAAC+X,EAAW6B,IAG3D,OAAOb,I,2DCjnBT,W,+GC4CO,SAASc,EAAY1xB,EAAMgnB,EAAMzN,EAAOD,EAAejE,EAASsc,EAAMC,EAAUC,GACrF,IAAIC,EAAS,IAAI,OAAK,CACpBt3B,MAAO,CACLwF,KAAMA,EACNgnB,KAAMA,EACNzN,MAAOA,EACPD,cAAeA,EACfjE,QAASA,EACTsc,KAAMA,EACN5b,SAAU6b,EAAW,WAAa,KAClCC,WAAYA,KAGhB,OAAOC,EAAO3mB,oB,kDCvDhB,MAAMvO,EAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzE5E,EAAa,CAAEC,MAAO,YACtBC,EAAa,CAAEI,IAAK,GACpBH,EAA2BwE,EAAa,IAAmBR,gCAAoB,IAAK,KAAM,KAAM,IAEhG,SAAUkhB,EAAOtjB,EAAUC,EAAY83B,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ73B,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DmE,gCAAoB,KAAM,KAAMtB,6BAAiBd,EAAKm4B,UAAW,GAChEn4B,EAAKo4B,gBACD/3B,yBAAcC,gCAAoB,OAAQnC,EAAY,CACrDC,EACAyC,6BAAiBC,6BAAiBd,EAAKo4B,gBAAiB,MAE1Dt2B,gCAAoB,IAAI,KCGjBu2B,mCAAgB,CAC7Bx9B,KAAM,WACNy9B,WAAY,GACZx5B,MAAO,GACPJ,MAAO,CACLqI,MAAO,CACLhM,KAAMw9B,OACN93B,QAAS,IAEX+3B,YAAa,CACXz9B,KAAMw9B,OACN93B,QAAS,KAGb1B,MAAML,GAAO,KAAEO,IACb,MAAM,MAAC8H,EAAK,YAAEyxB,GAAeC,oBAAO/5B,GAC9By5B,EAAWh5B,iBAAI4H,EAAM1E,OACrB+1B,EAAiBj5B,iBAAIq5B,EAAYn2B,OACvC,MAAO,CAAC81B,WAAUC,qB,iCC7BtB,MAAMr2B,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASuhB,GAAQ,CAAC,YAAY,qBAE1E,U,kDCPf,MACMrlB,EAAa,CAAEC,MAAO,UACtBC,EAAa,CAAC,MAAO,UACrBC,EAAa,CAAC,OACdC,EAAa,CACjBH,MAAO,YACPiB,IAAK,gBAEDb,EAAa,CAAC,WACd0E,EAAa,CACjB9E,MAAO,SACPiB,IAAK,aAED8D,EAAa,CAAE/E,MAAO,OACtBw6B,EAAa,CAAEx6B,MAAO,WACtBy6B,EAAa,CAAC,WACdC,EAAc,CAAE16B,MAAO,oBACvB26B,EAAc,CAAC,OACfC,EAAc,CAAE56B,MAAO,qBACvB66B,EAAc,CAAE76B,MAAO,SACvB86B,EAAc,CAAE96B,MAAO,aACvB+6B,EAAc,CAClB16B,IAAK,EACLL,MAAO,SAEHg7B,EAAc,CAAEh7B,MAAO,aACvBi7B,EAAc,CAAC,WACfC,EAAc,CAAEl7B,MAAO,oBACvBm7B,EAAc,CAAC,OACfC,EAAc,CAAEp7B,MAAO,2BACvBq7B,EAAc,CAAEr7B,MAAO,aAEvB,SAAUolB,EAAOtjB,EAAUC,EAAY83B,EAAYC,EAAYC,EAAWC,GAC9E,MAAMsB,EAAwBr5B,8BAAkB,cAEhD,OAAQE,yBAAcC,gCAAoB,MAAO,CAC/CpC,MAAOuD,4BAAgB,CAAC,QAAS,CAAEg4B,OAA2B,WAAnBz5B,EAAK05B,aAChDl5B,MAAOuD,4BAAgB,CAAEpD,MAAOX,EAAKW,QACrCxB,IAAK,YACJ,CACDiD,gCAAoB,MAAOnE,EAAY,CACrCmE,gCAAoB,QAAS,CAC3BlE,MAAO,WACPy7B,SAAU,GACVC,KAAM,GACNC,MAAO,GACPn4B,IAAK1B,EAAK4B,UAAW,gBAAiB5B,EAAK05B,UAAW,OACtDI,OAAQ95B,EAAK4B,UAAW,gBAAiB5B,EAAK05B,UAAW,QACxD,CACDt3B,gCAAoB,MAAO,CACzBV,IAAK1B,EAAK4B,UAAY,gBAAiB5B,EAAK05B,UAAW,QACtD,KAAM,EAAGt7B,IACX,EAAGD,GACNiE,gCAAoB,MAAO/D,EAAY,EACpCgC,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAYlB,EAAK+5B,UAAW,CAACC,EAAM7/B,KACjFkG,yBAAcC,gCAAoB,MAAO,CAC/CpC,MAAO,OACPqD,QAAUC,GAAiBxB,EAAKi6B,iBAAiBD,IAChD,CACDz5B,yBAAai5B,EAAuB,CAClCt7B,MAAO,WACPg8B,OAAQ,OACRC,QAASH,EAAKh0B,KACdo0B,UAAW,aACV,CACD35B,QAASC,qBAAS,IAAM,CACtB0B,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAgB,CAAC,UAAW,eAAiBu4B,EAAKt0B,SACxD5E,6BAAiBk5B,EAAKh0B,MAAO,KAElChF,EAAG,GACF,KAAM,CAAC,YACVoB,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAgB,CAACu4B,EAAKK,SAAW,iBAAmB,GAAI,WAAaL,EAAKt0B,SAChF,CACDtD,gCAAoB,MAAO,CACzBlE,MAAO,iBACPsC,MAAOuD,4BAAgB,CAAEyX,gBAAiBwe,EAAKM,WAC9C,KAAM,IACR,IACF,EAAGh8B,KACJ,OACH,KACH8D,gCAAoB,MAAOY,EAAY,CACrCZ,gCAAoB,MAAOa,EAAY,EACpC5C,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAYlB,EAAKu6B,QAAS,CAACj7B,EAAMnF,KAC/EkG,yBAAcC,gCAAoB,MAAOo4B,EAAY,CAC1Dp5B,EAAK+6B,UAAY/6B,EAAKk7B,KAAKx8B,OAAS,GAChCqC,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLL,MAAO,mBACPqD,QAAUC,GAAiBxB,EAAKi6B,iBAAiB36B,IAChD,CACD8C,gCAAoB,MAAOw2B,EAAa,CACtCx2B,gCAAoB,MAAO,CACzBV,IAAK1B,EAAK4B,UAAYtC,EAAKm7B,KAC1B,KAAM,EAAG5B,KAEdz2B,gCAAoB,MAAO02B,EAAa,CACtC12B,gCAAoB,SAAU,KAAMtB,6BAAiBxB,EAAK0G,MAAO,GAChE1G,EAAKk7B,KAAKx8B,OAAS,GACfqC,wBAAW,GAAOC,gCAAoBW,cAAW,CAAE1C,IAAK,GAAK2C,wBAAY5B,EAAKk7B,KAAM,CAAC3Q,EAAO1oB,KACnFd,yBAAcC,gCAAoB,MAAOy4B,EAAa,CAC5D32B,gCAAoB,MAAO,KAAMtB,6BAAiB+oB,EAAM7jB,MAAO,GAC/D5D,gCAAoB,MAAO42B,EAAa,CACtC52B,gCAAoB,OAAQ,KAAMtB,6BAAiB+oB,EAAMlG,OAAQ,GACjEvhB,gCAAoB,OAAQ,KAAMtB,6BAAiB+oB,EAAM6Q,MAAO,SAGlE,OACHr6B,yBAAcC,gCAAoB,MAAO24B,EAAa,CACrD72B,gCAAoB,MAAO,KAAMtB,6BAAiBxB,EAAKk7B,KAAK,GAAGx0B,MAAO,GACtE5D,gCAAoB,MAAO82B,EAAa,CACtC92B,gCAAoB,OAAQ,KAAMtB,6BAAiBxB,EAAKk7B,KAAK,GAAG7W,OAAQ,GACxEvhB,gCAAoB,OAAQ,KAAMtB,6BAAiBxB,EAAKk7B,KAAK,GAAGE,MAAO,WAIhF,EAAG/B,KACLt4B,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLL,MAAO,aACPqD,QAAUC,GAAiBxB,EAAKi6B,iBAAiB36B,IAChD,CACD8C,gCAAoB,MAAOg3B,EAAa,CACtCh3B,gCAAoB,MAAO,CACzBV,IAAK1B,EAAK4B,UAAYtC,EAAKm7B,KAC1B,KAAM,EAAGpB,KAEdj3B,gCAAoB,MAAOk3B,EAAa,CACtCl3B,gCAAoB,MAAO,KAAMtB,6BAAiBxB,EAAK0G,MAAO,GAC9D5D,gCAAoB,MAAOm3B,EAAaz4B,6BAAiBxB,EAAKqkB,OAAS,IAAM7iB,6BAAiBxB,EAAKo7B,MAAO,MAE3G,EAAGvB,QAEV,SAEL,QAEJ,G,sCCxHL,MAAMwB,EAAK,QAWItC,mCAAgB,CAC3Bx9B,KAAM,QACNy9B,WAAY,GACZx5B,MAAO,CACH,WAAc,MAElBJ,MAAO,CACH67B,QAAS,CAELx/B,KAAM6/B,MACNn6B,QAAS,IAEbs5B,UAAW,CAEPh/B,KAAM6/B,MACNn6B,QAAS,IAEbi5B,UAAU,CACN3+B,KAAMw9B,OACN93B,QAAS,UAEbE,MAAO,CACH5F,KAAMw9B,OACN93B,QAAS,SAIjB1B,MAAML,GAAO,KAAEO,IACX,MAAM,QAAEs7B,EAAO,UAAER,EAAS,MAAEp5B,EAAK,UAAE+4B,GAAcjB,oBAAO/5B,GAElDm8B,EAAgB17B,iBAAI,MACpB27B,EAAiB37B,iBAAI,MACrB47B,EAAoB57B,iBAAI,MAE9B,IAAI67B,EAAiC,GACjCC,EAAW,EACXC,EAAQ,EAIZ,MAAMC,EAAmB,KACrB,IAAIxX,EAAQ,EACZqX,EAAe3zB,QAAS/H,IACN,IAAXA,EAAKgP,GACJqV,MAGLA,GAAS,GACRyX,KAMFA,EAAoB,KACtBJ,EAAiB,GACjBK,WAAW,KACP,GAAIR,EAASx4B,MAAMi5B,YAAc,GAC7BF,QACG,CACmB,WAAlB1B,EAAUr3B,OACV04B,EAAa14B,MAAM7B,MAAM+lB,KAAO,MAChCwU,EAAa14B,MAAM7B,MAAMimB,MAAQ,MACjCsU,EAAa14B,MAAM7B,MAAMgmB,IAAM,MAC/BuU,EAAa14B,MAAM7B,MAAMkmB,OAAS,QAElCqU,EAAa14B,MAAM7B,MAAM+lB,KAAO,MAChCwU,EAAa14B,MAAM7B,MAAMimB,MAAQ,MACjCsU,EAAa14B,MAAM7B,MAAMgmB,IAAM,MAC/BuU,EAAa14B,MAAM7B,MAAMkmB,OAAS,OAGtC,MAAM/lB,EAAQo6B,EAAa14B,MAAMi5B,YAAcL,EACzCp3B,EAASk3B,EAAa14B,MAAMk5B,aAAeL,EAC3CM,EAAWC,SAASC,iBAAiB,oBAG3C,IAAK,IAAI39B,EAAI,EAAGA,EAAIy9B,EAASx9B,OAAQD,IAAK,CACtC,IAAI49B,EAA2B,CAC3BrtB,EAAG,EACHC,EAAG,EACH5N,MAAQ66B,EAASz9B,GAAWu9B,YAC5Bz3B,OAAS23B,EAASz9B,GAAWw9B,cAI7B5X,EAAQ,EAGZ,GAII,GAHAgY,EAAWrtB,EAAI7J,OAAKm3B,aAAa,EAAGj7B,GACpCg7B,EAAWptB,EAAI9J,OAAKm3B,aAAa,EAAG/3B,GACpC8f,IACIA,EAAQ,IACR,YAECkY,EAAUF,EAAYX,IAI/BA,EAAenyB,KAAK8yB,GAEnBH,EAASz9B,GAAWyC,MAAM+lB,KAAOoV,EAAWrtB,EAAI,KAChDktB,EAASz9B,GAAWyC,MAAMgmB,IAAMmV,EAAWptB,EAAI,KAC/CitB,EAASz9B,GAAWyC,MAAMs7B,SAAWb,EAAW,KAChDO,EAASz9B,GAAWyC,MAAMu7B,UAAYb,EAAQ,MAIvDC,KAED,MAIDa,EAAgB,KACdnB,EAASx4B,MAAMi5B,YAAc,GAC7BU,IAEAX,WAAW,KACP,MAAMY,EAAYC,SAASrB,EAASx4B,MAAMi5B,aAC1C,IAAIa,EAAQ,GACTF,EAAY,KACXE,EAAQ,EACFF,EAAY,KAClBE,EAAQ,EACHF,EAAY,MACjBE,EAAQ,IAEZrB,EAAUz4B,MAAM7B,MAAMgmB,IAAOyV,EAAYtB,EAAM,EAAI,KACnDG,EAAUz4B,MAAM7B,MAAMimB,MAASwV,EAAYtB,EAAM,EAAI,KACrD,MAAMjlB,EAASumB,EAAY,EAAI,GACzBT,EAAWC,SAASC,iBAAiB,oBAC3C,IAAK,IAAI39B,EAAI,EAAGA,EAAIy9B,EAASx9B,OAAQD,IAAK,CACtC,MAAMq+B,EAAMr+B,EAAIo+B,EAAQ,IAAMnxB,KAAKiK,GAG9BumB,EAASz9B,GAAWyC,MAAM+lB,KADtB,IAANxoB,EACmC,KAAQ0G,OAAK43B,YAAY3mB,EAAQ0mB,EAAM,KAAM7V,KAAO+V,EAAKv+B,EAAGo+B,GAAU,IAAM,KAEnG,IAANp+B,EAC6B,KAAQ0G,OAAK43B,YAAY3mB,EAAQ0mB,EAAM,KAAM7V,KAAO+V,EAAKv+B,EAAGo+B,GAAU,IAAM,KAE5E,KAAO13B,OAAK43B,YAAY3mB,EAAQ0mB,EAAM,KAAM7V,KAAO+V,EAAKv+B,EAAGo+B,IAAU,KAKtGX,EAASz9B,GAAWyC,MAAMgmB,IADxB,IAAJzoB,GACqC0G,OAAK43B,YAAY3mB,EAAQ0mB,EAAM,KAAM5V,IAAO,OAE3C/hB,OAAK43B,YAAY3mB,EAAQ0mB,EAAM,KAAM5V,IAAO,IAAM,OAIhG,MAKLoI,EAAQ,KACNmL,EAAU13B,MAAMrE,OAAS,GACzBi9B,EAAW,IACXC,EAAQ,KAERD,EAAW,GACXC,EAAQ,IAIZqB,sBAAS,KACLnB,MAIkB,WAAlB1B,EAAUr3B,MACVk6B,sBAAS,KACLzB,EAAUz4B,MAAM7B,MAAMg8B,QAAU,QAChCR,MAGJO,sBAAS,KACLzB,EAAUz4B,MAAM7B,MAAMg8B,QAAU,UAM5C38B,mBAAM,IAAInB,EAAMq7B,UAAWnL,EAAQ,CAAE7uB,WAAW,EAAM08B,MAAM,IAC5D58B,mBAAM,IAAInB,EAAM67B,QAAS3L,EAAQ,CAAE7uB,WAAW,EAAM08B,MAAM,IAG1D,MAAMxC,EAAoB36B,IACtBL,EAAK,aAAcK,IAEvB,MAAO,CACHsC,iBACAi5B,WAAUC,YAAWC,eAAcrB,YACnCa,UAASR,YAAWp5B,QACpBs5B,oBAKJ,SAASqC,EAAKv+B,EAAWo+B,EAAa,IAClC,OAAa,KAAVA,EAC2B,EAAlBnxB,KAAKmD,IAAI,EAAIpQ,GAAU,GAAuB,EAAlBiN,KAAKmD,IAAI,EAAIpQ,GAClC,IAAVo+B,EACqB,EAAlBnxB,KAAKmD,IAAI,EAAIpQ,GAAU,GAAS,EAAJA,EACrB,IAAVo+B,GAEU,KAAVA,EADqB,EAAlBnxB,KAAKmD,IAAI,EAAIpQ,GAAU,GAAuB,EAAlBiN,KAAKmD,IAAI,EAAIpQ,GAIvB,EAAlBiN,KAAKmD,IAAI,EAAIpQ,GAAU,GAAKiN,KAAKmD,IAAI,EAAIpQ,GAKzD,SAAS2+B,EAAUC,EAAYC,GAC3B,MAAMC,EAAK,CAAEvuB,EAAGquB,EAAMruB,EAAGC,EAAGouB,EAAMpuB,GAC5BuuB,EAAK,CAAExuB,EAAGquB,EAAMruB,EAAIquB,EAAMh8B,MAAO4N,EAAGouB,EAAMpuB,EAAIouB,EAAM94B,QACpDk5B,EAAK,CAAEzuB,EAAGsuB,EAAMtuB,EAAGC,EAAGquB,EAAMruB,GAC5ByuB,EAAK,CAAE1uB,EAAGsuB,EAAMtuB,EAAIsuB,EAAMj8B,MAAO4N,EAAGquB,EAAMruB,EAAIquB,EAAM/4B,QAC1D,QACIg5B,EAAGvuB,EAAI0uB,EAAG1uB,GACVyuB,EAAGzuB,EAAIwuB,EAAGxuB,GACVuuB,EAAGtuB,EAAIyuB,EAAGzuB,GACVwuB,EAAGxuB,EAAIuuB,EAAGvuB,GAKlB,SAASstB,EAAUF,EAA0BX,GACzC,IAAIiC,GAAO,EAMX,OALAjC,EAAe3zB,QAAS/H,IAChBo9B,EAAUf,EAAYr8B,KACtB29B,GAAO,KAGRA,M,iCCvQnB,MAAMl7B,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASuhB,GAAQ,CAAC,YAAY,qBAE1E,U,+LCCf4Z,OAAW,CACTC,OACAC,OACAC,OACAC,SAEK,MAAMC,EAAUL,ECbjBt6B,EAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzE5E,EAAa,CAAEC,MAAO,oBACtBC,EAA2ByE,EAAa,IAAmBR,gCAAoB,KAAM,KAAM,QAAS,IACpGhE,EAA2BwE,EAAa,IAAmBR,gCAAoB,IAAK,KAAM,UAAW,IAoB/E5D,mCAAiB,CAC3CC,OAAQ,mBACRC,MAAO,CACLzB,KAAM,MAER6B,MAAO,CAAC,cAAc,cAAc,iBAAiB,oBACrDC,MAAMC,GAAc,KAAEC,IAExB,MAAMP,EAAQM,EASJm7B,GAFe/6B,sBAASV,EAAMzB,MACnBkC,kBAAI,GACAA,iBAAI,OACAC,sBAAS,IAChBD,kBAAI,GACLA,kBAAI,GAoHzB,OA3GIq+B,uBAAU,KACN,IAAIC,EAAUF,EAAQxY,KAAKoV,EAAQ93B,OAC/BI,EAAwB,CACxB1B,MAAO,CACHiF,KAAM,KACNugB,KAAM,SACNC,IAAK,MACLkX,UAAW,CACXrW,MAAO,UACPsW,SAAU,IAEVC,QAAS,MACTC,aAAc,CACdC,WAAY,OACZzW,MAAO,QAGX0W,OAAQ,CACJ,CACAljC,KAAM,cACNE,KAAM,MACN2a,OAAQ,CAAC,GAAI,IACb+R,mBAAmB,EACnBT,UAAW,CACPgX,aAAc,GACdC,YAAa,OACbhX,YAAa,GAEjBlgB,MAAO,CACHgf,MAAM,EACNhN,SAAU,UAEd+M,SAAU,CACN/e,MAAO,CACPgf,MAAM,EACN4X,SAAU,KACVG,WAAY,SAGhBtgB,UAAW,CACPuI,MAAM,GAEV9oB,KAAM,CACF,CAAEoF,MAAO,KAAMxH,KAAM,gBACrBmsB,UAAW,CACPK,MAAO,IAAIkW,EAAQW,QAAQC,eAAe,EAAG,EAAG,EAAG,EAAG,CACtD,CACIrc,OAAQ,EACRuF,MAAO,uBAEX,CACIvF,OAAQ,EACRuF,MAAO,2BAKf,CAAEhlB,MAAO,IAAKxH,KAAM,SAAUmsB,UAAW,CAACK,MAAO,iBAErD+W,OAAQ,GAER,CACAvjC,KAAM,cACNE,KAAM,MACN2a,OAAQ,CAAC,GAAI,IACb+R,mBAAmB,EACnBT,UAAW,CACPgX,aAAc,GACdC,YAAa,OACbhX,YAAa,GAEjBlgB,MAAO,CACHgf,MAAM,EACNhN,SAAU,UAEd+M,SAAU,CACN/e,MAAO,CACPgf,MAAM,EACN4X,SAAU,KACVG,WAAY,SAGhBtgB,UAAW,CACPuI,MAAM,GAEV9oB,KAAM,CACF,CAAEoF,MAAO,IAAKxH,KAAM,SAAUmsB,UAAW,CAACK,MAAO,aAErD+W,OAAQ,KAMhBX,EAAQY,UAAU57B,GACjBg7B,EAAQa,GAAG,SAAS,SAASC,SAY/B,CAACv+B,EAAUC,KACRI,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DE,EACAC,EACAgE,gCAAoB,MAAO,CACzBlE,MAAO,2BACPsgC,QAAS,UACTr/B,IAAKg7B,GACJ,KAAM,W,iCCpKb,MAAMp4B,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,U,kCCwCf,IAAIkjB,EAEJ,WACE,SAASA,EACTwZ,EACAvZ,GACEjtB,KAAKymC,0BAA4BD,EACjCxmC,KAAK0mC,YAAczZ,EAiCrB,OA9BAD,EAAqB1iB,UAAUq8B,YAAc,WAC3C,IAAIC,EAAU5mC,KAAK0mC,cAInB,OAAOE,EAAQC,SAASD,EAAQtmB,UAGlC0M,EAAqB1iB,UAAUw8B,YAAc,SAAUlkC,GACrD,IAAIgkC,EAAU5mC,KAAK0mC,cAEnB,OAAOE,EAAQG,YAAYnkC,IAAS,GAGtCoqB,EAAqB1iB,UAAUy8B,YAAc,SAAUnkC,GAIrD,IAAIokC,EAAwBhnC,KAAKymC,4BAEjC,OAAOO,EAAsBD,YAAYnkC,IAG3CoqB,EAAqB1iB,UAAUsf,cAAgB,SAAUrkB,EAAWe,GAElE,IAAI0gC,EAAwBhnC,KAAKymC,4BAEjC,OAAOO,EAAsBpd,cAAcrkB,EAAWe,IAGjD0mB,EAtCT,GAyCe,U,kIC1CR,SAASia,EAAgBjiC,EAAMO,GACpC,IAAI2hC,EAAYliC,EAAKmiC,iBAAiB,kBAClC1vB,EAAMyvB,EAAUnhC,OAEpB,GAAY,IAAR0R,EAAW,CACb,IAAI2vB,EAAS,eAAiBpiC,EAAMO,EAAW2hC,EAAU,IACzD,OAAiB,MAAVE,EAAiBA,EAAS,GAAK,KACjC,GAAI3vB,EAAK,CAGd,IAFA,IAAI4vB,EAAO,GAEFvhC,EAAI,EAAGA,EAAIohC,EAAUnhC,OAAQD,IACpCuhC,EAAKz2B,KAAK,eAAiB5L,EAAMO,EAAW2hC,EAAUphC,KAGxD,OAAOuhC,EAAKC,KAAK,MAGd,SAASC,EAA4BviC,EAAMwiC,GAChD,IAAIN,EAAYliC,EAAKmiC,iBAAiB,kBAEtC,IAAK,qBAAQK,GACX,OAAOA,EAAoB,GAK7B,IAFA,IAAIH,EAAO,GAEFvhC,EAAI,EAAGA,EAAIohC,EAAUnhC,OAAQD,IAAK,CACzC,IAAI1C,EAAW4B,EAAKyiC,kBAAkBP,EAAUphC,IAE5C1C,GAAY,GACdikC,EAAKz2B,KAAK42B,EAAkBpkC,IAIhC,OAAOikC,EAAKC,KAAK,O,8DChFnB,MACMthC,EAAa,CAAEC,MAAO,YACtBC,EAAa,CAAED,MAAO,eACtBE,EAAa,CAAC,OACdC,EAAa,CAAEH,MAAO,QAMAM,mCAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLihC,OAAQ,CAAEl/B,QAASmB,OAAY,wBAEjC7C,MAAMC,GAAc,KAAEC,IAIxB,MAAMP,EAAQM,EAqBd,MAAO,CAACgB,EAAUC,KACRI,yBAAcC,gCAAoB,MAAOrC,EAAY,CAC3DmE,gCAAoB,MAAOjE,EAAY,CACrCiE,gCAAoB,MAAO,CACzBV,IAAKhD,EAAMihC,QACV,KAAM,EAAGvhC,KAEdgE,gCAAoB,MAAO/D,EAAY,CACrCqF,wBAAY1D,EAAK2D,OAAQ,UAAW,GAAI,IAAM,CAC5C9C,6BAAiB,oB,iCC9CzB,MAAMkB,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,U,kCCRf,W,kCCAA,W,kCCAA,W,uHCGA,MAAM9D,EAAa,CAAEM,IAAK,GACpBJ,EAAa,CAAEI,IAAK,GACpBH,EAAa,CAAC,aACdC,EAAa,CAAEE,IAAK,GACpBD,EAAa,CAAC,aACd0E,EAAa,CAAE9E,MAAO,yBACtB+E,EAAa,CAAE/E,MAAO,uBACtBw6B,EAA0Bt2B,gCAAoB,MAAO,CAAElE,MAAO,mDAAqD,CAC1GkE,gCAAoB,MAAO,CAAElE,MAAO,gBAAkB,QACtDkE,gCAAoB,MAAO,CAAElE,MAAO,gBAAkB,OACtDkE,gCAAoB,MAAO,CAAElE,MAAO,gBAAkB,OACtDkE,gCAAoB,MAAO,CAAElE,MAAO,gBAAkB,OACtDkE,gCAAoB,MAAO,CAAElE,MAAO,gBAAkB,QACjE,GACEy6B,EAAa,CAAEz6B,MAAO,oDACtB06B,EAAc,CAAE16B,MAAO,iBACvB26B,EAAc,CAAEt6B,IAAK,GACrBu6B,EAAc,CAAC,OACfC,EAAc,CAAEx6B,IAAK,GACrBy6B,EAAc,CAAEz6B,IAAK,GACrB06B,EAAc,CAAC,OACfC,EAAc,CAAE36B,IAAK,GACrB46B,EAAc,CAAE56B,IAAK,GACrB66B,EAAc,CAAC,OACfC,EAAc,CAAE96B,IAAK,GACrB+6B,EAAc,CAAE/6B,IAAK,GACrBg7B,EAAc,CAAC,OACfqG,EAAc,CAAErhC,IAAK,GACrBshC,EAAc,CAAE3hC,MAAO,iBAaDM,mCAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACLohC,cAAe,KACfC,eAAgB,MAElBjhC,MAAO,CAAC,wBACRC,MAAMC,GAAc,KAAEC,IAExB,MAAMP,EAAQM,EAQRghC,EAAqB7gC,iBAAI,GACzB8gC,EAAQ9gC,kBAAI,GACZ+gC,EAAsB/gC,iBAAIT,EAAMohC,eAChCK,EAAahhC,iBAAI,IACjBihC,EAAYjhC,iBAAI,IAChBkhC,EAAiBlhC,iBAAI,IAErBiM,EAAU,KACZnM,EAAK,wBAAwB,IAG3BqhC,EAAW9gC,IACb,MAAMoG,EAAUC,OAAUC,QAAQ,CAC9BC,MAAM,EACNC,KAAM,SACNC,WAAY,uBAEhBs6B,eAAiB,CACbtjC,KAAM,CACFujC,UAAWhhC,EAEXwI,QAAQ,IAAIrD,MAAOC,aAExB2B,KAAMtJ,IACLmjC,EAAU/9B,MAAQ,GAAGo+B,OAAOxjC,EAAKyjC,aACjCP,EAAW99B,MAAO,GAAGo+B,OAAOxjC,EAAK0jC,cACjC,IAAI7iC,EAAW,GACfb,EAAKyjC,YAAYr5B,QAAS/H,IACnBA,EAAKvE,MACJuE,EAAKshC,aAAav5B,QAAS5B,IACpBA,EAAEo7B,WACL/iC,EAAI+K,KAAKpD,EAAE00B,SACZ2G,QAAQC,IAAIjjC,QAQvBuiC,EAAeh+B,MAAQvE,EACvBkiC,EAAmB39B,MAAQpF,EAAK+jC,MAChCp7B,EAAQY,UACTC,MAAM,KACL25B,EAAU/9B,MAAQ,GAClB29B,EAAmB39B,MAAQ,EAC3BuD,EAAQY,WAkBhB,OAdA3G,mBAAM,IAAMnB,EAAMohC,cAAgBhgC,IAC9BogC,EAAoB79B,MAAQvC,GAC7B,CACCC,WAAW,IAEfF,mBAAM,IAAMnB,EAAMqhC,eAAiBjgC,IAC3BA,GAAOA,EAAIN,IACX8gC,EAAQxgC,EAAIN,KAGjB,CACCO,WAAW,IAGR,CAACC,EAAUC,KAChB,MAAMghC,EAAsB9gC,8BAAkB,YACxC+gC,EAA4B/gC,8BAAkB,kBAC9CghC,EAAyBhhC,8BAAkB,eAC3CihC,EAA+BjhC,8BAAkB,qBACjDkhC,EAAoBlhC,8BAAkB,UACtCmhC,EAAoBnhC,8BAAkB,UACtC0L,EAAuB1L,8BAAkB,aACzC2L,EAAuB3L,8BAAkB,aACzCohC,EAAiBv1B,8BAAkB,OAEzC,OAAQ3L,yBAAce,yBAAa0K,EAAsB,CACvD5I,WAAYg9B,EAAoB79B,MAChC,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB0+B,EAAqB79B,MAAQb,GACjGT,MAAO/B,EAAQ+gC,eAAengC,QAAU,OACxCe,MAAO,MACPyK,QAASA,EACT,wBAAwB,EACxB,yBAAyB,EACzB,eAAgB,cACf,CACDa,OAAQvL,qBAAS,IAAM,CACrB0B,gCAAoB,OAAQy9B,EAAa,CACvCt/B,yBAAasL,EAAsB,CACjC9Q,KAAM,UACNwG,QAAS6J,GACR,CACD3K,QAASC,qBAAS,IAAM,CACtBG,6BAAiB,QAEnBG,EAAG,QAITP,QAASC,qBAAS,IAAM,CACtBH,yBAAa+gC,EAAmB,CAAEE,OAAQ,IAAM,CAC9C/gC,QAASC,qBAAS,IAAM,CACtBH,yBAAa8gC,EAAmB,CAAEI,KAAM,IAAM,CAC5ChhC,QAASC,qBAAS,IAAM,CACpB0/B,EAAU/9B,MAAMrE,OAEd8D,gCAAoB,IAAI,IADvBzB,yBAAcC,gCAAoB,MAAOrC,EAAY,UAEzDoC,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAYk/B,EAAU/9B,MAAO,CAAC/C,EAAM6B,KAClFd,yBAAcC,gCAAoB,MAAO,CAAE/B,IAAK4C,GAAO,CAC/C,GAAb7B,EAAKvE,MACDsF,yBAAcC,gCAAoB,MAAOnC,EAAY,CACpDiE,gCAAoB,KAAM,CACxBs/B,UAAavgC,EAAM,EAAK,IAAM7B,EAAKzE,MAClC,KAAM,EAAGuD,GACZmC,yBAAa2gC,EAA2B,CACtCh+B,WAAY+8B,EAAM59B,MAClB,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBy+B,EAAO59B,MAAQb,IAClF,CACDf,QAASC,qBAAS,IAAM,EACrBL,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAY5B,EAAKshC,aAAc,CAACn7B,EAAG1H,KACjFsC,yBAAce,yBAAa6/B,EAAqB,CACtDl6B,MAAOtB,EAAEo7B,SACThmC,KAAMkD,EACNQ,IAAKR,EACL4H,UAAU,GACT,CACDlF,QAASC,qBAAS,IAAM,CACtBG,6BAAiBC,6BAAiB2E,EAAE00B,SAAU,KAEhDn5B,EAAG,GACF,KAAM,CAAC,QAAS,WACjB,QAENA,EAAG,GACF,KAAM,CAAC,kBAEZc,gCAAoB,IAAI,GACd,GAAbxC,EAAKvE,MACDsF,yBAAcC,gCAAoB,MAAOjC,EAAY,CACpD+D,gCAAoB,KAAM,CACxBs/B,UAAavgC,EAAM,EAAK,IAAM7B,EAAKzE,MAClC,KAAM,EAAGyD,GACZiC,yBAAa6gC,EAA8B,CACzCl+B,WAAYm9B,EAAeh+B,MAC3B,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB6+B,EAAgBh+B,MAAQb,IAC3F,CACDf,QAASC,qBAAS,IAAM,EACrBL,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAY5B,EAAKshC,aAAc,CAACn7B,EAAG1H,KACjFsC,yBAAce,yBAAa+/B,EAAwB,CACzDp6B,MAAOtB,EAAE00B,QACT57B,IAAKR,EACL4H,UAAU,GACT,CACDlF,QAASC,qBAAS,IAAM,CACtBG,6BAAiBC,6BAAiB2E,EAAE00B,SAAU,KAEhDn5B,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,GACF,KAAM,CAAC,kBAEZc,gCAAoB,IAAI,OAE5B,QAENd,EAAG,IAELT,yBAAa8gC,EAAmB,CAAEI,KAAM,IAAM,CAC5ChhC,QAASC,qBAAS,IAAM,CACtB0B,gCAAoB,KAAMY,EAAY,CACpCnC,6BAAiB,SACjBuB,gCAAoB,OAAQ,KAAMtB,6BAAiB9B,EAAQ+gC,eAAetgC,KAAO,IAAK,KAExF2C,gCAAoB,MAAOa,EAAY,CACrCy1B,GACCr4B,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAYi/B,EAAW99B,MAAO,CAAC/C,EAAM6B,IACpF4L,6BAAiB1M,yBAAcC,gCAAoB,MAAOq4B,EAAY,CAC3Ev2B,gCAAoB,MAAOw2B,EAAa93B,6BAAiBxB,EAAKzE,MAAO,GACrEuH,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAmC,OAAnBnC,EAAKqiC,WAAsB,gBAAkB,OACnE,CACmB,OAAnBriC,EAAKqiC,YACDthC,yBAAcC,gCAAoB,MAAOu4B,EAAa,CACrDz2B,gCAAoB,MAAO,CACzBV,IAAKC,mBAAOC,QAAa,sBACxB,KAAM,EAAGk3B,OAEbz4B,yBAAcC,gCAAoB,OAAQy4B,EAAa,UAC3D,GACH32B,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAmC,OAAnBnC,EAAKqiC,WAAsB,gBAAkB,OACnE,CACmB,OAAnBriC,EAAKqiC,YACDthC,yBAAcC,gCAAoB,MAAO04B,EAAa,CACrD52B,gCAAoB,MAAO,CACzBV,IAAKC,mBAAOC,QAAa,sBACxB,KAAM,EAAGq3B,OAEb54B,yBAAcC,gCAAoB,OAAQ44B,EAAa,UAC3D,GACH92B,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAmC,OAAnBnC,EAAKqiC,WAAsB,gBAAkB,OACnE,CACmB,OAAnBriC,EAAKqiC,YACDthC,yBAAcC,gCAAoB,MAAO64B,EAAa,CACrD/2B,gCAAoB,MAAO,CACzBV,IAAKC,mBAAOC,QAAa,sBACxB,KAAM,EAAGw3B,OAEb/4B,yBAAcC,gCAAoB,OAAQ+4B,EAAa,UAC3D,GACHj3B,gCAAoB,MAAO,CACzBlE,MAAOuD,4BAAmC,MAAnBnC,EAAKqiC,WAAqB,gBAAmB,OACnE,CACmB,MAAnBriC,EAAKqiC,YACDthC,yBAAcC,gCAAoB,MAAOg5B,EAAa,CACrDl3B,gCAAoB,MAAO,CACzBV,IAAKC,mBAAOC,QAAa,sBACxB,KAAM,EAAG23B,OAEbl5B,yBAAcC,gCAAoB,OAAQs/B,EAAa,UAC3D,MACA,CACH,CAAC2B,EAAgBpgC,MAEjB,UAGRH,EAAG,MAGPA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,aAAc,c,UCpSvB,MAAMe,EAAc,EAEL,U,uNC+Cf,SAAS6/B,EAASvzB,GAChB,GAAIA,EAAQ,CAGV,IAFA,IAAIwzB,EAAY,GAEP9jC,EAAI,EAAGA,EAAIsQ,EAAOrQ,OAAQD,IACjC8jC,EAAUh5B,KAAKwF,EAAOtQ,GAAG/D,SAG3B,OAAO6nC,GAIX,SAASC,EAA4BpW,EAAWqW,GAC9C,IAAIh7B,EAAQ2kB,EAAU3kB,MAClByW,EAAYukB,GAAUA,EAAOtkB,mBACjC,MAAO,CACLjgB,UAAWkuB,EAAUluB,UACrBwkC,SAAUtW,EAAUsW,SACpBC,YAAavW,EAAUpzB,YAAY2pC,YACnCj8B,KAAM0lB,EAAU3kB,MAAMvG,MAAMwF,KAC5BkL,KAAMwa,EAAUwW,SAChB/N,UAAWzI,EAAUxa,KAGrBqO,MAAOxY,EAAMvG,MAAM+e,MACnBD,cAAevY,EAAMvG,MAAM8e,cAC3B6iB,gBAAiBP,EAASpkB,GAAaA,EAAUF,MAAMjP,SAI3D,IAAI+zB,EAA6B,CAAC,QAAS,gBAAiB,QAAS,SAAU,YAC3EC,EAAqB,IAAIC,EAAA,KACzBC,EAAwB,iBACxBC,EAA0B,iBAE9B,SAASC,EAAe7wB,EAAQ7V,EAAQ2mC,GACtC,IAAK,IAAI3kC,EAAI,EAAGA,EAAI2kC,EAAK1kC,OAAQD,IAAK,CACpC,IAAIQ,EAAMmkC,EAAK3kC,GAEI,MAAfhC,EAAOwC,KACTqT,EAAOrT,GAAOxC,EAAOwC,KAK3B,IAAIokC,EAAqB,CAAC,IAAK,IAAK,YAEhC,EAEJ,WACE,SAASC,IACP3qC,KAAK4qC,WAAa,GAClB5qC,KAAK6qC,eAAiB,GAgYxB,OA7XAF,EAAargC,UAAUwgC,YAAc,WACnC9qC,KAAK4qC,WAAa,GAClB5qC,KAAK6qC,eAAiB,IAOxBF,EAAargC,UAAUygC,UAAY,SAAUxlC,EAAWwkC,EAAU1pC,EAAayO,EAAOk8B,GACpF,IAAIC,EAAan8B,EAAMvG,MACnBuhC,EAASh7B,EAAMqZ,aACf+iB,EAAapB,EAAOoB,YAAc,GAElCC,EAAiBr8B,EAAM4Y,uBACvBwU,EAAYptB,EAAMoK,kBAAkBjF,QACxCoF,EAAA,KAAaoO,eAAeyU,EAAWA,EAAWiP,GAE9CA,EACFf,EAAmBgB,kBAAkBD,IAGrCf,EAAmB/zB,EAAI+zB,EAAmB9zB,EAAI8zB,EAAmBhjB,SAAWgjB,EAAmB3gB,QAAU2gB,EAAmB1gB,QAAU,EACtI0gB,EAAmB9gB,OAAS8gB,EAAmB7gB,OAAS,GAG1D,IACI0gB,EADAoB,EAAOv8B,EAAMqZ,aAGjB,GAAIkjB,EAAM,CACRpB,EAAWoB,EAAKnyB,kBAAkBjF,QAClC,IAAI6C,EAAYu0B,EAAK3jB,uBACrBrO,EAAA,KAAaoO,eAAewiB,EAAUA,EAAUnzB,GAGlD,IAAIw0B,EAAarB,GAAYoB,EAAK7lB,mBAElCxlB,KAAK4qC,WAAWh6B,KAAK,CACnB9B,MAAOA,EACPyW,UAAW+lB,EACXjrC,YAAaA,EACbkF,UAAWA,EACXwkC,SAAUA,EACViB,aAAcA,EACdO,qBAAsB,KACtBtyB,KAAMijB,EACN+N,SAAUA,EAGVuB,SAAUvB,EAAWA,EAASvhC,MAAQuhC,EAASr+B,OAAS,EAGxD6/B,YAAa,CACXzmB,OAAQlW,EAAMkW,OACd0mB,iBAAkBJ,GAAcA,EAAWtmB,OAC3C3O,EAAG+zB,EAAmB/zB,EACtBC,EAAG8zB,EAAmB9zB,EACtBgT,OAAQ8gB,EAAmB9gB,OAC3BC,OAAQ6gB,EAAmB7gB,OAC3BnC,SAAUgjB,EAAmBhjB,SAC7B7e,MAAO,CACL8N,EAAG40B,EAAW50B,EACdC,EAAG20B,EAAW30B,EACdgR,MAAO2jB,EAAW3jB,MAClBD,cAAe4jB,EAAW5jB,cAC1B3e,MAAOuiC,EAAWviC,MAClBkD,OAAQq/B,EAAWr/B,OACnB85B,SAAUuF,EAAWvF,UAEvBiG,OAAQ78B,EAAM68B,OACdC,YAAaV,EAAWpqB,SACxB+qB,YAAaX,EAAW9jB,aAK9BujB,EAAargC,UAAUwhC,kBAAoB,SAAUC,GACnD,IAAInzB,EAAQ5Y,KAEZA,KAAK6qC,eAAej6B,KAAKm7B,GAEzB,IAAI1rC,EAAc0rC,EAAUC,QACxBhB,EAAe3qC,EAAYC,IAAI,gBAK7B,wBAAW0qC,IAAiB,kBAAKA,GAAcjlC,SAIrDgmC,EAAUtgB,MAAMwgB,UAAS,SAAUC,GACjC,GAAIA,EAAMlnB,OACR,OAAO,EAIT,IAAI6a,EAASqM,EAAM5mB,iBACf6mB,EAAS,eAAUD,GAEnBrM,IAAWA,EAAOuM,oBACpBxzB,EAAMmyB,UAAUoB,EAAO5mC,UAAW4mC,EAAOpC,SAAU1pC,EAAaw/B,EAAQmL,OAK9EL,EAAargC,UAAU+hC,mBAAqB,SAAUlvB,GACpD,IAAIzU,EAAQyU,EAAIE,WACZzR,EAASuR,EAAIG,YAEjB,SAASgvB,EAAkBlyB,EAAI0L,GAC7B,OAAO,WACL,eAAsB1L,EAAI0L,IAI9B,IAAK,IAAIhgB,EAAI,EAAGA,EAAI9F,KAAK4qC,WAAW7kC,OAAQD,IAAK,CAC/C,IAAI2tB,EAAYzzB,KAAK4qC,WAAW9kC,GAC5BgJ,EAAQ2kB,EAAU3kB,MAClBg7B,EAASh7B,EAAMqZ,aACfokB,EAAmB9Y,EAAUgY,YAC7BT,OAAe,EAGjBA,EADE,wBAAWvX,EAAUuX,cACRvX,EAAUuX,aAAanB,EAA4BpW,EAAWqW,IAE9DrW,EAAUuX,aAG3BA,EAAeA,GAAgB,GAC/BvX,EAAU8X,qBAAuBP,EACjC,IAAIwB,EAAiBz5B,KAAKiK,GAAK,IAG3B8sB,GACFA,EAAO/hB,cAAc,CAEnB0kB,OAAO,EAEP3rB,SAA4B,MAAlBkqB,EAAa30B,GAA+B,MAAlB20B,EAAa10B,EAAY,KAAOi2B,EAAiBX,YAErFxkB,SAAiC,MAAvB4jB,EAAajkB,OAAiBikB,EAAajkB,OAASylB,EAAiBD,EAAiBV,YAChGhiB,OAAQ,CAACmhB,EAAahqB,IAAM,EAAGgqB,EAAazpB,IAAM,KAItD,IAAImrB,GAAuB,EAwB3B,GAtBsB,MAAlB1B,EAAa30B,GAEfvH,EAAMuH,EAAI,eAAa20B,EAAa30B,EAAG3N,GACvCoG,EAAMoV,SAAS,IAAK,GAEpBwoB,GAAuB,IAEvB59B,EAAMuH,EAAIk2B,EAAiBl2B,EAC3BvH,EAAMoV,SAAS,IAAKqoB,EAAiBhkC,MAAM8N,IAGvB,MAAlB20B,EAAa10B,GAEfxH,EAAMwH,EAAI,eAAa00B,EAAa10B,EAAG1K,GACvCkD,EAAMoV,SAAS,IAAK,GAEpBwoB,GAAuB,IAEvB59B,EAAMwH,EAAIi2B,EAAiBj2B,EAC3BxH,EAAMoV,SAAS,IAAKqoB,EAAiBhkC,MAAM+N,IAGzC00B,EAAad,gBAAiB,CAChC,IAAIyC,EAAY7C,EAAOtkB,mBAEnBmnB,IACFA,EAAUzkB,SAAS,CACjB9R,OAAQ40B,EAAad,kBAGvBwC,GAAuB,GAI3B,IAAIE,EAAmBtC,EAAsBx7B,GAC7C89B,EAAiBF,qBAAuBA,EACxC59B,EAAMsY,SAAkC,MAAvB4jB,EAAajkB,OAAiBikB,EAAajkB,OAASylB,EAAiBD,EAAiBnlB,SACvGtY,EAAMwa,OAASijB,EAAiBjjB,OAChCxa,EAAMya,OAASgjB,EAAiBhjB,OAEhC,IAAK,IAAI/P,EAAI,EAAGA,EAAI2wB,EAA2BpkC,OAAQyT,IAAK,CAC1D,IAAIlT,EAAM6jC,EAA2B3wB,GACrC1K,EAAMoV,SAAS5d,EAA0B,MAArB0kC,EAAa1kC,GAAe0kC,EAAa1kC,GAAOimC,EAAiBhkC,MAAMjC,IAG7F,GAAI0kC,EAAa6B,WAIf,GAHA/9B,EAAM+9B,WAAY,EAClB/9B,EAAM68B,OAAS,OAEX7B,EAAQ,CACV,IAAI7gB,EAAYwK,EAAUpzB,YAE1B,GAA2B,MAAvBozB,EAAUluB,UAAmB,CAC/B,IAAIP,EAAOyuB,EAAUpzB,YAAYqP,QAAQ+jB,EAAUsW,UACnD9gB,EAAYjkB,EAAK0gB,aAAa+N,EAAUluB,WAG1CuJ,EAAMu3B,GAAG,OAAQiG,EAAkBxC,EAAQ7gB,EAAUrD,SAAS,qBAIhE9W,EAAMwd,IAAI,QACVxd,EAAM68B,OAASY,EAAiBZ,SAKtChB,EAAargC,UAAUwY,OAAS,SAAU3F,GACxC,IAAIzU,EAAQyU,EAAIE,WACZzR,EAASuR,EAAIG,YACbwvB,EAAY,eAAkB9sC,KAAK4qC,YACnCmC,EAAuB,oBAAOD,GAAW,SAAUzlC,GACrD,MAAyC,WAAlCA,EAAK2jC,aAAagC,eAEvBC,EAAuB,oBAAOH,GAAW,SAAUzlC,GACrD,MAAyC,WAAlCA,EAAK2jC,aAAagC,eAE3B,eAAeD,EAAsB,EAAGrkC,GACxC,eAAeukC,EAAsB,EAAGrhC,GACxC,IAAIshC,EAAyB,oBAAOJ,GAAW,SAAUzlC,GACvD,OAAOA,EAAK2jC,aAAa1b,eAE3B,eAAY4d,IAOdvC,EAAargC,UAAU6iC,qBAAuB,WAC5C,IAAIv0B,EAAQ5Y,KAEZ,kBAAKA,KAAK6qC,gBAAgB,SAAUkB,GAClC,IAAI1rC,EAAc0rC,EAAUC,QACxB5gB,EAAwB2gB,EAAU3gB,sBAClCgiB,EAAmB/sC,EAAYgtC,qBACnCtB,EAAUtgB,MAAMwgB,UAAS,SAAUC,GACjC,GAAIA,EAAMlnB,SAAWknB,EAAMoB,oBACzB,OAAO,EAGT,IAAIZ,GAAwBthB,EACxBtc,EAAQo9B,EAAM5mB,kBAEbonB,GAAwB59B,IAC3B49B,EAAuBpC,EAAsBx7B,GAAO49B,sBAGlDA,GACF9zB,EAAM20B,iBAAiBrB,EAAO7rC,GAG5B+sC,GACFx0B,EAAM40B,eAAetB,EAAO7rC,UAMpCsqC,EAAargC,UAAUijC,iBAAmB,SAAUnzB,EAAI/Z,GAEtD,IAAIw/B,EAASzlB,EAAGkL,iBAEZ6mB,EAAS,eAAU/xB,GACnB7U,EAAY4mC,EAAO5mC,UAEvB,GAAIs6B,GAAuB,MAAbt6B,EAAmB,CAC/B,IAAIP,EAAO3E,EAAYqP,QAAQy8B,EAAOpC,UAClCtkB,EAAYzgB,EAAK0gB,aAAangB,GAC9Bq5B,EAAe,GACf6O,EAAczoC,EAAK4kB,cAAcrkB,EAAW,SAC5CmoC,EAAa1oC,EAAK2oC,UAAU,YAEhC/O,EAAa5T,OAASyiB,EAAYC,GAClC,IAAI5nB,EAAiBL,EAAUG,SAAS,aACxC,eAAkBxL,EAAI,eAAyBqL,GAAYmZ,GAC3D,eAAsBxkB,EAAI0L,KAI9B6kB,EAAargC,UAAUkjC,eAAiB,SAAUpzB,EAAI/Z,GACpD,IAAIw/B,EAASzlB,EAAGkL,iBACZqnB,EAAYvyB,EAAGoL,mBAEnB,GAAIqa,IACAzlB,EAAGkzB,sBAAwBzN,EAAO7a,SAAW6a,EAAO+N,YAAcxzB,EAAGyzB,wBAA0B,eAAiBzzB,IAAM,CACxH,IAAI0zB,EAAcxD,EAAsBzK,GACpCkO,EAAYD,EAAYC,UACxB5B,EAAS,eAAU/xB,GACnB7U,EAAY4mC,EAAO5mC,UACnByoC,EAAW,CACb33B,EAAGwpB,EAAOxpB,EACVC,EAAGupB,EAAOvpB,EACV8Q,SAAUyY,EAAOzY,UAEfpiB,EAAO3E,EAAYqP,QAAQy8B,EAAOpC,UAEtC,GAAKgE,EAaE,CACLlO,EAAO9V,KAAKgkB,GAEZ,IAAIE,EAAa7zB,EAAG6zB,WAEhBA,IACE,qBAAQA,EAAY,WAAa,GACnCpO,EAAO9V,KAAK+jB,EAAYI,iBAGtB,qBAAQD,EAAY,aAAe,GACrCpO,EAAO9V,KAAK+jB,EAAYK,oBAI5B,eAAYtO,EAAQmO,EAAU3tC,EAAakF,QAzB3C,GAFAs6B,EAAO9V,KAAKikB,IAEP,eAAWnO,GAAQuO,eAAgB,CACtC,IAAIC,EAAa,uBAAUxO,EAAOt3B,MAAM+hB,QAAS,GAEjDuV,EAAOt3B,MAAM+hB,QAAU,EACvB,eAAUuV,EAAQ,CAChBt3B,MAAO,CACL+hB,QAAS+jB,IAEVhuC,EAAakF,GAsBpB,GAFAuoC,EAAYC,UAAYC,EAEpBnO,EAAO3a,OAAO3Z,OAAQ,CACxB,IAAI+iC,EAAeR,EAAYI,gBAAkB,GACjD1D,EAAe8D,EAAcN,EAAUtD,GACvCF,EAAe8D,EAAczO,EAAO3a,OAAO3Z,OAAQm/B,GAGrD,GAAI7K,EAAO3a,OAAO2I,SAAU,CAC1B,IAAI0gB,EAAiBT,EAAYK,kBAAoB,GACrD3D,EAAe+D,EAAgBP,EAAUtD,GACzCF,EAAe+D,EAAgB1O,EAAO3a,OAAO2I,SAAU6c,GAGzD,eAAkB7K,EAAQt6B,EAAWP,EAAM3E,EAAaA,GAG1D,GAAIssC,IAAcA,EAAU3nB,SAAW2nB,EAAUiB,UAAW,CACtDE,EAAcvD,EAAwBoC,GACtCoB,EAAYD,EAAYC,UAD5B,IAEIS,EAAY,CACdp4B,OAAQu2B,EAAUtnB,MAAMjP,QAGrB23B,GASHpB,EAAU5iB,KAAK,CACb1E,MAAO0oB,IAET,eAAYpB,EAAW,CACrBtnB,MAAOmpB,GACNnuC,KAbHssC,EAAUzkB,SAASsmB,GACnB7B,EAAUpkC,MAAMkmC,cAAgB,EAChC,eAAU9B,EAAW,CACnBpkC,MAAO,CACLkmC,cAAe,IAEhBpuC,IAULytC,EAAYC,UAAYS,IAIrB7D,EAnYT,GAsYe,IChcX+D,EAAkB,iBACf,SAAS5xB,EAAmBoT,GACjCA,EAAUye,wBAAwB,uBAAuB,SAAUhtC,EAASwb,EAAKqQ,GAE/E,IAAIohB,EAAeF,EAAgBvxB,GAAKyxB,aAEnCA,IACHA,EAAeF,EAAgBvxB,GAAKyxB,aAAe,IAAI,GAGzDA,EAAa9D,iBAEf5a,EAAUye,wBAAwB,uBAAuB,SAAUhtC,EAASwb,EAAKqQ,GAC/E,IAAIohB,EAAeF,EAAgBvxB,GAAKyxB,aACxCphB,EAAOqhB,cAAcz/B,SAAQ,SAAU02B,GACrC8I,EAAa9C,kBAAkB3uB,EAAI2xB,qBAAqBhJ,OAE1D8I,EAAavC,mBAAmBlvB,GAChCyxB,EAAa9rB,OAAO3F,GACpByxB,EAAazB,4B,kCChEjB,W,yDCEA,MAAMxiC,EAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzE5E,EAAa,CACjBM,IAAK,EACLL,MAAO,mCAEHC,EAAa,CACjBI,IAAK,EACLL,MAAO,sCAEHE,EAAa,CACjBG,IAAK,EACLL,MAAO,WAEHG,EAAa,CAAEH,MAAO,kCACtBI,EAAa,CAAEJ,MAAO,uCACtB8E,EAA2BJ,EAAa,IAAmBR,gCAAoB,IAAK,KAAM,MAAO,IACjGa,EAAa,CAAC,WACdy1B,EAAa,CAAC,WAEd,SAAUpV,EAAOtjB,EAAUC,EAAY83B,EAAYC,EAAYC,EAAWC,GAC9E,MAAM8O,EAAuB7mC,8BAAkB,aACzC8mC,EAA0B9mC,8BAAkB,gBAC5C+mC,EAA0B/mC,8BAAkB,gBAC5CqL,EAAuBrL,8BAAkB,aACzCsL,EAAuBtL,8BAAkB,aACzCgnC,EAAoBhnC,8BAAkB,UACtC0L,EAAuB1L,8BAAkB,aACzCinC,EAAqBjnC,8BAAkB,WACvCuL,EAAuBvL,8BAAkB,aACzCknC,EAAmBlnC,8BAAkB,SACrCmnC,EAAsCnnC,8BAAkB,4BACxDonC,EAAmBpnC,8BAAkB,SACrCghC,EAAyBhhC,8BAAkB,eAC3CqnC,EAAoBrnC,8BAAkB,UACtCwL,EAAqBxL,8BAAkB,WACvCyL,EAA0BzL,8BAAkB,gBAC5CsnC,EAAwBtnC,8BAAkB,cAC1C4L,EAAqBC,8BAAkB,WAE7C,OAAQ3L,yBAAcC,gCAAoBW,cAAW,KAAM,CACvD+2B,EAAO0P,SA8JL5lC,gCAAoB,IAAI,IA7JvBzB,yBAAce,yBAAawK,EAAyB,CACnDrN,IAAK,EACLL,MAAO,qBACN,CACDuC,QAASC,qBAAS,IAAM,CACtBH,yBAAamL,EAAsB,CAAExN,MAAO,4BAA8B,CACxEuC,QAASC,qBAAS,IAAM,CACtBH,yBAAaymC,EAAsB,CACjCjgC,MAAO,OACPyxB,YAAa,SAEfj4B,yBAAa6mC,EAAoB,CAC/BO,QAAQ,EACRzpC,MAAO,oDACN,CACDuC,QAASC,qBAAS,IAAM,CACtBH,yBAAa2mC,EAAyB,KAAM,CAC1CzmC,QAASC,qBAAS,IAAM,CACtBH,yBAAa0mC,EAAyB,CACpCt8B,UAAWqtB,EAAOxzB,SAClB,qBAAsBvE,EAAO,KAAOA,EAAO,GAAMuB,GAAkBw2B,EAAOxzB,SAAYhD,GACtFoJ,QAASotB,EAAOlzB,OAChB,mBAAoB7E,EAAO,KAAOA,EAAO,GAAMuB,GAAkBw2B,EAAOlzB,OAAUtD,IACjF,KAAM,EAAG,CAAC,YAAa,cAE5BR,EAAG,IAELT,yBAAa2mC,EAAyB,KAAM,CAC1CzmC,QAASC,qBAAS,IAAM,CACtBH,yBAAakL,EAAsB,CACjCvI,WAAY80B,EAAO4P,OACnB,sBAAuB3nC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBw2B,EAAO4P,OAAUpmC,GACrFkL,UAAW,GACXI,YAAa,UACZ,CACDrM,QAASC,qBAAS,IAAM,EACrBL,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAY82B,EAAO6P,QAAUvoC,IAC3Ee,yBAAce,yBAAaoK,EAAsB,CACvDjN,IAAKe,EAAK+C,MACV0E,MAAOzH,EAAKyH,MACZ1E,MAAO/C,EAAK+C,OACX,KAAM,EAAG,CAAC,QAAS,YACpB,QAENrB,EAAG,GACF,EAAG,CAAC,iBAETA,EAAG,IAELT,yBAAa2mC,EAAyB,KAAM,CAC1CzmC,QAASC,qBAAS,IAAM,CACtBH,yBAAa4mC,EAAmB,CAC9BW,eAAgB9P,EAAO+P,UACvBC,WAAYhQ,EAAOiQ,QACnB,sBAAuBhoC,EAAO,KAAOA,EAAO,GAAMuB,GAAkBw2B,EAAOiQ,QAAWzmC,GACtF0mC,gBAAiB,SACjBC,QAAS,KACT3nC,MAAO,CAAC,eAAe,SACtB,KAAM,EAAG,CAAC,iBAAkB,iBAEjCQ,EAAG,IAELT,yBAAa2mC,EAAyB,KAAM,CAC1CzmC,QAASC,qBAAS,IAAM,CACtBH,yBAAasL,EAAsB,CACjC9Q,KAAM,UACNwG,QAASy2B,EAAOoQ,eACf,CACD3nC,QAASC,qBAAS,IAAM,CACtBG,6BAAiBC,6BAAiBk3B,EAAOqQ,kBAAoB,OAAS,QAAS,KAEjFrnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,MAGPA,EAAG,MAGPA,EAAG,IAELT,yBAAaoL,EAAoB,CAC/B28B,QAAS,gBACTpqC,MAAO,6BACN,CACDuC,QAASC,qBAAS,IAAM,CACpBs3B,EAAOqQ,kBAILvmC,gCAAoB,IAAI,IAHvBzB,yBAAcC,gCAAoB,MAAOrC,EAAY,CACpDsC,yBAAa8mC,EAAkB,CAAEtN,UAAW/B,EAAO+B,WAAa,KAAM,EAAG,CAAC,iBAG/E/B,EAAOqQ,mBACHhoC,yBAAce,yBAAakmC,EAAqC,CAC/D/oC,IAAK,EACLgqC,MAAOvQ,EAAOuQ,OACb,KAAM,EAAG,CAAC,WACbx7B,6BAAiB1M,yBAAcC,gCAAoB,MAAOnC,EAAY,CAClE65B,EAAOwQ,aAAaxqC,OASlB8D,gCAAoB,IAAI,IARvBzB,yBAAcC,gCAAoB,MAAOlC,EAAY,CACpDmC,yBAAagnC,EAAkB,KAAM,CACnC9mC,QAASC,qBAAS,IAAM,CACtBG,6BAAiB,YAEnBG,EAAG,OAIXoB,gCAAoB,MAAO/D,EAAY,EACpCgC,wBAAW,GAAOC,gCAAoBW,cAAW,KAAMC,wBAAY82B,EAAOwQ,aAAc,CAAClpC,EAAM6B,KACtFd,yBAAcC,gCAAoB,MAAO,CAC/CpC,MAAO,gCACPK,IAAK4C,GACJ,CACDiB,gCAAoB,MAAO9D,EAAY,CACrCiC,yBAAainC,EAAmB,KAAM,CACpCiB,KAAM/nC,qBAAS,IAAM,CACnBsC,IAEFjC,MAAOL,qBAAS,IAAM,CACpB0B,gCAAoB,OAAQ,CAC1BlE,MAAO,aACPqD,QAAUC,GAAiBw2B,EAAO0Q,eAAeppC,EAAM,IACtDwB,6BAAiBxB,EAAKqpC,QAAS,EAAG1lC,KAEvC2lC,IAAKloC,qBAAS,IAAM,CAClBH,yBAAa4gC,EAAwB,CACnCjjC,MAAO,iBACPrD,KAAM,SACNqI,WAAY5D,EAAKupC,UACjB,sBAAwBrnC,GAAkBlC,EAAKupC,UAAarnC,EAC5D6gB,KAAM,UACNpR,KAAM,QACNpE,SAAWrL,GAAiBw2B,EAAO8Q,UAAUtnC,EAAOL,IACnD,KAAM,EAAG,CAAC,aAAc,sBAAuB,eAEpDH,EAAG,GACF,MACHoB,gCAAoB,MAAO,CACzBb,QAAUC,GAAiBw2B,EAAO0Q,eAAeppC,EAAM,IACtD,CACD8C,gCAAoB,IAAK,KAAM,QAAUtB,6BAAiBxB,EAAKypC,UAAY,IAAK,GAChF3mC,gCAAoB,IAAK,KAAM,QAAUtB,6BAAiBxB,EAAK0pC,QAAU,EAAI1pC,EAAK0pC,OAAS,IAAM,MAAO,IACvG,EAAGtQ,SAGR,WAEH,CACH,CAAC3sB,EAAoBisB,EAAOiR,qBAGpCjoC,EAAG,MAGPA,EAAG,KAGRg3B,EAAO0P,UACHrnC,yBAAce,yBAAaqmC,EAAuB,CACjDlpC,IAAK,EACL2qC,OAAQlR,EAAOkR,OACftB,OAAQ5P,EAAO4P,OACfuB,eAAgBnR,EAAOoR,cACtB,KAAM,EAAG,CAAC,SAAU,SAAU,oBACjCtnC,gCAAoB,IAAI,IAC3B,I,8MCrKU,SAASunC,EAAezvC,GACrC,IAAIue,EAAeve,EAAQwe,eAAe,CACxCC,SAAU,WAGPF,GAAiBA,EAAana,QAInCpE,EAAQuc,iBAAiB,SAAS,SAAUmzB,GAC1C,IAAIC,EAAiBD,EAAYE,oBAC7BjB,EAAQe,EAAYG,WACpBxsC,EAAOsrC,EAAMtrC,KACbysC,EAAgBH,EAAezK,SAASyK,EAAehxB,SAC3Dtb,EAAKqb,YAAW,SAAUnX,GACxB,IAAIqf,EAAQvjB,EAAK0gB,aAAaxc,GAC1BwoC,EAAWnpB,EAAMa,WAAW,YAEhC,GAAgB,MAAZsoB,EAAkB,CAChB,sBAASA,KACXA,EAAWD,EAAcC,IAI3B,IAAK,IAAI5rC,EAAI,EAAGA,EAAIoa,EAAana,OAAQD,IACvC,IAAKoa,EAAapa,GAAGya,WAAWmxB,GAC9B,OAAO,EAKb,OAAO,QC/BE,SAASC,EAAehwC,GACrC,IAAIiwC,EAAe,GACnBjwC,EAAQuc,iBAAiB,SAAS,SAAU7d,GAC1C,IAAIixC,EAAiBjxC,EAAYkxC,oBAC7BvsC,EAAO3E,EAAYqP,UACnBmiC,EAAqB,GACzBP,EAAe7yB,MAAK,SAAUvV,GAC5B,IAAItG,EAAO0uC,EAAehxB,QAAQpX,GAElC2oC,EAAmB,MAAQjvC,GAAQsG,EACnC,IAAIuc,EAAY6rB,EAAe5rB,aAAaxc,GACxCX,EAAQkd,EAAUG,SAAS,aAAakG,eAEvCvjB,EAAM6hB,OAET7hB,EAAM6hB,KAAO/pB,EAAYyxC,oBAAoBlvC,EAAMgvC,IAGrDN,EAAeS,cAAc7oC,EAAK,QAASX,GAG3C,IAFA,IAAIypC,EAAmB,CAAC,SAAU,aAAc,oBAEvClsC,EAAI,EAAGA,EAAIksC,EAAiBjsC,OAAQD,IAAK,CAChD,IAAImsC,EAAexsB,EAAU2D,WAAW4oB,EAAiBlsC,IAAI,GAEzC,MAAhBmsC,GACFX,EAAeS,cAAc7oC,EAAK8oC,EAAiBlsC,GAAImsC,OAKzDX,EAAe5lB,SACjB1mB,EAAKyZ,MAAK,SAAUvV,GAClB,IAAIqf,EAAQvjB,EAAK0gB,aAAaxc,GAC1BgpC,EAAc3pB,EAAMa,WAAW,YAEnC,GAAmB,MAAf8oB,EAAqB,CACnB,sBAASA,KACXA,EAAcL,EAAmB,MAAQK,IAG3C,IAAIC,EAAgBb,EAAe1nB,cAAcsoB,EAAa,SAC1D3pC,EAAQvD,EAAKotC,uBAAuBlpC,EAAK,SAC7C,oBAAOX,EAAO4pC,GAGd,IAFA,IAAIE,EAAa,CAAC,SAAU,aAAc,oBAEjCvsC,EAAI,EAAGA,EAAIusC,EAAWtsC,OAAQD,IACrCd,EAAK+sC,cAAc7oC,EAAKmpC,EAAWvsC,GAAIwrC,EAAe1nB,cAAcsoB,EAAaG,EAAWvsC,YC7CxG,SAASgxB,EAAU9gB,GAKjB,OAJMA,aAAa2sB,QACjB3sB,EAAI,CAACA,EAAGA,IAGHA,EAGM,SAASs8B,EAAgB3wC,GACtCA,EAAQuc,iBAAiB,SAAS,SAAU7d,GAC1C,IAAIiwC,EAAQjwC,EAAYmxC,WACpBe,EAAWlyC,EAAYmyC,cACvBC,EAAa3b,EAAUz2B,EAAYC,IAAI,eACvCoyC,EAAa5b,EAAUz2B,EAAYC,IAAI,mBAG3CiyC,EAASI,UAAU,aAAcF,GAAcA,EAAW,IAC1DF,EAASI,UAAU,WAAYF,GAAcA,EAAW,IACxDF,EAASI,UAAU,iBAAkBD,GAAcA,EAAW,IAC9DH,EAASI,UAAU,eAAgBD,GAAcA,EAAW,IAC5DH,EAASI,UAAU,QAAStyC,EAAYulB,SAAS,aAAaoY,gBAC9DuU,EAAS9zB,MAAK,SAAUvV,GACtB,IAAIuc,EAAY8sB,EAAS7sB,aAAaxc,GAClC0pC,EAAOtC,EAAMuC,eAAe3pC,GAC5BupC,EAAa3b,EAAUrR,EAAU2D,WAAW,UAAU,IACtDspB,EAAa5b,EAAUrR,EAAU2D,WAAW,cAAc,IAE1D7gB,EAAQkd,EAAUG,SAAS,aAAaoY,eACxC8U,EAAcP,EAASH,uBAAuBlpC,EAAK,SAGvD,OAFA,oBAAO4pC,EAAavqC,GAEZuqC,EAAY9nB,QAClB,IAAK,SAED,IAAI+nB,EAAYH,EAAKI,MAAMrF,UAAU,SACrCmF,EAAY9nB,OAAS+nB,GAAaA,EAAU3oB,KAC5C,MAGJ,IAAK,SAEG2oB,EAAYH,EAAKK,MAAMtF,UAAU,SACrCmF,EAAY9nB,OAAS+nB,GAAaA,EAAU3oB,KAC5C,MAINqoB,EAAW,IAAMG,EAAKD,UAAU,aAAcF,EAAW,IACzDA,EAAW,IAAMG,EAAKD,UAAU,WAAYF,EAAW,IACvDC,EAAW,IAAME,EAAKD,UAAU,iBAAkBD,EAAW,IAC7DA,EAAW,IAAME,EAAKD,UAAU,eAAgBD,EAAW,U,gBClD7DQ,EAAgB,SAOhBC,EAAyB,SAAU9yC,GACrC,OAAOA,EAAYC,IAAI,kBAAoB,MAUzC8yC,EAAkB,SAAU/yC,EAAagzC,GAC3C,IAAIC,EAAsBH,EAAuB9yC,GAC7C0F,EAAS,GACTwtC,EAAgB,GAEpB,GAAI,cAAgBD,GAClBvtC,EAASutC,OACJ,GAAI,aAAeA,GAExB,YADAjzC,EAAYmzC,gBAAkBF,GAK5BD,EAAettC,IACjBA,EAASstC,GAIX,IAAI57B,EAAM1R,EAAS,EAAIA,EAAS,EAAIA,EAAS,EAC7CwtC,EAAgB,GAEhB,IAAK,IAAIztC,EAAI,EAAGA,EAAI2R,EAAK3R,IACvBytC,EAAc3iC,MAAM9K,EAAI,EAAIA,EAAI,EAAIA,GAAK,IAAMA,EAAI,GAAK,EAAI,IAG9DzF,EAAYmzC,gBAAkBD,GAW5BE,EAAgB,SAAUC,EAAIC,EAAItzC,GACpC,IAAIyD,EAAS,CAAC4vC,EAAGnsC,GAAImsC,EAAGnuC,WAAW+hC,KAAK,KACpC3tB,EAAS,CAACg6B,EAAGpsC,GAAIosC,EAAGpuC,WAAW+hC,KAAK,KACxC,MAAO,CAACjnC,EAAYuzC,IAAK9vC,EAAQ6V,GAAQ2tB,KAAK4L,IAS5CW,EAAiB,SAAUvtC,GAC7B,IAAImkC,EAAOnkC,EAAIsG,MAAMsmC,GACrB,MAAO,CAACzI,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAInD,KAAK4L,IAStCY,EAAiB,SAAUlB,EAAMvyC,GACnC,IAAIiG,EAAMmtC,EAAcb,EAAKI,MAAOJ,EAAKK,MAAO5yC,GAChD,OAAOA,EAAY0zC,UAAUztC,IAU3B0tC,EAA6B,SAAUpB,EAAMvyC,GAC/C,IAAIoX,EAAMw8B,EAAwBR,EAAcb,EAAKI,MAAOJ,EAAKK,MAAO5yC,GAAcA,GAClF6zC,EAAOD,EAAwBR,EAAcb,EAAKK,MAAOL,EAAKI,MAAO3yC,GAAcA,GACvF,OAAOoX,EAAMy8B,GAQXD,EAA0B,SAAU3tC,EAAKjG,GAC3C,IAAI8zC,EAAU9zC,EAAY0zC,UAC1B,OAAOI,EAAQ7tC,GAAO6tC,EAAQ7tC,GAAKP,OAAS,GASvC,SAASquC,EAAkB/zC,GAC3B8yC,EAAuB9yC,KAI5BA,EAAYmzC,gBAAkB,GAC9BnzC,EAAY0zC,UAAY,GAExBX,EAAgB/yC,IAUX,SAASg0C,EAA0BX,EAAIC,EAAItzC,EAAa6B,GAC7D,GAAKixC,EAAuB9yC,GAA5B,CAIA,IAAIiG,EAAMmtC,EAAcC,EAAIC,EAAItzC,GAC5B8zC,EAAU9zC,EAAY0zC,UACtBO,EAAgBH,EAAQN,EAAevtC,IAEvC6tC,EAAQ7tC,KAASguC,EACnBH,EAAQ7tC,GAAKiuC,WAAY,EAChBD,GAAiBH,EAAQ7tC,KAClCguC,EAAcC,WAAY,EAC1BJ,EAAQ7tC,GAAKiuC,WAAY,GAG3BJ,EAAQ7tC,GAAO6tC,EAAQ7tC,IAAQ,GAC/B6tC,EAAQ7tC,GAAKsK,KAAK1O,IASb,SAASsyC,EAAoB5B,EAAMvyC,EAAa6B,EAAOuyC,GAC5D,IAAIC,EAAsBvB,EAAuB9yC,GAC7Cs0C,EAAe,aAAeD,GAElC,IAAKA,EACH,OAAO,KAGT,IAAIE,EAAYd,EAAelB,EAAMvyC,GAErC,IAAKu0C,EACH,OAAO,KAKT,IAFA,IAAIC,GAAa,EAER/uC,EAAI,EAAGA,EAAI8uC,EAAU7uC,OAAQD,IACpC,GAAI8uC,EAAU9uC,KAAO5D,EAAO,CAC1B2yC,EAAY/uC,EACZ,MAKJ,IAAIgvC,EAAWd,EAA2BpB,EAAMvyC,GAChD+yC,EAAgB/yC,EAAay0C,GAC7BlC,EAAK9jB,UAAY8jB,EAAK9jB,WAAa,GAEnC,IAAIimB,EAAStB,EAAcb,EAAKI,MAAOJ,EAAKK,MAAO5yC,GAC/CkzC,EAAgBlzC,EAAYmzC,gBAE5BwB,EAAmBL,GAAmBG,EAAW,EAAf,EAAuB,EAE7D,GAAKF,EAAUL,UAqBb,OAAOhB,EAAcyB,EAAmBH,GAnBxC,IAAII,EAAcpB,EAAekB,GAC7Bt9B,EAAMw8B,EAAwBgB,EAAa50C,GAC3C60C,EAAW3B,EAAcsB,EAAYp9B,EAAMu9B,GAE/C,OAAIP,EAEEE,EACED,GAAkD,IAA3BA,EAAoB,IACrCj9B,EAAMu9B,GAAoB,EAAIE,GAAYA,IAEzCz9B,EAAM,EAAI,EAAI,GAAKu9B,GAAoB,EAAIE,GAAYA,GAG1Dz9B,EAAMu9B,GAAoB,EAAIE,GAAYA,EAG7C3B,EAAcsB,EAAYp9B,EAAMu9B,GC7MtC,SAASG,EAAa90C,GAC3B,IAAIud,EAAWvd,EAAYwd,iBAE3B,IAAID,GAA8B,SAAlBA,EAAS9a,KAAzB,CAIA,IAAIwtC,EAAQjwC,EAAYmxC,WACxBlB,EAAM8E,UAAS,SAAUC,GACvB,IAAI9sB,EAAQ8sB,EAAKzvB,WACjByvB,EAAK91B,UAAU,EAAEgJ,EAAMjoB,IAAI,MAAOioB,EAAMjoB,IAAI,UAE9Cg1C,EAAiBhF,EAAOjwC,IAEnB,SAASi1C,EAAiBhF,EAAOjwC,GACtCiwC,EAAMiF,UAAS,SAAU3C,EAAM1wC,GAC7B,IAAIszC,EAAY,eAAiB5C,EAAKhtB,WAAWtlB,IAAI,CAAC,YAAa,eAAgBk0C,EAAoB5B,EAAMvyC,EAAa6B,GAAO,GAAO,GACpIuzC,EAAK,WAAW7C,EAAKI,MAAMluB,aAC3BrO,EAAK,WAAWm8B,EAAKK,MAAMnuB,aAC3B1O,EAAS,CAACq/B,EAAIh/B,IAEb++B,GACHp/B,EAAOxF,KAAK,EAAE6kC,EAAG,GAAKh/B,EAAG,IAAM,GAAKg/B,EAAG,GAAKh/B,EAAG,IAAM++B,GAAYC,EAAG,GAAKh/B,EAAG,IAAM,GAAKA,EAAG,GAAKg/B,EAAG,IAAMD,IAG1G5C,EAAKrzB,UAAUnJ,MC1BJ,SAASs/B,EAAkB/zC,EAASwb,GACjDxb,EAAQuc,iBAAiB,SAAS,SAAU7d,GAC1C,IAAIyiB,EAASziB,EAAYC,IAAI,UACzBsd,EAAWvd,EAAYwd,iBAE3B,GAAID,GAA8B,SAAlBA,EAAS9a,KAAiB,CACxC,IAAI6yC,EAASt1C,EAAYqP,UACrBkmC,EAAe,GACnB,kBAAKh4B,EAAS9b,YAAY,SAAUuB,GAClCuyC,EAAeA,EAAapN,OAAOmN,EAAOxO,iBAAiB9jC,OAG7D,IAAK,IAAIkC,EAAY,EAAGA,EAAYowC,EAAOjqB,QAASnmB,IAAa,CAI/D,IAHA,IAAI6E,EAAQ,GACRyrC,GAAW,EAEN/vC,EAAI,EAAGA,EAAI8vC,EAAa7vC,OAAQD,IAAK,CAC5C,IAAI+B,EAAM8tC,EAAOr1C,IAAIs1C,EAAa9vC,GAAIP,GAEjCmZ,MAAM7W,KACTguC,GAAW,GAGbzrC,EAAMwG,KAAK/I,GAGTguC,EACFF,EAAOl2B,cAAcla,EAAWqY,EAASG,YAAY3T,IAGrDurC,EAAOl2B,cAAcla,EAAW,CAACma,IAAKA,MAI1C41B,EAAiBK,EAAOrF,MAAOjwC,QACrByiB,GAAqB,SAAXA,GACpBqyB,EAAa90C,MCtCZ,SAASy1C,EAAmBz1C,GACjC,IAAIud,EAAWvd,EAAYwd,iBAE3B,GAAsB,SAAlBD,EAAS9a,KACX,OAAO,EAGT,IAAIizC,EAAiB11C,EAAYmK,OAAOurC,eACpCC,EAAYp4B,EAAS0L,OAErB2sB,EAAWr4B,EAASs4B,UACpBC,GAAaF,EAAW,GAAKF,EAAiB,EAClD,OAAOI,EAAYH,EAEd,SAASI,EAAcf,GAC5B,IAAI3C,EAAa2C,EAAK1H,UAAU,cAMhC,OAJI+E,aAAsB/P,QACxB+P,GAAcA,EAAW,GAAKA,EAAW,IAAM,IAGzCA,ECjBV,IAAI11B,EAAKjK,KAAKiK,GACVq5B,EAAqB,GAqBlB,SAASC,EAAej2C,EAAak2C,EAASC,EAAcC,GACjE,IAAI74B,EAAWvd,EAAYwd,iBAE3B,IAAID,GAA8B,SAAlBA,EAAS9a,KAAzB,CAIA,IAAImW,EAAO2E,EAAS1E,kBAChBw9B,EAAWr2C,EAAYqP,UACvB4gC,EAAQoG,EAASpG,MACjB/4B,EAAK0B,EAAKvQ,MAAQ,EAAIuQ,EAAK5C,EAC3BmB,EAAKyB,EAAKrN,OAAS,EAAIqN,EAAK3C,EAC5BqH,EAAI5K,KAAKiE,IAAIiC,EAAKvQ,MAAOuQ,EAAKrN,QAAU,EACxC8f,EAAQgrB,EAAShrB,QAMrB,GALAgrB,EAASn3B,UAAU,CACjBhI,GAAIA,EACJC,GAAIA,IAGDkU,EAAL,CAIA,GAAI8qB,EAAc,CAChB,IAAIn4B,EAAKT,EAASqZ,YAAYwf,GAC1BE,EAAQt4B,EAAG,GACXu4B,EAAQv4B,EAAG,GAEX5M,EAAI,CAACklC,EAAQp/B,EAAIq/B,EAAQp/B,GAC7B,eAAe/F,EAAGA,GAClB,WAAWA,EAAGA,EAAGkM,GACjB64B,EAAaj3B,UAAU,CAAChI,EAAK9F,EAAE,GAAI+F,EAAK/F,EAAE,KAAK,GAC/C,IAAIolC,EAAsBx2C,EAAYC,IAAI,CAAC,WAAY,gBACvDw2C,GAAgBN,EAAcK,EAAqBt/B,EAAIC,GAGzDu/B,GAAoBR,GAASl2C,EAAaiwC,EAAOoG,EAAU/4B,EAAGpG,EAAIC,EAAIkU,GAEtE4kB,EAAMiF,UAAS,SAAU3C,EAAM1wC,GAC7B,IAGI80C,EAHAxB,EAAY,eAAiB5C,EAAKhtB,WAAWtlB,IAAI,CAAC,YAAa,cAAek0C,EAAoB5B,EAAMvyC,EAAa6B,GAAQ,GAC7HuzC,EAAK,WAAW7C,EAAKI,MAAMluB,aAC3BrO,EAAK,WAAWm8B,EAAKK,MAAMnuB,aAE3BmyB,GAAOxB,EAAG,GAAKh/B,EAAG,IAAM,EACxBygC,GAAOzB,EAAG,GAAKh/B,EAAG,IAAM,GAEvB++B,IACHA,GAAa,EACbwB,EAAM,CAACz/B,EAAKi+B,EAAYyB,GAAO,EAAIzB,GAAYh+B,EAAKg+B,EAAY0B,GAAO,EAAI1B,KAG7E5C,EAAKrzB,UAAU,CAACk2B,EAAIh/B,EAAIugC,SAG5B,IAAID,GAAsB,CACxB3sC,MAAO,SAAU/J,EAAaiwC,EAAOoG,EAAU/4B,EAAGpG,EAAIC,EAAIkU,GACxD,IAAIlM,EAAQ,EACRb,EAAM+3B,EAAS93B,OAAO,SACtBu4B,EAAsB,EAAVpkC,KAAKiK,IAAU2B,GAAO+M,GACtC4kB,EAAM8E,UAAS,SAAUC,GACvB,IAAIjrC,EAAQirC,EAAK+B,SAAS,SACtBC,EAAaF,GAAax4B,EAAMvU,EAAQ,GAAK,EACjDoV,GAAS63B,EACThC,EAAK91B,UAAU,CAAC5B,EAAI5K,KAAKuT,IAAI9G,GAASjI,EAAIoG,EAAI5K,KAAKyT,IAAIhH,GAAShI,IAChEgI,GAAS63B,MAGb3E,WAAY,SAAUryC,EAAaiwC,EAAOoG,EAAU/4B,EAAGpG,EAAIC,EAAIkU,GAC7D,IAAI4rB,EAAY,EAChBjB,EAAmBtwC,OAAS2lB,EAC5B,IAAIyqB,EAAYL,EAAmBz1C,GACnCiwC,EAAM8E,UAAS,SAAUC,GACvB,IAAI3C,EAAa0D,EAAcf,GAG/B32B,MAAMg0B,KAAgBA,EAAa,GACnCA,EAAa,IAAMA,EAAa,GAChCA,GAAcyD,EACd,IAAIoB,EAAmBxkC,KAAKykC,KAAK9E,EAAa,EAAI/0B,GAElDe,MAAM64B,KAAsBA,EAAmBv6B,EAAK,GACpDq5B,EAAmBhB,EAAK9vC,WAAagyC,EACrCD,GAAgC,EAAnBC,KAEf,IAAIE,GAAoB,EAAIz6B,EAAKs6B,GAAa5rB,EAAQ,EAClDlM,EAAQ,EACZ8wB,EAAM8E,UAAS,SAAUC,GACvB,IAAIgC,EAAaI,EAAmBpB,EAAmBhB,EAAK9vC,WAC5Dia,GAAS63B,IAIPhC,EAAKvwB,cAAgBuwB,EAAKvwB,YAAY4yB,QAAUrC,EAAK91B,UAAU,CAAC5B,EAAI5K,KAAKuT,IAAI9G,GAASjI,EAAIoG,EAAI5K,KAAKyT,IAAIhH,GAAShI,IAClHgI,GAAS63B,OAIR,SAASP,GAAgBzB,EAAMwB,EAAqBt/B,EAAIC,GAC7D,IAAI4C,EAAKi7B,EAAKsC,eAEd,GAAKv9B,EAAL,CAIA,IAAIw9B,EAAYvC,EAAKzvB,WACjBkB,EAAc8wB,EAAUt3C,IAAI,CAAC,QAAS,YAAc,EACpDu3C,EAAaz9B,EAAG09B,gBAEpB,GAAIjB,EAAqB,CACvB,IAAI5d,EAAMoc,EAAKvwB,YACXmC,EAAMlU,KAAKmU,MAAM+R,EAAI,GAAKzhB,EAAIyhB,EAAI,GAAK1hB,GAEvC0P,EAAM,IACRA,EAAgB,EAAVlU,KAAKiK,GAASiK,GAGtB,IAAI8wB,EAAS9e,EAAI,GAAK1hB,EAElBwgC,IACF9wB,GAAYlU,KAAKiK,IAGnB,IAAIg7B,EAAeD,EAAS,OAAS,QACrCF,EAAW9vB,cAAc,CACvBX,UAAWH,EACXnG,SAAUk3B,EACVvnB,OAAQ,WAEV,IAAIwnB,EAAgBJ,EAAW5tB,YAAY,YAC3C,YAAcguB,EAAc/M,aAAe+M,EAAc/M,WAAa,IAAK,CACzEpqB,SAAUk3B,SAGZH,EAAW9vB,cAAc,CACvBX,SAAUN,GAAe/T,KAAKiK,GAAK,OC/J1B,SAASk7B,GAAoBv2C,GAC1CA,EAAQuc,iBAAiB,SAAS,SAAU7d,GACR,aAA9BA,EAAYC,IAAI,WAClBg2C,EAAej2C,EAAa,iBCOlC,IAAIk8B,GAAc,iBAIX,SAAS,GAAY4b,EAASC,EAASviC,GAmB5C,IAlBA,IAAIwiC,EAAQF,EACRG,EAAQF,EACRn/B,EAAOpD,EAAKoD,KACZvQ,EAAQuQ,EAAKvQ,MACbkD,EAASqN,EAAKrN,OACdoM,EAAS,CAACiB,EAAK5C,EAAI3N,EAAQ,EAAGuQ,EAAK3C,EAAI1K,EAAS,GAEhD2sC,EAA0B,MAAhB1iC,EAAK0iC,QAAkB,GAAM1iC,EAAK0iC,QAWvCzyC,EAAI,EAAGA,EAAIuyC,EAAMtyC,OAAQD,IAAK,CACrC,IAAI8E,EAAIytC,EAAMvyC,GAET8E,EAAE4L,IACL5L,EAAE4L,EAAI,YAAY9N,GAASqK,KAAKylC,SAAW,IAAOxgC,EAAO,GAAIpM,GAAUmH,KAAKylC,SAAW,IAAOxgC,EAAO,KAGvGpN,EAAE6tC,GAAK,WAAW7tC,EAAE4L,GACpB5L,EAAE0tC,MAAQ,KAMZ,IAEII,EACAC,EAHAC,EAAmC,MAAjB/iC,EAAKgjC,SAAmB,GAAMhjC,EAAKgjC,SACrDA,EAAWD,EAGf,MAAO,CACLE,OAAQ,WACND,EAA6B,GAAlBD,GAEbG,SAAU,SAAU7vC,GAClBmvC,EAAMnvC,GAAKwuC,OAAQ,GAErBsB,WAAY,SAAU9vC,GACpBmvC,EAAMnvC,GAAKwuC,OAAQ,GAMrBuB,WAAY,SAAUC,GACpBR,EAAqBQ,GAMvBC,UAAW,SAAUD,GACnBP,EAAoBO,GAStB1kB,KAAM,SAAU0kB,GACdR,GAAsBA,EAAmBL,EAAOC,GAIhD,IAHA,IAAIc,EAAM,GACNC,EAAOhB,EAAMtyC,OAERD,EAAI,EAAGA,EAAIwyC,EAAMvyC,OAAQD,IAAK,CACrC,IAAI0H,EAAI8qC,EAAMxyC,GAEd,IAAI0H,EAAE8rC,kBAAN,CAIA,IAAI5F,EAAKlmC,EAAEkmC,GACPC,EAAKnmC,EAAEmmC,GACX,SAASyF,EAAKzF,EAAGn9B,EAAGk9B,EAAGl9B,GACvB,IAAIgjB,EAAI,SAAS4f,GAAO5rC,EAAEgsB,EACtBjjB,EAAIo9B,EAAGp9B,GAAKm9B,EAAGn9B,EAAIo9B,EAAGp9B,GAEtBmI,MAAMnI,KACRA,EAAI,GAGN,eAAe6iC,EAAKA,IACnB1F,EAAGgE,OAASnb,GAAYmX,EAAGl9B,EAAGk9B,EAAGl9B,EAAG4iC,EAAK7iC,EAAIijB,EAAIqf,IACjDlF,EAAG+D,OAASnb,GAAYoX,EAAGn9B,EAAGm9B,EAAGn9B,EAAG4iC,IAAO,EAAI7iC,GAAKijB,EAAIqf,IAI3D,IAAS/yC,EAAI,EAAGA,EAAIuzC,EAAMvzC,IAAK,CAC7B,IAAI8E,EAAIytC,EAAMvyC,GAET8E,EAAE8sC,QACL,SAAS0B,EAAKphC,EAAQpN,EAAE4L,GAIxB+lB,GAAY3xB,EAAE4L,EAAG5L,EAAE4L,EAAG4iC,EAAKb,EAAUM,IAMzC,IAAS/yC,EAAI,EAAGA,EAAIuzC,EAAMvzC,IACxB,CAAI4tC,EAAK2E,EAAMvyC,GAEf,IAFA,IAESyzC,EAAIzzC,EAAI,EAAGyzC,EAAIF,EAAME,IAAK,CAC7B5F,EAAK0E,EAAMkB,GACf,SAASH,EAAKzF,EAAGn9B,EAAGk9B,EAAGl9B,GACnBgjB,EAAI,SAAS4f,GAEP,IAAN5f,IAEF,SAAS4f,EAAKrmC,KAAKylC,SAAW,GAAKzlC,KAAKylC,SAAW,IACnDhf,EAAI,GAGN,IAAIggB,GAAW9F,EAAG+F,IAAM9F,EAAG8F,KAAOjgB,EAAIA,GACrCka,EAAGgE,OAASnb,GAAYmX,EAAG+E,GAAI/E,EAAG+E,GAAIW,EAAKI,IAC3C7F,EAAG+D,OAASnb,GAAYoX,EAAG8E,GAAI9E,EAAG8E,GAAIW,GAAMI,IAIjD,IAAI/nC,EAAI,GAER,IAAS3L,EAAI,EAAGA,EAAIuzC,EAAMvzC,IAAK,CACzB8E,EAAIytC,EAAMvyC,GAET8E,EAAE8sC,QACL,SAASjmC,EAAG7G,EAAE4L,EAAG5L,EAAE6tC,IACnBlc,GAAY3xB,EAAE4L,EAAG5L,EAAE4L,EAAG/E,EAAGonC,GACzB,UAAUjuC,EAAE6tC,GAAI7tC,EAAE4L,IAItBqiC,GAAsB,KACtB,IAAIa,EAAWb,EAAW,IAC1BF,GAAqBA,EAAkBN,EAAOC,EAAOoB,GACrDR,GAAMA,EAAGQ,K,iBCzJA,SAASC,GAAiBh4C,GACvCA,EAAQuc,iBAAiB,SAAS,SAAUmzB,GAC1C,IAAIzzB,EAAWyzB,EAAYxzB,iBAE3B,IAAID,GAA8B,SAAlBA,EAAS9a,KAIzB,GAAkC,UAA9BuuC,EAAY/wC,IAAI,UAAuB,CACzC,IAAIs5C,EAAoBvI,EAAYwI,iBAAmB,GACnDC,EAAUzI,EAAYG,WACtBuI,EAAaD,EAAQ90C,KACrButC,EAAWuH,EAAQvH,SACnByH,EAAa3I,EAAYzrB,SAAS,SAClCq0B,EAAaD,EAAW15C,IAAI,cAE5B+wC,EAAYwI,gBACdE,EAAWt7B,MAAK,SAAUvV,GACxB,IAAI3B,EAAKwyC,EAAWG,MAAMhxC,GAC1B6wC,EAAWt6B,cAAcvW,EAAK0wC,EAAkBryC,IAAO,CAACmY,IAAKA,SAErDu6B,GAA6B,SAAfA,EAEA,aAAfA,GACT3D,EAAejF,EAAa,SAF5B8D,EAAa9D,GAKf,IAAI8I,EAAmBJ,EAAW76B,cAAc,SAC5Ck7B,EAAmB7H,EAASrzB,cAAc,SAE1Cm7B,EAAYL,EAAW15C,IAAI,aAC3Bg6C,EAAaN,EAAW15C,IAAI,cAC5Bi6C,EAAiB,aAAeF,GAAaA,EAAY,CAACA,EAAWA,GACrEG,EAAkB,aAAeF,GAAcA,EAAa,CAACA,EAAYA,GAE7EE,EAAkB,CAACA,EAAgB,GAAIA,EAAgB,IACvD,IAAIC,EAAUV,EAAWlT,SAAS,SAAS,SAAUz8B,EAAOlB,GAC1D,IAAI4U,EAAQi8B,EAAWj6B,cAAc5W,GACjCuwC,EAAM,gBAAUrvC,EAAO+vC,EAAkBI,GAM7C,OAJI77B,MAAM+6B,KACRA,GAAOc,EAAe,GAAKA,EAAe,IAAM,GAG3C,CACLhkC,EAAGkjC,EACHA,IAAKA,EACL/B,MAAOqC,EAAWr0B,aAAaxc,GAAK5I,IAAI,SACxCkW,GAAIsH,GAASY,MAAMZ,EAAM,KAAOY,MAAMZ,EAAM,IAAM,KAAOA,MAGzDw6B,EAAQ/F,EAAS1L,SAAS,SAAS,SAAUz8B,EAAOlB,GACtD,IAAI0pC,EAAOkH,EAAQjH,eAAe3pC,GAC9BswB,EAAI,gBAAUpvB,EAAOgwC,EAAkBI,GAEvC97B,MAAM8a,KACRA,GAAKghB,EAAgB,GAAKA,EAAgB,IAAM,GAGlD,IAAIE,EAAY9H,EAAKhtB,WACjB4vB,EAAY,eAAiB5C,EAAKhtB,WAAWtlB,IAAI,CAAC,YAAa,eAAgBk0C,EAAoB5B,EAAMvB,EAAanoC,GAAK,GAAO,GACtI,MAAO,CACLwqC,GAAI+G,EAAQ7H,EAAKI,MAAMztC,WACvBouC,GAAI8G,EAAQ7H,EAAKK,MAAM1tC,WACvBi0B,EAAGA,EACHgc,UAAWA,EACX8D,kBAAmBoB,EAAUp6C,IAAI,yBAIjC2Y,EAAO2E,EAAS1E,kBAChByhC,EAAgB,GAAYF,EAASnC,EAAO,CAC9Cr/B,KAAMA,EACNs/B,QAASyB,EAAW15C,IAAI,WACxBu4C,SAAUmB,EAAW15C,IAAI,cAE3Bq6C,EAAc1B,YAAW,SAAUZ,EAAOC,GACxC,IAAK,IAAIxyC,EAAI,EAAG80C,EAAIvC,EAAMtyC,OAAQD,EAAI80C,EAAG90C,IACnCuyC,EAAMvyC,GAAG4xC,OAEX,UAAUW,EAAMvyC,GAAG0Q,EAAGsjC,EAAQe,eAAe/0C,GAAGgf,gBAItD61B,EAAcxB,WAAU,SAAUd,EAAOC,EAAOwC,GAC9C,IAAK,IAAIh1C,EAAI,EAAG80C,EAAIvC,EAAMtyC,OAAQD,EAAI80C,EAAG90C,IAClCuyC,EAAMvyC,GAAG4xC,OACZoC,EAAQe,eAAe/0C,GAAGyZ,UAAU84B,EAAMvyC,GAAG0Q,GAG/CojC,EAAkBG,EAAWG,MAAMp0C,IAAMuyC,EAAMvyC,GAAG0Q,EAGpD,IAAS1Q,EAAI,EAAG80C,EAAItC,EAAMvyC,OAAQD,EAAI80C,EAAG90C,IAAK,CAC5C,IAAI0H,EAAI8qC,EAAMxyC,GACV8sC,EAAOkH,EAAQjH,eAAe/sC,GAC9B2vC,EAAKjoC,EAAEkmC,GAAGl9B,EACVC,EAAKjJ,EAAEmmC,GAAGn9B,EACVJ,EAASw8B,EAAK9tB,YAClB1O,EAASA,EAASA,EAAOrU,QAAU,GACnCqU,EAAO,GAAKA,EAAO,IAAM,GACzBA,EAAO,GAAKA,EAAO,IAAM,GACzB,UAAUA,EAAO,GAAIq/B,GACrB,UAAUr/B,EAAO,GAAIK,IAEhBjJ,EAAEgoC,YACLp/B,EAAO,GAAK,EAAEq/B,EAAG,GAAKh/B,EAAG,IAAM,GAAKg/B,EAAG,GAAKh/B,EAAG,IAAMjJ,EAAEgoC,WAAYC,EAAG,GAAKh/B,EAAG,IAAM,GAAKA,EAAG,GAAKg/B,EAAG,IAAMjoC,EAAEgoC,YAG9G5C,EAAKrzB,UAAUnJ,OAGnBi7B,EAAY0J,YAAcJ,EAC1BtJ,EAAYwI,gBAAkBD,EAE9Be,EAAcnmB,YAGd6c,EAAY0J,YAAc,Q,wDClH5BC,GAAmBC,EAAA,kBAEnB,GAEJ,SAAUziC,GAGR,SAASiE,EAAK7Z,GACZ,IAAIgW,EAAQJ,EAAOK,KAAK7Y,OAASA,KAiBjC,OAfA4Y,EAAM9V,KAAO,OACb8V,EAAM9W,WAAa,CAAC,IAAK,KAOzB8W,EAAMsiC,mBAAqB,IAAI7Q,GAAA,KAK/BzxB,EAAMuiC,kBAAoB,IAAI9Q,GAAA,KAC9BzxB,EAAMhW,KAAOA,EACNgW,EAqNT,OAzOA,gBAAU6D,EAAMjE,GAuBhBiE,EAAKnS,UAAU8wC,gBAAkB,SAAU/kC,EAAGC,EAAG5N,EAAOkD,GAEtD,OADA5L,KAAKmZ,MAAQ,IAAIE,GAAA,KAAahD,EAAGC,EAAG5N,EAAOkD,GACpC5L,KAAKmZ,OAOdsD,EAAKnS,UAAU4O,gBAAkB,WAC/B,OAAOlZ,KAAKmZ,OAGdsD,EAAKnS,UAAU+wC,YAAc,SAAUhlC,EAAGC,EAAG5N,EAAOkD,GAClD5L,KAAKs7C,aAAajlC,EAAGC,EAAG5N,EAAOkD,GAE/B5L,KAAKu7C,UAAY,IAAIliC,GAAA,KAAahD,EAAGC,EAAG5N,EAAOkD,IAOjD6Q,EAAKnS,UAAUgxC,aAAe,SAAUjlC,EAAGC,EAAG5N,EAAOkD,GACnD,IAAIqN,EAAOjZ,KAAKkZ,kBACZsiC,EAAex7C,KAAKm7C,kBACxBK,EAAa1kC,UAAYmC,EAAKW,mBAAmB,IAAIP,GAAA,KAAahD,EAAGC,EAAG5N,EAAOkD,IAC/E,IAAI6vC,EAAYD,EAAa/gC,OAC7B+gC,EAAa/gC,OAAS,KACtB+gC,EAAaE,qBACbF,EAAa/gC,OAASghC,EAEtBz7C,KAAK27C,oBAOPl/B,EAAKnS,UAAUyN,UAAY,SAAU6jC,EAAaz+B,GAC3Cy+B,IAIL57C,KAAKiY,QAAU,CAAC,gBAAa2jC,EAAY,GAAIz+B,EAAIE,YAAa,gBAAau+B,EAAY,GAAIz+B,EAAIG,cAE/Ftd,KAAK67C,yBAGPp/B,EAAKnS,UAAUwxC,QAAU,SAAUC,GACjCA,EAAOA,GAAQ,EACf,IAAIC,EAAYh8C,KAAKg8C,UAEjBA,IACmB,MAAjBA,EAAU/kC,MACZ8kC,EAAOhpC,KAAKiE,IAAIglC,EAAU/kC,IAAK8kC,IAGZ,MAAjBC,EAAUhlC,MACZ+kC,EAAOhpC,KAAKkE,IAAI+kC,EAAUhlC,IAAK+kC,KAInC/7C,KAAKi8C,MAAQF,EAEb/7C,KAAK67C,wBAOPp/B,EAAKnS,UAAU4xC,iBAAmB,WAEhC,IAAIC,EAAUn8C,KAAKkZ,kBACf3B,EAAK4kC,EAAQ9lC,EAAI8lC,EAAQzzC,MAAQ,EACjC8O,EAAK2kC,EAAQ7lC,EAAI6lC,EAAQvwC,OAAS,EACtC,MAAO,CAAC2L,EAAIC,IAGdiF,EAAKnS,UAAU4N,UAAY,WACzB,OAAOlY,KAAKiY,SAAWjY,KAAKk8C,oBAG9Bz/B,EAAKnS,UAAU4rC,QAAU,WACvB,OAAOl2C,KAAKi8C,OAAS,GAGvBx/B,EAAKnS,UAAU8xC,iBAAmB,WAChC,OAAOp8C,KAAKk7C,mBAAmB1gC,qBAOjCiC,EAAKnS,UAAUuxC,qBAAuB,WAEpC,IAAIQ,EAAqBr8C,KAAKm7C,kBAAkB3gC,oBAE5C8hC,EAAgBt8C,KAAKk7C,mBACrBqB,EAAgBv8C,KAAKk8C,mBACrBlkC,EAAShY,KAAKkY,YACd6jC,EAAO/7C,KAAKk2C,UAChBl+B,EAASijC,EAAA,kBAAsB,GAAIjjC,EAAQqkC,GAC3CE,EAAgBtB,EAAA,kBAAsB,GAAIsB,EAAeF,GACzDC,EAAc7yB,QAAUzR,EAAO,GAC/BskC,EAAc5yB,QAAU1R,EAAO,GAC/BskC,EAAcjmC,EAAIkmC,EAAc,GAAKvkC,EAAO,GAC5CskC,EAAchmC,EAAIimC,EAAc,GAAKvkC,EAAO,GAC5CskC,EAAchzB,OAASgzB,EAAc/yB,OAASwyB,EAE9C/7C,KAAK27C,oBAQPl/B,EAAKnS,UAAUqxC,iBAAmB,WAChC,IAAIa,EAAoBx8C,KAAKk7C,mBACzBuB,EAAmBz8C,KAAKm7C,kBAC5BsB,EAAiBhiC,OAAS+hC,EAC1BA,EAAkBE,kBAClBD,EAAiBC,kBACjBpiC,GAAA,QAAYta,KAAK8W,YAAc9W,KAAK8W,UAAY,IAAK2lC,EAAiB3lC,WAAawD,GAAA,aACnFta,KAAK28C,cAAgBF,EAAiBjiC,oBACtCxa,KAAK48C,aAAe58C,KAAK48C,cAAgB,GACzCtiC,GAAA,UAActa,KAAK48C,aAAc58C,KAAK8W,WACtC9W,KAAK07C,sBAGPj/B,EAAKnS,UAAUuyC,iBAAmB,WAChC,IAAIJ,EAAmBz8C,KAAKm7C,kBACxBqB,EAAoBx8C,KAAKk7C,mBAIzB9Q,EAAqB,IAAIC,GAAA,KAG7B,OAFAD,EAAmBtzB,UAAY0lC,EAAkB1lC,UACjDszB,EAAmBsR,qBACZ,CACLoB,KAAM,CACJzmC,EAAG+zB,EAAmB/zB,EACtBC,EAAG8zB,EAAmB9zB,EACtBgT,OAAQ8gB,EAAmB9gB,OAC3BC,OAAQ6gB,EAAmB7gB,QAE7BwzB,IAAK,CACH1mC,EAAGomC,EAAiBpmC,EACpBC,EAAGmmC,EAAiBnmC,EACpBgT,OAAQmzB,EAAiBnzB,OACzBC,OAAQkzB,EAAiBlzB,UAK/B9M,EAAKnS,UAAU4S,YAAc,WAC3B,OAAOld,KAAKu7C,WAOd9+B,EAAKnS,UAAU0yC,qBAAuB,WACpC,IAAI/jC,EAAOjZ,KAAKkZ,kBAAkBsO,QAElC,OADAvO,EAAKwO,eAAeznB,KAAK8W,WAClBmC,GAOTwD,EAAKnS,UAAUyT,YAAc,SAAU/Y,EAAMi4C,EAAQ1jB,GACnD,IAAIziB,EAAYmmC,EAASj9C,KAAK28C,cAAgB38C,KAAK8W,UAEnD,OADAyiB,EAAMA,GAAO,GACNziB,EAAYkkC,GAAiBzhB,EAAKv0B,EAAM8R,GAAamkC,EAAA,QAAY1hB,EAAKv0B,IAO/EyX,EAAKnS,UAAU2sB,YAAc,SAAUnZ,GACrC,IAAI8+B,EAAe58C,KAAK48C,aACxB,OAAOA,EAAe5B,GAAiB,GAAIl9B,EAAO8+B,GAAgB,CAAC9+B,EAAM,GAAIA,EAAM,KAGrFrB,EAAKnS,UAAU4yC,eAAiB,SAAUv7C,EAASw7C,EAAQ/yC,GACzD,IAAIwT,EAAWw/B,GAAYD,GAC3B,OAAOv/B,IAAa5d,KAAO4d,EAASG,YAAY3T,GAAS,MAG3DqS,EAAKnS,UAAU+yC,iBAAmB,SAAU17C,EAASw7C,EAAQG,GAC3D,IAAI1/B,EAAWw/B,GAAYD,GAC3B,OAAOv/B,IAAa5d,KAAO4d,EAASqZ,YAAYqmB,GAAS,MAO3D7gC,EAAKnS,UAAUmiB,aAAe,SAAU3O,GACtC,OAAO9d,KAAKg9C,uBAAuB7mC,QAAQ2H,EAAM,GAAIA,EAAM,KAG7DrB,EAAK3a,WAAa,CAAC,IAAK,KACjB2a,EA1OT,CA2OE4tB,GAAA,MAEF,SAAS+S,GAAYD,GACnB,IAAI98C,EAAc88C,EAAO98C,YACzB,OAAOA,EAAcA,EAAYwd,iBAAmB,KAGvC,U,0BC3Pf,SAASX,GAAY7c,EAAa8c,EAAKzD,GACrC,IAAIlP,EAAS,oBAAOnK,EAAY+c,qBAAsB,CACpD1D,OAAQA,IAEV,OAAO,gBAAclP,EAAQ,CAC3B9B,MAAOyU,EAAIE,WACXzR,OAAQuR,EAAIG,cAID,SAASigC,GAAmB57C,EAASwb,GAClD,IAAIqgC,EAAW,GA+Cf,OA9CA77C,EAAQuc,iBAAiB,SAAS,SAAU7d,GAC1C,IAAIo9C,EAAep9C,EAAYC,IAAI,oBAEnC,IAAKm9C,GAAiC,SAAjBA,EAAyB,CAC5C,IAAI9H,EAASt1C,EAAYqP,UACrBguC,EAAY/H,EAAO9O,UAAS,SAAU39B,GACxC,IAAIuc,EAAYkwB,EAAOjwB,aAAaxc,GACpC,MAAO,EAAEuc,EAAUnlB,IAAI,MAAOmlB,EAAUnlB,IAAI,SAE1C0W,EAAM,GACNC,EAAM,GACV0mC,GAAA,KAAgBD,EAAW1mC,EAAKC,GAE5BA,EAAI,GAAKD,EAAI,KAAO,IACtBC,EAAI,IAAM,EACVD,EAAI,IAAM,GAGRC,EAAI,GAAKD,EAAI,KAAO,IACtBC,EAAI,IAAM,EACVD,EAAI,IAAM,GAGZ,IAAI0C,GAAUzC,EAAI,GAAKD,EAAI,KAAOC,EAAI,GAAKD,EAAI,IAE3CwG,EAAWN,GAAY7c,EAAa8c,EAAKzD,GAEzCgF,MAAMhF,KACR1C,EAAM,CAACwG,EAASnH,EAAGmH,EAASlH,GAC5BW,EAAM,CAACuG,EAASnH,EAAImH,EAAS9U,MAAO8U,EAASlH,EAAIkH,EAAS5R,SAG5D,IAAIgyC,EAAU3mC,EAAI,GAAKD,EAAI,GACvB6mC,EAAW5mC,EAAI,GAAKD,EAAI,GACxByJ,EAAYjD,EAAS9U,MACrBgY,EAAalD,EAAS5R,OACtBkyC,EAAez9C,EAAYwd,iBAAmB,IAAI,GACtDigC,EAAa9B,UAAY37C,EAAYC,IAAI,cACzCw9C,EAAa1C,gBAAgBpkC,EAAI,GAAIA,EAAI,GAAI4mC,EAASC,GACtDC,EAAazC,YAAY79B,EAASnH,EAAGmH,EAASlH,EAAGmK,EAAWC,GAE5Do9B,EAAa/lC,UAAU1X,EAAYC,IAAI,UAAW6c,GAClD2gC,EAAahC,QAAQz7C,EAAYC,IAAI,SACrCk9C,EAAS5sC,KAAKktC,OAGXN,E,yHCrDL,GAEJ,SAAUhlC,GAGR,SAASulC,EAAO/4C,EAAMkE,EAAK80C,EAAanoC,GACtC,IAAI+C,EAAQJ,EAAOK,KAAK7Y,OAASA,KAIjC,OAFA4Y,EAAMmQ,WAAW/jB,EAAMkE,EAAK80C,EAAanoC,GAElC+C,EAmTT,OA1TA,gBAAUmlC,EAAQvlC,GAUlBulC,EAAOzzC,UAAU2zC,cAAgB,SAAUxL,EAAYztC,EAAMkE,EAAKwpC,EAAYwL,GAE5El+C,KAAKm+C,YAOL,IAAItG,EAAa,gBAAapF,GAAa,GAAI,EAAG,EAAG,EAAG,KAAMyL,GAC9DrG,EAAW9tB,KAAK,CACdlB,GAAI,IACJu1B,SAAS,EACT90B,OAAQopB,EAAW,GAAK,EACxBnpB,OAAQmpB,EAAW,GAAK,IAG1BmF,EAAWwG,MAAQC,GACnBt+C,KAAKu+C,YAAc9L,EACnBzyC,KAAK+rB,IAAI8rB,IAQXkG,EAAOzzC,UAAUk0C,oBAAsB,SAAUC,GAC/Cz+C,KAAK0+C,QAAQ,GAAGC,cAAc,KAAMF,IAGtCV,EAAOzzC,UAAUs0C,cAAgB,WAC/B,OAAO5+C,KAAKu+C,aAadR,EAAOzzC,UAAUwtC,cAAgB,WAC/B,OAAO93C,KAAK0+C,QAAQ,IAOtBX,EAAOzzC,UAAUu0C,UAAY,WAC3B,gBAAc7+C,KAAK0+C,QAAQ,KAO7BX,EAAOzzC,UAAUw0C,SAAW,WAC1B,gBAAc9+C,KAAK0+C,QAAQ,KAQ7BX,EAAOzzC,UAAUy0C,KAAO,SAAU5Y,EAAQnY,GACxC,IAAI6pB,EAAa73C,KAAK0+C,QAAQ,GAC9B7G,EAAW1R,OAASA,EACpB0R,EAAW7pB,EAAIA,GAGjB+vB,EAAOzzC,UAAU00C,aAAe,SAAUnS,EAAWoS,GACnD,IAAIpH,EAAa73C,KAAK0+C,QAAQ,GAC9B7G,EAAWhL,UAAYA,EACvBgL,EAAWlM,QAAUsT,GAAmBpS,EAAY,OAASgL,EAAWlM,QAO1EoS,EAAOzzC,UAAUye,WAAa,SAAU/jB,EAAMkE,EAAK80C,EAAanoC,GAC9D7V,KAAKk/C,QAAS,EACd,IAAIzM,EAAaztC,EAAK4kB,cAAc1gB,EAAK,WAAa,SAClD7I,EAAc2E,EAAKikB,UACnBypB,EAAaqL,EAAO3H,cAAcpxC,EAAMkE,GACxCi2C,EAAS1M,IAAezyC,KAAKu+C,YAC7Ba,EAAmBvpC,GAAQA,EAAKupC,iBAEpC,GAAID,EAAQ,CACV,IAAIjB,EAAal5C,EAAK4kB,cAAc1gB,EAAK,oBAEzClJ,KAAKi+C,cAAcxL,EAAYztC,EAAMkE,EAAKwpC,EAAYwL,OACjD,CACL,IAAIrG,EAAa73C,KAAK0+C,QAAQ,GAC9B7G,EAAWqH,QAAS,EACpB,IAAIvlC,EAAS,CACX2P,OAAQopB,EAAW,GAAK,EACxBnpB,OAAQmpB,EAAW,GAAK,GAE1B0M,EAAmBvH,EAAW9tB,KAAKpQ,GAAU,QAAoBk+B,EAAYl+B,EAAQtZ,EAAa6I,GAClG,gBAAa2uC,GAKf,GAFA73C,KAAKq/C,cAAcr6C,EAAMkE,EAAKwpC,EAAYsL,EAAanoC,GAEnDspC,EAAQ,CACNtH,EAAa73C,KAAK0+C,QAAQ,GAE9B,IAAKU,EAAkB,CACjBzlC,EAAS,CACX2P,OAAQtpB,KAAKs/C,OACb/1B,OAAQvpB,KAAKu/C,OACbh3C,MAAO,CAEL+hB,QAASutB,EAAWtvC,MAAM+hB,UAG9ButB,EAAWvuB,OAASuuB,EAAWtuB,OAAS,EACxCsuB,EAAWtvC,MAAM+hB,QAAU,EAC3B,QAAkButB,EAAYl+B,EAAQtZ,EAAa6I,IAInDk2C,GAEFp/C,KAAK0+C,QAAQ,GAAGC,cAAc,UAIlCZ,EAAOzzC,UAAU+0C,cAAgB,SAAUr6C,EAAMkE,EAAKwpC,EAAYsL,EAAanoC,GAC7E,IAEI2pC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAj2B,EAVA+tB,EAAa73C,KAAK0+C,QAAQ,GAC1Br+C,EAAc2E,EAAKikB,UAuBvB,GAZI+0B,IACFwB,EAAoBxB,EAAYwB,kBAChCC,EAAgBzB,EAAYyB,cAC5BC,EAAkB1B,EAAY0B,gBAC9BC,EAAQ3B,EAAY2B,MACpBC,EAAY5B,EAAY4B,UACxBE,EAAoB9B,EAAY8B,kBAChCC,EAAa/B,EAAY+B,WACzBj2B,EAAck0B,EAAYl0B,YAC1B+1B,EAAmB7B,EAAY6B,mBAG5B7B,GAAeh5C,EAAKS,cAAe,CACtC,IAAIggB,EAAYu4B,GAAeA,EAAYv4B,UAAYu4B,EAAYv4B,UAAYzgB,EAAK0gB,aAAaxc,GAC7FggB,EAAgBzD,EAAUG,SAAS,YACvC45B,EAAoBt2B,EAActD,SAAS,aAAakG,eACxD4zB,EAAkBj6B,EAAUG,SAAS,CAAC,SAAU,cAAckG,eAC9D2zB,EAAgBh6B,EAAUG,SAAS,CAAC,OAAQ,cAAckG,eAC1D6zB,EAAQz2B,EAAc5oB,IAAI,SAC1Bs/C,EAAY12B,EAAc5oB,IAAI,aAC9Bu/C,EAAmB32B,EAAc5oB,IAAI,YACrCw/C,EAAoB,gBAAqBr6B,GACzCs6B,EAAa72B,EAAcE,WAAW,SACtCU,EAAcrE,EAAU2D,WAAW,UAGrC,IAAI42B,EAAeh7C,EAAK4kB,cAAc1gB,EAAK,gBAC3C2uC,EAAW9tB,KAAK,YAAai2B,GAAgB,GAAKjtC,KAAKiK,GAAK,KAAO,GACnE,IAAIijC,EAAe,gBAAsBj7C,EAAK4kB,cAAc1gB,EAAK,gBAAiBwpC,GAE9EuN,IACFpI,EAAWxhC,EAAI4pC,EAAa,GAC5BpI,EAAWvhC,EAAI2pC,EAAa,IAG9Bn2B,GAAe+tB,EAAW9tB,KAAK,SAAUD,GACzC,IAAIo2B,EAAcl7C,EAAK4kB,cAAc1gB,EAAK,SACtCihB,EAAc+1B,EAAY91B,KAE9B,GAAIytB,aAAsB,QAAS,CACjC,IAAIsI,EAAYtI,EAAWtvC,MAC3BsvC,EAAWluB,SAAS,oBAAO,CAEzBy2B,MAAOD,EAAUC,MACjB/pC,EAAG8pC,EAAU9pC,EACbC,EAAG6pC,EAAU7pC,EACb5N,MAAOy3C,EAAUz3C,MACjBkD,OAAQu0C,EAAUv0C,QACjBs0C,SAECrI,EAAWwI,eAIbxI,EAAWluB,SAAS,oBAAO,GAAIu2B,IAE/BrI,EAAWluB,SAASu2B,GAItBrI,EAAWtvC,MAAM+3C,MAAQ,KACzBzI,EAAW0I,SAASp2B,EAAatU,GAAQA,EAAK2qC,kBAC9C3I,EAAWtvC,MAAMk4C,eAAgB,EAGnC,IAAIC,EAAQ17C,EAAK4kB,cAAc1gB,EAAK,SAChCy3C,EAAW3gD,KAAK4gD,IAEP,MAATF,EACc,MAAZC,IACF3gD,KAAK4gD,IAAM/I,EAAWhvB,GACtBgvB,EAAWhvB,IAAM63B,GAEE,MAAZC,IACT9I,EAAWhvB,GAAK83B,EAChB3gD,KAAK4gD,IAAM,MAGb,IAAIC,EAAehrC,GAAQA,EAAKgrC,aAShC,SAASC,EAAoB53C,GAC3B,OAAO23C,EAAe77C,EAAKsb,QAAQpX,GAAO,gBAAgBlE,EAAMkE,GATlE,gBAAc2uC,EAAYiI,EAAmB,CAC3Cv1B,aAAclqB,EACdmqB,eAAgBthB,EAChByhB,YAAam2B,EACbr2B,aAAcN,EACdO,eAAgBw1B,EAAY51B,UAO9BtqB,KAAKs/C,OAAS5M,EAAW,GAAK,EAC9B1yC,KAAKu/C,OAAS7M,EAAW,GAAK,EAC9B,IAAIuF,EAAgBJ,EAAW5tB,YAAY,YAC3CguB,EAAc1vC,MAAQi3C,EACtB3H,EAAW5tB,YAAY,UAAU1hB,MAAQm3C,EACzC7H,EAAW5tB,YAAY,QAAQ1hB,MAAQk3C,EAGvC,IAAIsB,EAA2B,MAAdhB,IAAqC,IAAfA,EAAsBhtC,KAAKkE,IAAI,IAAK,EAAIjX,KAAKu/C,QAClFnoC,SAAS2oC,IAAeA,EAAa,GAAKA,EAAa,EAEzD9H,EAAc3uB,OAAStpB,KAAKs/C,OAASyB,EACrC9I,EAAc1uB,OAASvpB,KAAKu/C,OAASwB,EACrC/gD,KAAKghD,eAAe,GACpB,gBAAoBhhD,KAAM2/C,EAAOC,EAAWC,IAG9C9B,EAAOzzC,UAAU02C,eAAiB,SAAUv2C,GAC1CzK,KAAKspB,OAAStpB,KAAKupB,OAAS9e,GAG9BszC,EAAOzzC,UAAU22C,QAAU,SAAU/H,EAAI74C,EAAawD,GACpD,IAAIg0C,EAAa73C,KAAK0+C,QAAQ,GAC1Bn5C,EAAY,gBAAUvF,MAAMuF,UAC5B27C,EAAer9C,GAAOA,EAAIs9C,UAI9B,GAFAnhD,KAAKk/C,OAASrH,EAAWqH,QAAS,EAE9Br7C,GAAOA,EAAIu9C,UAAW,CACxB,IAAIC,EAAcxJ,EAAWvyB,iBAEzB+7B,GACF,QAAsBA,EAAa,CACjC94C,MAAO,CACL+hB,QAAS,IAEVjqB,EAAa,CACdkF,UAAWA,EACX+7C,UAAWJ,EACXhI,GAAI,WACFrB,EAAW0J,4BAKjB1J,EAAW0J,oBAGb,QAAsB1J,EAAY,CAChCtvC,MAAO,CACL+hB,QAAS,GAEXhB,OAAQ,EACRC,OAAQ,GACPlpB,EAAa,CACdkF,UAAWA,EACX2zC,GAAIA,EACJoI,UAAWJ,KAIfnD,EAAO3H,cAAgB,SAAUpxC,EAAMkE,GACrC,OAAO,gBAAoBlE,EAAK4kB,cAAc1gB,EAAK,gBAG9C60C,EA3TT,CA4TE,SAEF,SAASO,GAAYt9B,EAAIO,GACvBvhB,KAAKya,OAAO4jC,MAAMr9B,EAAIO,GAGT,UC1Uf,SAASigC,GAAgBx8C,EAAM8Y,EAAO5U,EAAKrF,GACzC,OAAOia,IAAUY,MAAMZ,EAAM,MAAQY,MAAMZ,EAAM,OAASja,EAAI49C,UAAY59C,EAAI49C,SAASv4C,OAGlFrF,EAAI69C,YAAc79C,EAAI69C,UAAUvrC,QAAQ2H,EAAM,GAAIA,EAAM,MAA8C,SAAtC9Y,EAAK4kB,cAAc1gB,EAAK,UAG/F,SAASy4C,GAAmB99C,GAO1B,OANW,MAAPA,GAAgB,sBAASA,KAC3BA,EAAM,CACJ49C,SAAU59C,IAIPA,GAAO,GAGhB,SAAS+9C,GAAgB58C,GACvB,IAAI3E,EAAc2E,EAAKikB,UACnBC,EAAgB7oB,EAAYulB,SAAS,YACzC,MAAO,CACL45B,kBAAmBt2B,EAActD,SAAS,aAAakG,eACvD2zB,cAAep/C,EAAYulB,SAAS,CAAC,OAAQ,cAAckG,eAC3D4zB,gBAAiBr/C,EAAYulB,SAAS,CAAC,SAAU,cAAckG,eAC/D6zB,MAAOz2B,EAAc5oB,IAAI,SACzBs/C,UAAW12B,EAAc5oB,IAAI,aAC7Bu/C,iBAAkB32B,EAAc5oB,IAAI,YACpCy/C,WAAY72B,EAAc5oB,IAAI,SAC9Bw/C,kBAAmB,gBAAqBz/C,GACxCypB,YAAazpB,EAAYC,IAAI,WAIjC,IAAI,GAEJ,WACE,SAASuhD,EAAWC,GAClB9hD,KAAKyrB,MAAQ,IAAI,QACjBzrB,KAAK+hD,YAAcD,GAAc,GA+JnC,OAxJAD,EAAWv3C,UAAUye,WAAa,SAAU/jB,EAAMnB,GAEhD7D,KAAKgiD,gBAAkB,KACvBn+C,EAAM89C,GAAmB99C,GACzB,IAAI4nB,EAAQzrB,KAAKyrB,MACbprB,EAAc2E,EAAKikB,UACnBsC,EAAUvrB,KAAKwrB,MACfs2B,EAAa9hD,KAAK+hD,YAClB3C,EAAmBv7C,EAAIu7C,iBACvBpB,EAAc4D,GAAgB58C,GAC9Bi9C,EAAkB,CACpB7C,iBAAkBA,GAGhB8C,EAAiBr+C,EAAIq+C,gBAAkB,SAAUh5C,GACnD,OAAOlE,EAAK8a,cAAc5W,IAKvBqiB,GACHE,EAAM0yB,YAGRn5C,EAAKgnB,KAAKT,GAASQ,KAAI,SAAUK,GAC/B,IAAItO,EAAQokC,EAAe91B,GAE3B,GAAIo1B,GAAgBx8C,EAAM8Y,EAAOsO,EAAQvoB,GAAM,CAC7C,IAAIs+C,EAAW,IAAIL,EAAW98C,EAAMonB,EAAQ4xB,EAAaiE,GACzDE,EAASC,YAAYtkC,GACrB9Y,EAAKknB,iBAAiBE,EAAQ+1B,GAC9B12B,EAAMM,IAAIo2B,OAEXh2B,QAAO,SAAUC,EAAQC,GAC1B,IAAI81B,EAAW52B,EAAQnG,iBAAiBiH,GACpCvO,EAAQokC,EAAe91B,GAE3B,GAAKo1B,GAAgBx8C,EAAM8Y,EAAOsO,EAAQvoB,GAA1C,CAKA,IAAIw+C,EAAgBr9C,EAAK4kB,cAAcwC,EAAQ,WAAa,SACxDk2B,EAAgBH,GAAYA,EAASvD,eAAiBuD,EAASvD,gBAEnE,IAAKuD,GACFG,GAAiBA,IAAkBD,EACpC52B,EAAMI,OAAOs2B,GACbA,EAAW,IAAIL,EAAW98C,EAAMonB,EAAQ4xB,EAAaiE,GACrDE,EAASC,YAAYtkC,OAChB,CACLqkC,EAASp5B,WAAW/jB,EAAMonB,EAAQ4xB,EAAaiE,GAC/C,IAAItoC,EAAS,CACXtD,EAAGyH,EAAM,GACTxH,EAAGwH,EAAM,IAEXshC,EAAmB+C,EAASp4B,KAAKpQ,GAAU,QAAoBwoC,EAAUxoC,EAAQtZ,GAInForB,EAAMM,IAAIo2B,GACVn9C,EAAKknB,iBAAiBE,EAAQ+1B,QAvB5B12B,EAAMI,OAAOs2B,MAwBdt2B,QAAO,SAAUQ,GAClB,IAAIjS,EAAKmR,EAAQnG,iBAAiBiH,GAClCjS,GAAMA,EAAG6mC,SAAQ,WACfx1B,EAAMI,OAAOzR,KACZ/Z,MACFksB,UACHvsB,KAAKuiD,gBAAkBL,EACvBliD,KAAKwrB,MAAQxmB,GAKf68C,EAAWv3C,UAAUk4C,aAAe,WAClC,IAAI5pC,EAAQ5Y,KAERgF,EAAOhF,KAAKwrB,MAEZxmB,GAEFA,EAAKy9C,mBAAkB,SAAUroC,EAAIlR,GACnC,IAAI4U,EAAQlF,EAAM2pC,gBAAgBr5C,GAElCkR,EAAGgoC,YAAYtkC,GACf1D,EAAGsoC,iBAOTb,EAAWv3C,UAAUq4C,yBAA2B,SAAU39C,GACxDhF,KAAK4iD,aAAehB,GAAgB58C,GACpChF,KAAKwrB,MAAQ,KACbxrB,KAAKyrB,MAAM0yB,aAQb0D,EAAWv3C,UAAUu4C,kBAAoB,SAAUC,EAAY99C,EAAMnB,GAKnE,SAASk/C,EAA0B3oC,GAC5BA,EAAG4oC,UACN5oC,EAAG6oC,aAAc,EACjB7oC,EAAG6P,YAAY,YAAYi5B,YAAa,GAN5CljD,KAAKgiD,gBAAkB,GACvBn+C,EAAM89C,GAAmB99C,GASzB,IAAK,IAAIqF,EAAM45C,EAAWnsB,MAAOztB,EAAM45C,EAAWlsB,IAAK1tB,IAAO,CAC5D,IAAI4U,EAAQ9Y,EAAK8a,cAAc5W,GAE/B,GAAIs4C,GAAgBx8C,EAAM8Y,EAAO5U,EAAKrF,GAAM,CAC1C,IAAIuW,EAAK,IAAIpa,KAAK+hD,YAAY/8C,EAAMkE,EAAKlJ,KAAK4iD,cAC9CxoC,EAAG6xB,SAAS8W,GACZ3oC,EAAGgoC,YAAYtkC,GACf9d,KAAKyrB,MAAMM,IAAI3R,GACfpV,EAAKknB,iBAAiBhjB,EAAKkR,GAE3Bpa,KAAKgiD,gBAAgBpxC,KAAKwJ,MAOhCynC,EAAWv3C,UAAU64C,aAAe,SAAUjK,GAC5CjT,GAAA,oBAAyBjmC,KAAKgiD,iBAAmBhiD,KAAKyrB,MAAOytB,IAG/D2I,EAAWv3C,UAAUuhB,OAAS,SAAUu3B,GACtC,IAAI33B,EAAQzrB,KAAKyrB,MACbzmB,EAAOhF,KAAKwrB,MAEZxmB,GAAQo+C,EACVp+C,EAAKy9C,mBAAkB,SAAUroC,GAC/BA,EAAG6mC,SAAQ,WACTx1B,EAAMI,OAAOzR,KACZpV,EAAKikB,cAGVwC,EAAM0yB,aAKH0D,EAlKT,GAqKe,M,uCCtMXwB,GAAoB,QAAa/4C,UACjCg5C,GAAmB,QAAoBh5C,UAEvCi5C,GAEJ,WACE,SAASA,IAEPvjD,KAAK4X,GAAK,EACV5X,KAAK6X,GAAK,EAEV7X,KAAK0mB,GAAK,EACV1mB,KAAK2mB,GAAK,EACV3mB,KAAKytB,QAAU,EAGjB,OAAO81B,EAXT,IAgBA,SAAU/qC,GAGR,SAASgrC,IACP,OAAkB,OAAXhrC,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAH7D,gBAAUwjD,EAAYhrC,IADxB,CAQE+qC,IAEF,SAASE,GAAep+B,GACtB,OAAO3G,OAAO2G,EAAMq+B,OAAShlC,OAAO2G,EAAMs+B,MAG5C,IAAI,GAEJ,SAAUnrC,GAGR,SAASorC,EAAW/tC,GAClB,IAAI+C,EAAQJ,EAAOK,KAAK7Y,KAAM6V,IAAS7V,KAGvC,OADA4Y,EAAM9V,KAAO,UACN8V,EAoCT,OA1CA,gBAAUgrC,EAAYprC,GAStBorC,EAAWt5C,UAAUu5C,gBAAkB,WACrC,MAAO,CACL74B,OAAQ,OACRZ,KAAM,OAIVw5B,EAAWt5C,UAAUw5C,gBAAkB,WACrC,OAAO,IAAIP,IAGbK,EAAWt5C,UAAUg1B,UAAY,SAAUykB,EAAK1+B,GAC1Co+B,GAAep+B,GACjBg+B,GAAkB/jB,UAAUzmB,KAAK7Y,KAAM+jD,EAAK1+B,GAE5Ci+B,GAAiBhkB,UAAUzmB,KAAK7Y,KAAM+jD,EAAK1+B,IAI/Cu+B,EAAWt5C,UAAU05C,QAAU,SAAU30C,GACvC,OAAIo0C,GAAezjD,KAAKqlB,OACfg+B,GAAkBW,QAAQnrC,KAAK7Y,KAAMqP,GAErCi0C,GAAiBU,QAAQnrC,KAAK7Y,KAAMqP,IAI/Cu0C,EAAWt5C,UAAU25C,UAAY,SAAU50C,GACzC,IAAIgW,EAAQrlB,KAAKqlB,MACb7O,EAAIitC,GAAep+B,GAAS,CAACA,EAAMqB,GAAKrB,EAAMzN,GAAIyN,EAAMsB,GAAKtB,EAAMxN,IAAMyrC,GAAiBW,UAAUprC,KAAK7Y,KAAMqP,GACnH,OAAO,eAAemH,EAAGA,IAGpBotC,EA3CT,CA4CE,SAEa,MCjFXM,GAAoB,CAAC,aAAc,YAEvC,SAASC,GAAkBC,GACzB,MAAO,IAAMA,EAAiB,OAOhC,SAASC,GAAazhD,EAAM0hD,EAAUp7C,GACpC,IAAIupC,EAAa6R,EAAS16B,cAAc1gB,EAAKtG,GAE7C,GAAK6vC,GAA6B,SAAfA,EAAnB,CAIA,IAAIC,EAAa4R,EAAS16B,cAAc1gB,EAAKtG,EAAO,QAChDo9C,EAAesE,EAAS16B,cAAc1gB,EAAKtG,EAAO,UAClDq9C,EAAeqE,EAAS16B,cAAc1gB,EAAKtG,EAAO,UAClD2hD,EAAmBD,EAAS16B,cAAc1gB,EAAKtG,EAAO,cACtD4hD,EAAgB,QAA+B9R,GAC/C+R,EAAkB,QAAiCxE,GAAgB,EAAGuE,GACtE3M,EAAa,QAAwBpF,GAAa+R,EAAc,GAAK,EAAIC,EAAgB,IAAKD,EAAc,GAAK,EAAIC,EAAgB,GAAID,EAAc,GAAIA,EAAc,GAAI,KAAMD,GAGvL,OAFA1M,EAAW6M,oBAAsC,MAAhB1E,GAAwBthC,MAAMshC,QAAgB,GAAUA,EAAejtC,KAAKiK,GAAK,KAAO,EACzH66B,EAAWj1C,KAAOA,EACXi1C,GAGT,SAAS8M,GAAWvuC,GAClB,IAAIwuC,EAAO,IAAI,GAAW,CACxBhiD,KAAM,OACNiiD,kBAAkB,IAGpB,OADAC,GAAcF,EAAKv/B,MAAOjP,GACnBwuC,EAGT,SAASE,GAAcC,EAAa3uC,GAClC2uC,EAAYntC,GAAKxB,EAAO,GAAG,GAC3B2uC,EAAYltC,GAAKzB,EAAO,GAAG,GAC3B2uC,EAAYr+B,GAAKtQ,EAAO,GAAG,GAC3B2uC,EAAYp+B,GAAKvQ,EAAO,GAAG,GAC3B2uC,EAAYt3B,QAAU,EACtB,IAAIupB,EAAM5gC,EAAO,GAEb4gC,GACF+N,EAAYrB,KAAO1M,EAAI,GACvB+N,EAAYpB,KAAO3M,EAAI,KAEvB+N,EAAYrB,KAAOhkC,IACnBqlC,EAAYpB,KAAOjkC,KAIvB,IAAI,GAEJ,SAAUlH,GAGR,SAASwsC,EAAKV,EAAUp7C,EAAK80C,GAC3B,IAAIplC,EAAQJ,EAAOK,KAAK7Y,OAASA,KAIjC,OAFA4Y,EAAMqsC,YAAYX,EAAUp7C,EAAK80C,GAE1BplC,EA4VT,OAnWA,gBAAUosC,EAAMxsC,GAUhBwsC,EAAK16C,UAAU26C,YAAc,SAAUX,EAAUp7C,EAAK80C,GACpD,IAAI39C,EAAcikD,EAASr7B,UACvBhI,EAAaqjC,EAASxkC,cAAc5W,GACpC07C,EAAOD,GAAW1jC,GACtB2jC,EAAKv/B,MAAMoI,QAAU,EACrB,QAAkBm3B,EAAM,CACtBv/B,MAAO,CACLoI,QAAS,IAEVptB,EAAa6I,GAChBlJ,KAAK+rB,IAAI64B,GACT,kBAAKV,IAAmB,SAAUE,GAChC,IAAIc,EAASb,GAAaD,EAAgBE,EAAUp7C,GAIpDlJ,KAAK+rB,IAAIm5B,GACTllD,KAAKmkD,GAAkBC,IAAmBE,EAAS16B,cAAc1gB,EAAKk7C,KACrEpkD,MAEHA,KAAKmlD,iBAAiBb,EAAUp7C,EAAK80C,IAIvCgH,EAAK16C,UAAUye,WAAa,SAAUu7B,EAAUp7C,EAAK80C,GACnD,IAAI39C,EAAcikD,EAASr7B,UACvB27B,EAAO5kD,KAAKolD,YAAY,QACxBnkC,EAAaqjC,EAASxkC,cAAc5W,GACpCyQ,EAAS,CACX0L,MAAO,IAETy/B,GAAcnrC,EAAO0L,MAAOpE,GAC5B,QAAoB2jC,EAAMjrC,EAAQtZ,EAAa6I,GAC/C,kBAAKg7C,IAAmB,SAAUE,GAChC,IAAI3R,EAAa6R,EAAS16B,cAAc1gB,EAAKk7C,GACzC99C,EAAM69C,GAAkBC,GAE5B,GAAIpkD,KAAKsG,KAASmsC,EAAY,CAC5BzyC,KAAK6rB,OAAO7rB,KAAKolD,YAAYhB,IAC7B,IAAIc,EAASb,GAAaD,EAAgBE,EAAUp7C,GACpDlJ,KAAK+rB,IAAIm5B,GAGXllD,KAAKsG,GAAOmsC,IACXzyC,MAEHA,KAAKmlD,iBAAiBb,EAAUp7C,EAAK80C,IAKvCgH,EAAK16C,UAAU+6C,YAAc,WAC3B,OAAOrlD,KAAK0+C,QAAQ,IAGtBsG,EAAK16C,UAAU66C,iBAAmB,SAAUb,EAAUp7C,EAAK80C,GACzD,IAAI39C,EAAcikD,EAASr7B,UACvB27B,EAAO5kD,KAAKolD,YAAY,QACxBE,EAAoBtH,GAAeA,EAAYsH,kBAC/CC,EAAgBvH,GAAeA,EAAYuH,cAC3CC,EAAkBxH,GAAeA,EAAYwH,gBAC7C1F,EAAoB9B,GAAeA,EAAY8B,kBAC/CD,EAAmB7B,GAAeA,EAAY6B,iBAC9CF,EAAQ3B,GAAeA,EAAY2B,MACnCC,EAAY5B,GAAeA,EAAY4B,UAE3C,IAAK5B,GAAesG,EAAS7+C,cAAe,CAC1C,IAAIggB,EAAY6+B,EAAS5+B,aAAaxc,GAClCggB,EAAgBzD,EAAUG,SAAS,YACvC0/B,EAAoBp8B,EAActD,SAAS,aAAaoY,eACxDunB,EAAgB9/B,EAAUG,SAAS,CAAC,OAAQ,cAAcoY,eAC1DwnB,EAAkB//B,EAAUG,SAAS,CAAC,SAAU,cAAcoY,eAC9D6hB,EAAmB32B,EAAc5oB,IAAI,YACrCq/C,EAAQz2B,EAAc5oB,IAAI,SAC1Bs/C,EAAY12B,EAAc5oB,IAAI,aAC9Bw/C,EAAoB,gBAAqBr6B,GAG3C,IAAIqJ,EAAYw1B,EAAS16B,cAAc1gB,EAAK,SACxCihB,EAAc2E,EAAU9D,OAC5B45B,EAAKj7B,SAASmF,GACd81B,EAAKr8C,MAAM6hB,KAAO,KAClBw6B,EAAKr8C,MAAMk4C,eAAgB,EAC3BmE,EAAK36B,YAAY,YAAY1hB,MAAQ+8C,EACrCV,EAAK36B,YAAY,QAAQ1hB,MAAQg9C,EACjCX,EAAK36B,YAAY,UAAU1hB,MAAQi9C,EAEnC,kBAAKtB,IAAmB,SAAUE,GAChC,IAAIc,EAASllD,KAAKolD,YAAYhB,GAE9B,GAAIc,EAAQ,CAEVA,EAAO3E,SAASp2B,GAChB+6B,EAAO38C,MAAM+hB,QAAUwE,EAAUxE,QAEjC,IAAK,IAAIxkB,EAAI,EAAGA,EAAI,QAAeC,OAAQD,IAAK,CAC9C,IAAI63B,EAAY,QAAe73B,GAC3B2/C,EAAYb,EAAKc,SAAS/nB,GAE9B,GAAI8nB,EAAW,CACb,IAAIE,EAAiBF,EAAUl9C,OAAS,GACpC2D,EAAQg5C,EAAOj7B,YAAY0T,GAC3BioB,EAAa15C,EAAM3D,QAAU2D,EAAM3D,MAAQ,IAElB,MAAzBo9C,EAAe36B,SACjB46B,EAAWV,EAAO7E,eAAiB,SAAW,QAAUsF,EAAe36B,QAG3C,MAA1B26B,EAAer7B,UACjBs7B,EAAWt7B,QAAUq7B,EAAer7B,UAK1C46B,EAAOxC,gBAER1iD,MACH,IAAIonC,EAAS/mC,EAAYwlD,YAAY38C,GACrC,gBAAclJ,KAAM8/C,EAAmB,CACrCt1B,eAAgBthB,EAChBqhB,aAAc,CACZK,kBAAmB,SAAUrlB,EAAWo4B,GACtC,OAAOt9B,EAAYuqB,kBAAkBrlB,EAAWo4B,EAAW2mB,EAASva,YAGxEtf,aAAcN,GAAe,OAC7BO,eAAgBoE,EAAUxE,QAC1BK,aAAwB,MAAVyc,EAAiBkd,EAAShkC,QAAQpX,GAAOkO,SAASgwB,GAAU,gBAAMA,GAAUA,GAAU,KAEtG,IAAIt4B,EAAQ9O,KAAKslB,iBAGjB,GAAIxW,EAAO,CACT,IAAIg3C,EAAmBhG,EAAkBhhB,OACzChwB,EAAMi3C,QAAUj3C,EAAMvG,MAAM+e,MAC5BxY,EAAMk3C,gBAAkBl3C,EAAMvG,MAAM8e,cAEpCvY,EAAMm3C,WAAaH,EAAiBxlD,IAAI,aAAe,SACvD,IAAI44B,EAAW4sB,EAAiBxlD,IAAI,YAE/B,qBAAQ44B,KACXA,EAAW,CAACA,EAAUA,IAGxBpqB,EAAMo3C,gBAAkBhtB,EAG1Bl5B,KAAK+nB,cAAc,CACjBjH,SAAU,KACV2rB,OAAO,EACPzkB,QAAQ,IAGV,gBAAoBhoB,KAAM2/C,EAAOC,EAAWC,IAG9CmF,EAAK16C,UAAUu0C,UAAY,WACzB,gBAAc7+C,OAGhBglD,EAAK16C,UAAUw0C,SAAW,WACxB,gBAAc9+C,OAGhBglD,EAAK16C,UAAUk4C,aAAe,SAAU8B,EAAUp7C,GAChDlJ,KAAK8kD,cAAcR,EAASxkC,cAAc5W,KAG5C87C,EAAK16C,UAAUw6C,cAAgB,SAAU1uC,GACvC,IAAI+vC,EAAWnmD,KAAKolD,YAAY,QAChCN,GAAcqB,EAAS9gC,MAAOjP,GAC9B+vC,EAASC,SAGXpB,EAAK16C,UAAU+7C,aAAe,WAC5B,IAAIC,EAAYtmD,KACZumD,EAAaD,EAAUlB,YAAY,cACnCoB,EAAWF,EAAUlB,YAAY,YACjCt2C,EAAQw3C,EAAUhhC,iBAEtB,GAAKihC,GAAeC,GAAc13C,IAASA,EAAMkW,OAAjD,CAIA,IAAIyhC,EAAW,EACXC,EAAa1mD,KAAKya,OAEtB,MAAOisC,EACDA,EAAWp9B,SACbm9B,GAAYC,EAAWp9B,QAGzBo9B,EAAaA,EAAWjsC,OAG1B,IAAImqC,EAAO0B,EAAUlB,YAAY,QAGjC,GAAKplD,KAAK2mD,SAAY/B,EAAK+B,QAA3B,CAIA,IAAIl5B,EAAUm3B,EAAKv/B,MAAMoI,QACrBm5B,EAAUhC,EAAKZ,QAAQ,GACvB6C,EAAQjC,EAAKZ,QAAQv2B,GACrB+L,EAAIyhB,EAAA,OAAW,GAAI4L,EAAOD,GAgC9B,GA/BA3L,EAAA,aAAiBzhB,EAAGA,GAiBhB+sB,IACFA,EAAWnE,YAAYwE,GACvBE,EAAkBP,EAAY,GAC9BA,EAAWj9B,OAASi9B,EAAWh9B,OAASk9B,EAAWh5B,EACnD84B,EAAW7D,cAGT8D,IACFA,EAASpE,YAAYyE,GACrBC,EAAkBN,EAAU,GAC5BA,EAASl9B,OAASk9B,EAASj9B,OAASk9B,EAAWh5B,EAC/C+4B,EAAS9D,cAGP5zC,IAAUA,EAAMkW,OAAQ,CAC1BlW,EAAMuH,EAAIvH,EAAMwH,EAAI,EACpBxH,EAAM2a,QAAU3a,EAAM4a,QAAU,EAChC,IAAIvD,OAAY,EACZ4gC,OAAoB,EACpB7tB,EAAWpqB,EAAMo3C,gBACjBc,EAAY9tB,EAAS,GAAKutB,EAC1BQ,EAAY/tB,EAAS,GAAKutB,EAC1BS,EAAcz5B,EAAU,EACxB05B,EAAUvC,EAAKX,UAAUiD,GACzBt8C,EAAI,CAACu8C,EAAQ,IAAKA,EAAQ,IAC1BxuC,EAAKisC,EAAKZ,QAAQkD,GAElBt8C,EAAE,GAAK,IACTA,EAAE,IAAMA,EAAE,GACVA,EAAE,IAAMA,EAAE,IAGZ,IAAI0U,EAAM6nC,EAAQ,GAAK,GAAK,EAAI,EAEhC,GAAyB,UAArBr4C,EAAMm3C,YAA+C,QAArBn3C,EAAMm3C,WAAsB,CAC9D,IAAI7+B,GAAYrU,KAAKmU,MAAMigC,EAAQ,GAAIA,EAAQ,IAE3CN,EAAM,GAAKD,EAAQ,KACrBx/B,EAAWrU,KAAKiK,GAAKoK,GAGvBtY,EAAMsY,SAAWA,EAGnB,IAAI7F,OAAK,EAET,OAAQzS,EAAMm3C,YACZ,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,SACH1kC,GAAM0lC,EACNF,EAAoB,SACpB,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,kBACHxlC,EAAK0lC,EACLF,EAAoB,MACpB,MAEF,QACExlC,EAAK,EACLwlC,EAAoB,SAGxB,OAAQj4C,EAAMm3C,YACZ,IAAK,MACHn3C,EAAMuH,EAAImjB,EAAE,GAAKwtB,EAAYH,EAAM,GACnC/3C,EAAMwH,EAAIkjB,EAAE,GAAKytB,EAAYJ,EAAM,GACnC1gC,EAAYqT,EAAE,GAAK,GAAM,OAASA,EAAE,IAAM,GAAM,QAAU,SAC1DutB,EAAoBvtB,EAAE,GAAK,GAAM,MAAQA,EAAE,IAAM,GAAM,SAAW,SAClE,MAEF,IAAK,QACH1qB,EAAMuH,GAAKmjB,EAAE,GAAKwtB,EAAYJ,EAAQ,GACtC93C,EAAMwH,GAAKkjB,EAAE,GAAKytB,EAAYL,EAAQ,GACtCzgC,EAAYqT,EAAE,GAAK,GAAM,QAAUA,EAAE,IAAM,GAAM,OAAS,SAC1DutB,EAAoBvtB,EAAE,GAAK,GAAM,SAAWA,EAAE,IAAM,GAAM,MAAQ,SAClE,MAEF,IAAK,iBACL,IAAK,cACL,IAAK,oBACH1qB,EAAMuH,EAAI2wC,EAAY1nC,EAAMsnC,EAAQ,GACpC93C,EAAMwH,EAAIswC,EAAQ,GAAKrlC,EACvB4E,EAAYghC,EAAQ,GAAK,EAAI,QAAU,OACvCr4C,EAAM2a,SAAWu9B,EAAY1nC,EAC7BxQ,EAAM4a,SAAWnI,EACjB,MAEF,IAAK,kBACL,IAAK,eACL,IAAK,qBACL,IAAK,SACHzS,EAAMuH,EAAIsC,EAAG,GACb7J,EAAMwH,EAAIqC,EAAG,GAAK4I,EAClB4E,EAAY,SACZrX,EAAM4a,SAAWnI,EACjB,MAEF,IAAK,eACL,IAAK,YACL,IAAK,kBACHzS,EAAMuH,GAAK2wC,EAAY1nC,EAAMunC,EAAM,GACnC/3C,EAAMwH,EAAIuwC,EAAM,GAAKtlC,EACrB4E,EAAYghC,EAAQ,IAAM,EAAI,QAAU,OACxCr4C,EAAM2a,QAAUu9B,EAAY1nC,EAC5BxQ,EAAM4a,SAAWnI,EACjB,MAGJzS,EAAMwa,OAASxa,EAAMya,OAASk9B,EAC9B33C,EAAMoV,SAAS,CAEbmD,cAAevY,EAAMk3C,iBAAmBe,EACxCz/B,MAAOxY,EAAMi3C,SAAW5/B,MApI5B,SAAS2gC,EAAkB5B,EAAQz3B,GAKjC,IAAI25B,EAAoBlC,EAAOR,oBAE/B,GAAyB,MAArB0C,EAA2B,CAC7B,IAAID,EAAUvC,EAAKX,UAAUx2B,GAC7By3B,EAAOn7B,KAAK,YAAyB,IAAZ0D,GAAiB,EAAI,GAAK1a,KAAKiK,GAAK,EAAIjK,KAAKmU,MAAMigC,EAAQ,GAAIA,EAAQ,UAEhGjC,EAAOn7B,KAAK,WAAYq9B,KA8HvBpC,EApWT,CAqWE,SAEa,MCraX,GAEJ,WACE,SAASqC,EAASC,GAChBtnD,KAAKyrB,MAAQ,IAAI,QACjBzrB,KAAKunD,UAAYD,GAAY,GAsH/B,OAnHAD,EAAS/8C,UAAUye,WAAa,SAAUu7B,GACxC,IAAI1rC,EAAQ5Y,KAGZA,KAAKgiD,gBAAkB,KACvB,IAAIwF,EAAWxnD,KACXyrB,EAAQ+7B,EAAS/7B,MACjBg8B,EAAcD,EAASE,UAC3BF,EAASE,UAAYpD,EAGhBmD,GACHh8B,EAAM0yB,YAGR,IAAIH,EAAc,GAAgBsG,GAClCA,EAASt4B,KAAKy7B,GAAa17B,KAAI,SAAU7iB,GACvC0P,EAAM+uC,OAAOrD,EAAUp7C,EAAK80C,MAC3B7xB,QAAO,SAAUC,EAAQC,GAC1BzT,EAAMgvC,UAAUH,EAAanD,EAAUj4B,EAAQD,EAAQ4xB,MACtDnyB,QAAO,SAAU3iB,GAClBuiB,EAAMI,OAAO47B,EAAYriC,iBAAiBlc,OACzCqjB,WAKL86B,EAAS/8C,UAAUk4C,aAAe,WAChC,IAAI8B,EAAWtkD,KAAK0nD,UAEfpD,GAILA,EAAS7B,mBAAkB,SAAUroC,EAAIlR,GACvCkR,EAAGooC,aAAa8B,EAAUp7C,KACzBlJ,OAKLqnD,EAAS/8C,UAAUq4C,yBAA2B,SAAU2B,GACtDtkD,KAAK4iD,aAAe,GAAgB0B,GACpCtkD,KAAK0nD,UAAY,KACjB1nD,KAAKyrB,MAAM0yB,aAKbkJ,EAAS/8C,UAAUu4C,kBAAoB,SAAUC,EAAYwB,GAG3D,SAASvB,EAA0B3oC,GAC5BA,EAAG4oC,SAAY6E,GAAeztC,KACjCA,EAAG6oC,aAAc,EACjB7oC,EAAG6P,YAAY,YAAYi5B,YAAa,GAL5CljD,KAAKgiD,gBAAkB,GASvB,IAAK,IAAI94C,EAAM45C,EAAWnsB,MAAOztB,EAAM45C,EAAWlsB,IAAK1tB,IAAO,CAC5D,IAAIwjB,EAAa43B,EAASxkC,cAAc5W,GAExC,GAAI4+C,GAAcp7B,GAAa,CAC7B,IAAItS,EAAK,IAAIpa,KAAKunD,UAAUjD,EAAUp7C,EAAKlJ,KAAK4iD,cAChDxoC,EAAG6xB,SAAS8W,GACZ/iD,KAAKyrB,MAAMM,IAAI3R,GACfkqC,EAASp4B,iBAAiBhjB,EAAKkR,GAE/Bpa,KAAKgiD,gBAAgBpxC,KAAKwJ,MAOhCitC,EAAS/8C,UAAUuhB,OAAS,WAC1B7rB,KAAKyrB,MAAM0yB,aAKbkJ,EAAS/8C,UAAU64C,aAAe,SAAUjK,GAC1CjT,GAAA,oBAAyBjmC,KAAKgiD,iBAAmBhiD,KAAKyrB,MAAOytB,IAG/DmO,EAAS/8C,UAAUq9C,OAAS,SAAUrD,EAAUp7C,EAAK80C,GACnD,IAAItxB,EAAa43B,EAASxkC,cAAc5W,GAExC,GAAK4+C,GAAcp7B,GAAnB,CAIA,IAAItS,EAAK,IAAIpa,KAAKunD,UAAUjD,EAAUp7C,EAAK80C,GAC3CsG,EAASp4B,iBAAiBhjB,EAAKkR,GAC/Bpa,KAAKyrB,MAAMM,IAAI3R,KAGjBitC,EAAS/8C,UAAUs9C,UAAY,SAAUH,EAAaM,EAAa17B,EAAQD,EAAQ4xB,GACjF,IAAIgK,EAASP,EAAYriC,iBAAiBiH,GAErCy7B,GAAcC,EAAYjoC,cAAcsM,KAKxC47B,EAGHA,EAAOj/B,WAAWg/B,EAAa37B,EAAQ4xB,GAFvCgK,EAAS,IAAIhoD,KAAKunD,UAAUQ,EAAa37B,EAAQ4xB,GAKnD+J,EAAY77B,iBAAiBE,EAAQ47B,GACrChoD,KAAKyrB,MAAMM,IAAIi8B,IAXbhoD,KAAKyrB,MAAMI,OAAOm8B,IAcfX,EAzHT,GA4HA,SAASQ,GAAeztC,GACtB,OAAOA,EAAG6tC,WAAa7tC,EAAG6tC,UAAUliD,OAAS,EAG/C,SAAS,GAAgBu+C,GACvB,IAAIr7B,EAAYq7B,EAASr7B,UACrBC,EAAgBD,EAAUrD,SAAS,YACvC,MAAO,CACLkJ,UAAW7F,EAAUrD,SAAS,aAAaoY,eAC3CsnB,kBAAmBp8B,EAActD,SAAS,CAAC,cAAcoY,eACzDunB,cAAet8B,EAAUrD,SAAS,CAAC,OAAQ,cAAcoY,eACzDwnB,gBAAiBv8B,EAAUrD,SAAS,CAAC,SAAU,cAAcoY,eAC7D6hB,iBAAkB32B,EAAc5oB,IAAI,YACpCs/C,UAAW12B,EAAc5oB,IAAI,aAC7Bq/C,MAAOz2B,EAAc5oB,IAAI,SACzBw/C,kBAAmB,gBAAqB72B,IAI5C,SAASi/B,GAAW3tB,GAClB,OAAO7b,MAAM6b,EAAG,KAAO7b,MAAM6b,EAAG,IAGlC,SAASutB,GAAcK,GACrB,OAAOA,IAAQD,GAAWC,EAAI,MAAQD,GAAWC,EAAI,IAGxC,U,0BC1JXC,GAAO,0BAaJ,SAASC,GAAQC,EAAIC,GAC1B,QAASC,GAASF,GAAIC,GAGxB,SAASC,GAASF,GAChB,OAAOA,EAAGF,MAAUE,EAAGF,IAAQ,IAYjC9iB,EAAA,KAAuB,CACrBxiC,KAAM,mBACN2lD,MAAO,oBACPt8B,OAAQ,UACP,WC9BH,IAAI,GAEJ,SAAU3T,GAGR,SAASkwC,EAAeJ,GACtB,IAAI1vC,EAAQJ,EAAOK,KAAK7Y,OAASA,KAEjC4Y,EAAM+vC,IAAML,EAEZ,IAAIM,EAAmB,kBAAKhwC,EAAMiwC,kBAAmBjwC,GACjDkwC,EAAmB,kBAAKlwC,EAAMmwC,kBAAmBnwC,GACjDowC,EAAiB,kBAAKpwC,EAAMqwC,gBAAiBrwC,GAC7CswC,EAAoB,kBAAKtwC,EAAMuwC,mBAAoBvwC,GACnDwwC,EAAe,kBAAKxwC,EAAMywC,cAAezwC,GA0C7C,OAnCAA,EAAM0wC,OAAS,SAAUC,EAAa1lD,GAEpC7D,KAAKwpD,UACLxpD,KAAKypD,KAAO,sBAAS,mBAAM5lD,IAAQ,GAAI,CACrC6lD,kBAAkB,EAClBC,iBAAiB,EAEjBC,kBAAkB,EAClBC,yBAAyB,IAGR,MAAfN,IACFA,GAAc,IAGI,IAAhBA,GAAwC,SAAhBA,GAA0C,QAAhBA,IACpDjB,EAAGjiB,GAAG,YAAauiB,GACnBN,EAAGjiB,GAAG,YAAayiB,GACnBR,EAAGjiB,GAAG,UAAW2iB,KAGC,IAAhBO,GAAwC,UAAhBA,GAA2C,SAAhBA,IACrDjB,EAAGjiB,GAAG,aAAc6iB,GACpBZ,EAAGjiB,GAAG,QAAS+iB,KAInBxwC,EAAM4wC,QAAU,WACdlB,EAAGh8B,IAAI,YAAas8B,GACpBN,EAAGh8B,IAAI,YAAaw8B,GACpBR,EAAGh8B,IAAI,UAAW08B,GAClBV,EAAGh8B,IAAI,aAAc48B,GACrBZ,EAAGh8B,IAAI,QAAS88B,IAGXxwC,EA2IT,OAhMA,gBAAU8vC,EAAgBlwC,GAwD1BkwC,EAAep+C,UAAUw/C,WAAa,WACpC,OAAO9pD,KAAK+pD,WAGdrB,EAAep+C,UAAU0/C,WAAa,WACpC,OAAOhqD,KAAKiqD,WAGdvB,EAAep+C,UAAU4/C,kBAAoB,SAAUC,GACrDnqD,KAAKmqD,eAAiBA,GAGxBzB,EAAep+C,UAAUkiB,QAAU,WACjCxsB,KAAKwpD,WAGPd,EAAep+C,UAAUu+C,kBAAoB,SAAUr7C,GACrD,IAAI,QAA6CA,GAAjD,CAIA,IAAI4M,EAAK5M,EAAEmM,OAEX,MAAOS,EAAI,CACT,GAAIA,EAAGyyB,UACL,OAIFzyB,EAAKA,EAAG+N,cAAgB/N,EAAGK,OAG7B,IAAIpE,EAAI7I,EAAE48C,QACN9zC,EAAI9I,EAAE68C,QAGNrqD,KAAKmqD,gBAAkBnqD,KAAKmqD,eAAe38C,EAAG6I,EAAGC,KACnDtW,KAAKu7B,GAAKllB,EACVrW,KAAKsqD,GAAKh0C,EACVtW,KAAK+pD,WAAY,KAIrBrB,EAAep+C,UAAUy+C,kBAAoB,SAAUv7C,GACrD,GAAKxN,KAAK+pD,WAAcQ,GAAoB,kBAAmB/8C,EAAGxN,KAAKypD,OAA4B,UAAnBj8C,EAAEg9C,eAA4B,GAAyBxqD,KAAK2oD,IAAK,aAAjJ,CAIA,IAAItyC,EAAI7I,EAAE48C,QACN9zC,EAAI9I,EAAE68C,QACNI,EAAOzqD,KAAKu7B,GACZmvB,EAAO1qD,KAAKsqD,GACZtpC,EAAK3K,EAAIo0C,EACTlpC,EAAKjL,EAAIo0C,EACb1qD,KAAKu7B,GAAKllB,EACVrW,KAAKsqD,GAAKh0C,EACVtW,KAAKypD,KAAKI,yBAA2B,QAAer8C,EAAEi7C,OACtDkC,GAAQ3qD,KAAM,MAAO,kBAAmBwN,EAAG,CACzCwT,GAAIA,EACJO,GAAIA,EACJkpC,KAAMA,EACNC,KAAMA,EACN/oC,KAAMtL,EACNu0C,KAAMt0C,EACNi0C,oBAAqB,SAIzB7B,EAAep+C,UAAU2+C,gBAAkB,SAAUz7C,GAC9C,QAA6CA,KAChDxN,KAAK+pD,WAAY,IAIrBrB,EAAep+C,UAAU6+C,mBAAqB,SAAU37C,GACtD,IAAIq9C,EAAaN,GAAoB,mBAAoB/8C,EAAGxN,KAAKypD,MAC7DqB,EAAaP,GAAoB,mBAAoB/8C,EAAGxN,KAAKypD,MAC7DsB,EAAav9C,EAAEu9C,WACfC,EAAqBj4C,KAAKmD,IAAI60C,GAC9BthC,EAAUjc,EAAE48C,QACZ1gC,EAAUlc,EAAE68C,QAEhB,GAAmB,IAAfU,IAAqBF,GAAeC,GAAxC,CAOA,GAAID,EAAY,CASd,IAAII,EAASD,EAAqB,EAAI,IAAMA,EAAqB,EAAI,IAAM,IACvEvgD,EAAQsgD,EAAa,EAAIE,EAAS,EAAIA,EAC1CC,GAAuBlrD,KAAM,OAAQ,mBAAoBwN,EAAG,CAC1D/C,MAAOA,EACPgf,QAASA,EACTC,QAASA,EACT6gC,oBAAqB,OAIzB,GAAIO,EAAY,CAEd,IAAIK,EAAWp4C,KAAKmD,IAAI60C,GAEpBK,GAAeL,EAAa,EAAI,GAAK,IAAMI,EAAW,EAAI,GAAMA,EAAW,EAAI,IAAO,KAC1FD,GAAuBlrD,KAAM,aAAc,mBAAoBwN,EAAG,CAChE49C,YAAaA,EACb3hC,QAASA,EACTC,QAASA,EACT6gC,oBAAqB,UAK3B7B,EAAep+C,UAAU++C,cAAgB,SAAU77C,GACjD,IAAI,GAAyBxN,KAAK2oD,IAAK,aAAvC,CAIA,IAAIl+C,EAAQ+C,EAAE69C,WAAa,EAAI,IAAM,EAAI,IACzCH,GAAuBlrD,KAAM,OAAQ,KAAMwN,EAAG,CAC5C/C,MAAOA,EACPgf,QAASjc,EAAE89C,OACX5hC,QAASlc,EAAE+9C,OACXhB,oBAAqB,SAIlB7B,EAjMT,CAkME8C,GAAA,MAEF,SAASN,GAAuBO,EAAYC,EAAWC,EAAiBn+C,EAAGo+C,GACrEH,EAAWtB,gBAAkBsB,EAAWtB,eAAe38C,EAAGo+C,EAAeniC,QAASmiC,EAAeliC,WAInG,QAAelc,EAAEi7C,OACjBkC,GAAQc,EAAYC,EAAWC,EAAiBn+C,EAAGo+C,IAIvD,SAASjB,GAAQc,EAAYC,EAAWC,EAAiBn+C,EAAGo+C,GAG1DA,EAAerB,oBAAsB,kBAAKA,GAAqB,KAAMoB,EAAiBn+C,GAEtFi+C,EAAWd,QAAQe,EAAWE,GAShC,SAASrB,GAAoBoB,EAAiBn+C,EAAGq+C,GAC/C,IAAIC,EAAUD,EAASF,GACvB,OAAQA,GAAmBG,KAAa,sBAASA,IAAYt+C,EAAEi7C,MAAMqD,EAAU,QAGlE,UCtOR,SAASC,GAAgBC,EAAgBhrC,EAAIO,GAClD,IAAI5H,EAASqyC,EAAeryC,OAC5BA,EAAOtD,GAAK2K,EACZrH,EAAOrD,GAAKiL,EACZ5H,EAAOysC,QAMF,SAAS6F,GAAiBD,EAAgBE,EAAWC,EAAOC,GACjE,IAAIzyC,EAASqyC,EAAeryC,OACxBqiC,EAAYgQ,EAAehQ,UAC3BqQ,EAAUL,EAAejQ,KAAOiQ,EAAejQ,MAAQ,EAG3D,GAFAsQ,GAAWH,EAEPlQ,EAAW,CACb,IAAIsQ,EAAUtQ,EAAUhlC,KAAO,EAC3Bu1C,EAAUvQ,EAAU/kC,KAAOmC,IAC/BizC,EAAUt5C,KAAKkE,IAAIlE,KAAKiE,IAAIu1C,EAASF,GAAUC,GAGjD,IAAIE,EAAYH,EAAUL,EAAejQ,KACzCiQ,EAAejQ,KAAOsQ,EAEtB1yC,EAAOtD,IAAM81C,EAAQxyC,EAAOtD,IAAMm2C,EAAY,GAC9C7yC,EAAOrD,IAAM81C,EAAQzyC,EAAOrD,IAAMk2C,EAAY,GAC9C7yC,EAAO2P,QAAUkjC,EACjB7yC,EAAO4P,QAAUijC,EACjB7yC,EAAOysC,QCjCT,IAAIqG,GAAsB,CACxB,YAAe,EACf,QAAW,EACX,MAAS,GAOJ,SAASC,GAAoBl/C,EAAG2P,EAAKwvC,GAC1C,IAAIpkC,EAAQpL,EAAIyvC,sBAAsBp/C,EAAEq/C,WAEpCjvC,EAAW2K,GAASA,EAAM1K,iBAC9B,OAAO0K,GAASA,IAAUokC,IAAwBF,GAAoBK,eAAevkC,EAAMnI,WAAaxC,GAAYA,EAAS2K,QAAUokC,E,iBCXrII,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAcC,GAAA,KACdC,GAAe,gBACfC,GAAUt6C,KAAKmD,IAEnB,SAASo3C,GAAqBC,EAAav1C,EAAQyF,GASjD,IARA,IAIIpO,EAJAsH,EAAK42C,EAAY,GACjB9X,EAAK8X,EAAY,GACjB92C,EAAK82C,EAAY,GACjB/zB,EAAIpgB,IAEJo0C,EAAe/vC,EAASA,EACxByX,EAAW,GAENu4B,EAAK,GAAKA,GAAM,GAAKA,GAAM,GAAK,CACvCV,GAAG,GAAKG,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIg3C,GACzCV,GAAG,GAAKG,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIg3C,GACzC,IAAIzhC,EAAOqhC,GAAQD,GAAaL,GAAI/0C,GAAUw1C,GAE1CxhC,EAAOwN,IACTA,EAAIxN,EACJ3c,EAAIo+C,GAMR,IAAK,IAAI3nD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE3B,IAAI4nD,EAAOr+C,EAAI6lB,EAGf83B,GAAG,GAAKE,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIpH,GACzC29C,GAAG,GAAKE,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIpH,GACzC49C,GAAG,GAAKC,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIi3C,GACzCT,GAAG,GAAKC,GAAYv2C,EAAG,GAAI8+B,EAAG,GAAIh/B,EAAG,GAAIi3C,GACrC1hC,EAAOohC,GAAaJ,GAAIh1C,GAAUw1C,EAEtC,GAAIH,GAAQrhC,GAAQ,IAClB,MAIF,IAAI2hC,EAAWP,GAAaH,GAAIj1C,GAAUw1C,EAC1Ct4B,GAAY,EAERlJ,EAAO,EACL2hC,GAAY,EACdt+C,GAAQ6lB,EAER7lB,GAAQ6lB,EAGNy4B,GAAY,EACdt+C,GAAQ6lB,EAER7lB,GAAQ6lB,EAKd,OAAO7lB,EAIM,SAASu+C,GAAWtd,EAAO7lC,GACxC,IAAIojD,EAAO,GACPC,EAAqBX,GAAA,KACrBhF,EAAM,CAAC,GAAI,GAAI,IACf4F,EAAO,CAAC,GAAI,IACZt8C,EAAI,GACRhH,GAAS,EACT6lC,EAAMiF,UAAS,SAAU3C,EAAM1pC,GAC7B,IAAI+X,EAAa2xB,EAAK9tB,YAClBkpC,EAAapb,EAAKjF,UAAU,cAC5BsgB,EAAWrb,EAAKjF,UAAU,YAEzB1sB,EAAWitC,aACdjtC,EAAWitC,WAAa,CAAC,WAAWjtC,EAAW,IAAK,WAAWA,EAAW,KAEtEA,EAAW,IACbA,EAAWitC,WAAWt9C,KAAK,WAAWqQ,EAAW,MAIrD,IAAIktC,EAAiBltC,EAAWitC,WAEhC,GAAqB,MAAjBjtC,EAAW,GAAY,CAKzB,GAJA,UAAUknC,EAAI,GAAIgG,EAAe,IACjC,UAAUhG,EAAI,GAAIgG,EAAe,IACjC,UAAUhG,EAAI,GAAIgG,EAAe,IAE7BH,GAA6B,SAAfA,EAAuB,CACvC,IAAItb,EAAa0D,EAAcxD,EAAKI,OAChC3jC,EAAIi+C,GAAqBnF,EAAKgG,EAAe,GAAIzb,EAAajoC,GAElEqjD,EAAmB3F,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAI94C,EAAGw+C,GACvD1F,EAAI,GAAG,GAAK0F,EAAK,GACjB1F,EAAI,GAAG,GAAK0F,EAAK,GACjBC,EAAmB3F,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAI94C,EAAGw+C,GACvD1F,EAAI,GAAG,GAAK0F,EAAK,GACjB1F,EAAI,GAAG,GAAK0F,EAAK,GAGnB,GAAII,GAAyB,SAAbA,EAAqB,CAC/Bvb,EAAa0D,EAAcxD,EAAKK,OAChC5jC,EAAIi+C,GAAqBnF,EAAKgG,EAAe,GAAIzb,EAAajoC,GAElEqjD,EAAmB3F,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAI94C,EAAGw+C,GACvD1F,EAAI,GAAG,GAAK0F,EAAK,GACjB1F,EAAI,GAAG,GAAK0F,EAAK,GACjBC,EAAmB3F,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAI94C,EAAGw+C,GACvD1F,EAAI,GAAG,GAAK0F,EAAK,GACjB1F,EAAI,GAAG,GAAK0F,EAAK,GAInB,UAAU5sC,EAAW,GAAIknC,EAAI,IAC7B,UAAUlnC,EAAW,GAAIknC,EAAI,IAC7B,UAAUlnC,EAAW,GAAIknC,EAAI,QAE1B,CAMD,GALA,UAAU4F,EAAK,GAAII,EAAe,IAClC,UAAUJ,EAAK,GAAII,EAAe,IAClC,SAAS18C,EAAGs8C,EAAK,GAAIA,EAAK,IAC1B,eAAet8C,EAAGA,GAEdu8C,GAA6B,SAAfA,EAAuB,CACnCtb,EAAa0D,EAAcxD,EAAKI,OACpC,iBAAiB+a,EAAK,GAAIA,EAAK,GAAIt8C,EAAGihC,EAAajoC,GAGrD,GAAIwjD,GAAyB,SAAbA,EAAqB,CAC/Bvb,EAAa0D,EAAcxD,EAAKK,OACpC,iBAAiB8a,EAAK,GAAIA,EAAK,GAAIt8C,GAAIihC,EAAajoC,GAGtD,UAAUwW,EAAW,GAAI8sC,EAAK,IAC9B,UAAU9sC,EAAW,GAAI8sC,EAAK,Q,iBCjItC,SAASK,GAAexwC,GACtB,MAAyB,SAAlBA,EAAS9a,KAGlB,IAAI,GAEJ,SAAU0V,GAGR,SAAS61C,IACP,IAAIz1C,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAGhE,OADA4Y,EAAM9V,KAAOurD,EAAUvrD,KAChB8V,EA4OT,OAlPA,gBAAUy1C,EAAW71C,GASrB61C,EAAU/jD,UAAUwiB,KAAO,SAAUnrB,EAASwb,GAC5C,IAAImxC,EAAa,IAAI,GACjB9G,EAAW,IAAI,GACf/7B,EAAQzrB,KAAKyrB,MACjBzrB,KAAKuuD,YAAc,IAAI,GAAepxC,EAAIqxC,SAC1CxuD,KAAKyuD,gBAAkB,CACrB90C,OAAQ8R,GAEVA,EAAMM,IAAIuiC,EAAW7iC,OACrBA,EAAMM,IAAIy7B,EAAS/7B,OACnBzrB,KAAK0uD,YAAcJ,EACnBtuD,KAAK2uD,UAAYnH,EACjBxnD,KAAK4uD,cAAe,GAGtBP,EAAU/jD,UAAU+gB,OAAS,SAAUhrB,EAAasB,EAASwb,GAC3D,IAAIvE,EAAQ5Y,KAER4d,EAAWvd,EAAYwd,iBAC3B7d,KAAK6uD,OAASxuD,EACd,IAAIiuD,EAAatuD,KAAK0uD,YAClBlH,EAAWxnD,KAAK2uD,UAChBljC,EAAQzrB,KAAKyrB,MAEjB,GAAI2iC,GAAexwC,GAAW,CAC5B,IAAIkxC,EAAe,CACjBz4C,EAAGuH,EAASvH,EACZC,EAAGsH,EAAStH,EACZgT,OAAQ1L,EAAS0L,OACjBC,OAAQ3L,EAAS2L,QAGfvpB,KAAK4uD,aACPnjC,EAAM1B,KAAK+kC,GAEX,QAAoBrjC,EAAOqjC,EAAczuD,GAK7CutD,GAAWvtD,EAAYmxC,WAAYsE,EAAmBz1C,IACtD,IAAI2E,EAAO3E,EAAYqP,UACvB4+C,EAAWvlC,WAAW/jB,GACtB,IAAIutC,EAAWlyC,EAAYmyC,cAE3BgV,EAASz+B,WAAWwpB,GAEpBvyC,KAAK+uD,0BAEL/uD,KAAKgvD,kBAAkB3uD,EAAasB,EAASwb,GAE7C8xC,aAAajvD,KAAKkvD,gBAClB,IAAInU,EAAc16C,EAAY06C,YAC1BoU,EAAkB9uD,EAAYC,IAAI,CAAC,QAAS,oBAE5Cy6C,GACF/6C,KAAKovD,2BAA2BrU,EAAaoU,GAG/C,IAAIrsC,EAASziB,EAAYC,IAAI,UAC7B0E,EAAKsrC,MAAM8E,UAAS,SAAUC,GAC5B,IAAInsC,EAAMmsC,EAAK9vC,UACX6U,EAAKi7B,EAAKsC,eACVlyB,EAAY4vB,EAAKzvB,WAErB,GAAKxL,EAAL,CAKAA,EAAGkS,IAAI,QAAQA,IAAI,WACnB,IAAIugB,EAAYpnB,EAAUnlB,IAAI,aAE1BusC,GACFzyB,EAAGisB,GAAG,QAAQ,SAAU74B,GACtB,OAAQsV,GACN,IAAK,QACHi4B,EAAYjC,UACXlgC,EAAMy2C,YAAcz2C,EAAMw2C,2BAA2BrU,EAAaoU,GACnEpU,EAAYhC,SAAS7vC,GAErBlE,EAAKya,cAAcvW,EAAK,CAACkR,EAAG/D,EAAG+D,EAAG9D,IAClC,MAEF,IAAK,WACHtR,EAAKya,cAAcvW,EAAK,CAACkR,EAAG/D,EAAG+D,EAAG9D,IAElC++B,EAAK91B,UAAU,CACbm4B,OAAO,IACN,GAEHpB,EAAej2C,EAAa,aAAcg1C,EAAM,CAAC7nC,EAAE48C,QAAS58C,EAAE68C,UAE9DzxC,EAAM4pC,aAAaniD,GAEnB,MAEF,IAAK,OACL,QACE2E,EAAKya,cAAcvW,EAAK,CAACkR,EAAG/D,EAAG+D,EAAG9D,IAElCg/B,EAAiBj1C,EAAYmxC,WAAYnxC,GAEzCuY,EAAM4pC,aAAaniD,GAEnB,UAEHgmC,GAAG,WAAW,WACX0U,GACFA,EAAY/B,WAAW9vC,MAK7BkR,EAAG4kC,aAAanS,KAAekO,IAAet1B,EAAUnlB,IAAI,WAC5D,IAAIq/C,EAAQl6B,EAAUnlB,IAAI,CAAC,WAAY,UAEzB,cAAVq/C,IACF,gBAAUvlC,GAAIulC,MAAQtK,EAAKia,8BAG/BtqD,EAAKsrC,MAAMiF,UAAS,SAAU3C,GAC5B,IAAIx4B,EAAKw4B,EAAK+E,eACVgI,EAAQ/M,EAAKhtB,WAAWtlB,IAAI,CAAC,WAAY,UAExC8Z,GAIS,cAAVulC,IACF,gBAAUvlC,GAAIulC,MAAQ,CACpB/M,KAAM,CAACA,EAAKrtC,WACZ8vC,KAAM,CAACzC,EAAKI,MAAMztC,UAAWqtC,EAAKK,MAAM1tC,gBAI9C,IAAIsxC,EAAoD,aAA9Bx2C,EAAYC,IAAI,WAA4BD,EAAYC,IAAI,CAAC,WAAY,gBAC/FiX,EAAKvS,EAAK8f,UAAU,MACpBtN,EAAKxS,EAAK8f,UAAU,MACxB9f,EAAKsrC,MAAM8E,UAAS,SAAUC,GAC5ByB,GAAgBzB,EAAMwB,EAAqBt/B,EAAIC,MAEjDxX,KAAK4uD,cAAe,GAGtBP,EAAU/jD,UAAUkiB,QAAU,WAC5BxsB,KAAKuuD,aAAevuD,KAAKuuD,YAAY/hC,UACrCxsB,KAAKyuD,gBAAkB,MAGzBJ,EAAU/jD,UAAU8kD,2BAA6B,SAAUrU,EAAaoU,GACtE,IAAII,EAAOvvD,MAEX,SAAUw0B,IACRumB,EAAYvmB,MAAK,SAAUsmB,GACzByU,EAAK/M,aAAa+M,EAAKV,SACtBU,EAAKF,YAAcvU,KAAaqU,EAAkBI,EAAKL,eAAiB9rB,WAAW5O,EAAM,IAAMA,SAHpG,IAQF65B,EAAU/jD,UAAU0kD,kBAAoB,SAAU3uD,EAAasB,EAASwb,GACtE,IAAIvE,EAAQ5Y,KAERyrD,EAAazrD,KAAKuuD,YAClBvC,EAAiBhsD,KAAKyuD,gBACtBhjC,EAAQzrB,KAAKyrB,MACjBggC,EAAWvB,mBAAkB,SAAU18C,EAAG6I,EAAGC,GAC3C,IAAI2C,EAAOwS,EAAMvS,kBAEjB,OADAD,EAAKwO,eAAegE,EAAM3U,WACnBmC,EAAK9C,QAAQE,EAAGC,KAAOo2C,GAAoBl/C,EAAG2P,EAAK9c,MAGvD+tD,GAAe/tD,EAAYwd,mBAKhC4tC,EAAWnC,OAAOjpD,EAAYC,IAAI,SAClC0rD,EAAehQ,UAAY37C,EAAYC,IAAI,cAC3C0rD,EAAejQ,KAAO17C,EAAYwd,iBAAiBq4B,UACnDuV,EAAWn/B,IAAI,OAAOA,IAAI,QAAQ+Z,GAAG,OAAO,SAAU74B,GACpD,GAA2Bw+C,EAAgBx+C,EAAEwT,GAAIxT,EAAE+T,IACnDpE,EAAIqyC,eAAe,CACjBC,SAAUpvD,EAAYkH,GACtBzE,KAAM,YACNke,GAAIxT,EAAEwT,GACNO,GAAI/T,EAAE+T,QAEP8kB,GAAG,QAAQ,SAAU74B,GACtB,GAA4Bw+C,EAAgBx+C,EAAE/C,MAAO+C,EAAEic,QAASjc,EAAEkc,SAClEvM,EAAIqyC,eAAe,CACjBC,SAAUpvD,EAAYkH,GACtBzE,KAAM,YACNi5C,KAAMvuC,EAAE/C,MACRgf,QAASjc,EAAEic,QACXC,QAASlc,EAAEkc,UAGb9Q,EAAMm2C,0BAENnB,GAAWvtD,EAAYmxC,WAAYsE,EAAmBz1C,IAEtDuY,EAAM+1C,UAAUnM,eAGhBrlC,EAAIuyC,wBAhCJjE,EAAWjC,WAoCf6E,EAAU/jD,UAAUykD,wBAA0B,WAC5C,IAAI1uD,EAAcL,KAAK6uD,OACnB7pD,EAAO3E,EAAYqP,UACnBymC,EAAYL,EAAmBz1C,GACnC2E,EAAKy9C,mBAAkB,SAAUroC,EAAIlR,GACnCkR,GAAMA,EAAG4mC,eAAe7K,OAI5BkY,EAAU/jD,UAAUk4C,aAAe,SAAUniD,GAC3CutD,GAAWvtD,EAAYmxC,WAAYsE,EAAmBz1C,IAEtDL,KAAK0uD,YAAYlM,eAEjBxiD,KAAK2uD,UAAUnM,gBAGjB6L,EAAU/jD,UAAUuhB,OAAS,SAAUlqB,EAASwb,GAC9Cnd,KAAK0uD,aAAe1uD,KAAK0uD,YAAY7iC,SACrC7rB,KAAK2uD,WAAa3uD,KAAK2uD,UAAU9iC,UAGnCwiC,EAAUvrD,KAAO,QACVurD,EAnPT,CAoPExxC,GAAA,MAEa,M,uCCxQf,SAAS8yC,GAAgBpoD,GACvB,MAAO,OAASA,EAGlB,IAAI,GAEJ,WACE,SAASqoD,EAAMC,GACb7vD,KAAK8C,KAAO,QACZ9C,KAAKq4C,MAAQ,GACbr4C,KAAKs4C,MAAQ,GACbt4C,KAAK8vD,UAAY,GAMjB9vD,KAAK+vD,UAAY,GACjB/vD,KAAKgwD,UAAYH,IAAY,EAkR/B,OA3QAD,EAAMtlD,UAAU2lD,WAAa,WAC3B,OAAOjwD,KAAKgwD,WAQdJ,EAAMtlD,UAAU4lD,QAAU,SAAU3oD,EAAIhC,GACtCgC,EAAW,MAANA,EAAa,GAAKhC,EAAY,GAAKgC,EACxC,IAAI4oD,EAAWnwD,KAAK8vD,UAEpB,IAAIK,EAASR,GAAgBpoD,IAA7B,CAQA,IAAI8tC,EAAO,IAAI+a,GAAU7oD,EAAIhC,GAI7B,OAHA8vC,EAAKgb,UAAYrwD,KACjBA,KAAKq4C,MAAMznC,KAAKykC,GAChB8a,EAASR,GAAgBpoD,IAAO8tC,EACzBA,IAQTua,EAAMtlD,UAAUuwC,eAAiB,SAAUt1C,GACzC,IAAI+qD,EAAStwD,KAAKgF,KAAKurD,YAAYhrD,GACnC,OAAOvF,KAAKq4C,MAAMiY,IAQpBV,EAAMtlD,UAAUkmD,YAAc,SAAUjpD,GACtC,OAAOvH,KAAK8vD,UAAUH,GAAgBpoD,KAQxCqoD,EAAMtlD,UAAUmmD,QAAU,SAAU/c,EAAIC,EAAIpuC,GAC1C,IAAI4qD,EAAWnwD,KAAK8vD,UAChBY,EAAW1wD,KAAK+vD,UAkBpB,GAhBI,cAAgBrc,KAClBA,EAAK1zC,KAAKq4C,MAAM3E,IAGd,cAAgBC,KAClBA,EAAK3zC,KAAKq4C,MAAM1E,IAGZD,aAAc0c,KAClB1c,EAAKyc,EAASR,GAAgBjc,KAG1BC,aAAcyc,KAClBzc,EAAKwc,EAASR,GAAgBhc,KAG3BD,GAAOC,EAAZ,CAIA,IAAIrtC,EAAMotC,EAAGnsC,GAAK,IAAMosC,EAAGpsC,GACvBqrC,EAAO,IAAI+d,GAAUjd,EAAIC,EAAIpuC,GAgBjC,OAfAqtC,EAAKyd,UAAYrwD,KAEbA,KAAKgwD,YACPtc,EAAGkd,SAAShgD,KAAKgiC,GACjBe,EAAGyE,QAAQxnC,KAAKgiC,IAGlBc,EAAG4E,MAAM1nC,KAAKgiC,GAEVc,IAAOC,GACTA,EAAG2E,MAAM1nC,KAAKgiC,GAGhB5yC,KAAKs4C,MAAM1nC,KAAKgiC,GAChB8d,EAASpqD,GAAOssC,EACTA,IAQTgd,EAAMtlD,UAAUuoC,eAAiB,SAAUttC,GACzC,IAAI+qD,EAAStwD,KAAKuyC,SAASge,YAAYhrD,GACvC,OAAOvF,KAAKs4C,MAAMgY,IAQpBV,EAAMtlD,UAAUumD,QAAU,SAAUnd,EAAIC,GAClCD,aAAc0c,KAChB1c,EAAKA,EAAGnsC,IAGNosC,aAAcyc,KAChBzc,EAAKA,EAAGpsC,IAGV,IAAImpD,EAAW1wD,KAAK+vD,UAEpB,OAAI/vD,KAAKgwD,UACAU,EAAShd,EAAK,IAAMC,GAEpB+c,EAAShd,EAAK,IAAMC,IAAO+c,EAAS/c,EAAK,IAAMD,IAS1Dkc,EAAMtlD,UAAU8qC,SAAW,SAAU8D,EAAI4X,GAIvC,IAHA,IAAIzY,EAAQr4C,KAAKq4C,MACb5gC,EAAM4gC,EAAMtyC,OAEPD,EAAI,EAAGA,EAAI2R,EAAK3R,IACnBuyC,EAAMvyC,GAAGP,WAAa,GACxB2zC,EAAGrgC,KAAKi4C,EAASzY,EAAMvyC,GAAIA,IAUjC8pD,EAAMtlD,UAAUirC,SAAW,SAAU2D,EAAI4X,GAIvC,IAHA,IAAIxY,EAAQt4C,KAAKs4C,MACb7gC,EAAM6gC,EAAMvyC,OAEPD,EAAI,EAAGA,EAAI2R,EAAK3R,IACnBwyC,EAAMxyC,GAAGP,WAAa,GAAK+yC,EAAMxyC,GAAGktC,MAAMztC,WAAa,GAAK+yC,EAAMxyC,GAAGmtC,MAAM1tC,WAAa,GAC1F2zC,EAAGrgC,KAAKi4C,EAASxY,EAAMxyC,GAAIA,IAWjC8pD,EAAMtlD,UAAUymD,qBAAuB,SAAU7X,EAAI8X,EAAW9lD,EAAW4lD,GAKzE,GAJME,aAAqBZ,KACzBY,EAAYhxD,KAAK8vD,UAAUH,GAAgBqB,KAGxCA,EAAL,CAMA,IAFA,IAAIC,EAAyB,QAAd/lD,EAAsB,WAA2B,OAAdA,EAAqB,UAAY,QAE1EpF,EAAI,EAAGA,EAAI9F,KAAKq4C,MAAMtyC,OAAQD,IACrC9F,KAAKq4C,MAAMvyC,GAAGorD,WAAY,EAG5B,IAAIhY,EAAGrgC,KAAKi4C,EAASE,EAAW,MAAhC,CAIA,IAAIG,EAAQ,CAACH,GAEb,MAAOG,EAAMprD,OACX,KAAIqrD,EAAcD,EAAMx4B,QACpB2f,EAAQ8Y,EAAYH,GAExB,IAASnrD,EAAI,EAAGA,EAAIwyC,EAAMvyC,OAAQD,IAAK,CACrC,IAAI0H,EAAI8qC,EAAMxyC,GACVurD,EAAY7jD,EAAEwlC,QAAUoe,EAAc5jD,EAAEylC,MAAQzlC,EAAEwlC,MAEtD,IAAKqe,EAAUH,UAAW,CACxB,GAAIhY,EAAGrgC,KAAKi4C,EAASO,EAAWD,GAE9B,OAGFD,EAAMvgD,KAAKygD,GACXA,EAAUH,WAAY,QAa9BtB,EAAMtlD,UAAU6hB,OAAS,WAMvB,IALA,IAAInnB,EAAOhF,KAAKgF,KACZutC,EAAWvyC,KAAKuyC,SAChB8F,EAAQr4C,KAAKq4C,MACbC,EAAQt4C,KAAKs4C,MAERxyC,EAAI,EAAG2R,EAAM4gC,EAAMtyC,OAAQD,EAAI2R,EAAK3R,IAC3CuyC,EAAMvyC,GAAGP,WAAa,EAGxB,IAASO,EAAI,EAAG2R,EAAMzS,EAAK0mB,QAAS5lB,EAAI2R,EAAK3R,IAC3CuyC,EAAMrzC,EAAKurD,YAAYzqD,IAAIP,UAAYO,EAGzCysC,EAASlyB,YAAW,SAAUnX,GAC5B,IAAI0pC,EAAO0F,EAAM/F,EAASge,YAAYrnD,IACtC,OAAO0pC,EAAKI,MAAMztC,WAAa,GAAKqtC,EAAKK,MAAM1tC,WAAa,KAG9D,IAASO,EAAI,EAAG2R,EAAM6gC,EAAMvyC,OAAQD,EAAI2R,EAAK3R,IAC3CwyC,EAAMxyC,GAAGP,WAAa,EAGxB,IAASO,EAAI,EAAG2R,EAAM86B,EAAS7mB,QAAS5lB,EAAI2R,EAAK3R,IAC/CwyC,EAAM/F,EAASge,YAAYzqD,IAAIP,UAAYO,GAS/C8pD,EAAMtlD,UAAUkd,MAAQ,WAKtB,IAJA,IAAI8oB,EAAQ,IAAIsf,EAAM5vD,KAAKgwD,WACvB3X,EAAQr4C,KAAKq4C,MACbC,EAAQt4C,KAAKs4C,MAERxyC,EAAI,EAAGA,EAAIuyC,EAAMtyC,OAAQD,IAChCwqC,EAAM4f,QAAQ7X,EAAMvyC,GAAGyB,GAAI8wC,EAAMvyC,GAAGP,WAGtC,IAASO,EAAI,EAAGA,EAAIwyC,EAAMvyC,OAAQD,IAAK,CACrC,IAAI0H,EAAI8qC,EAAMxyC,GACdwqC,EAAMmgB,QAAQjjD,EAAEwlC,MAAMzrC,GAAIiG,EAAEylC,MAAM1rC,GAAIiG,EAAEjI,WAG1C,OAAO+qC,GAIFsf,EA9RT,GAiSIQ,GAEJ,WACE,SAASA,EAAU7oD,EAAIhC,GACrBvF,KAAKo4C,QAAU,GACfp4C,KAAK4wD,SAAW,GAChB5wD,KAAKs4C,MAAQ,GACbt4C,KAAKuF,WAAa,EAClBvF,KAAKuH,GAAW,MAANA,EAAa,GAAKA,EAC5BvH,KAAKuF,UAAyB,MAAbA,GAAqB,EAAIA,EAyD5C,OAlDA6qD,EAAU9lD,UAAUgnD,OAAS,WAC3B,OAAOtxD,KAAKs4C,MAAMvyC,QAOpBqqD,EAAU9lD,UAAUinD,SAAW,WAC7B,OAAOvxD,KAAKo4C,QAAQryC,QAOtBqqD,EAAU9lD,UAAUknD,UAAY,WAC9B,OAAOxxD,KAAK4wD,SAAS7qD,QAGvBqqD,EAAU9lD,UAAUsb,SAAW,SAAU6U,GACvC,KAAIz6B,KAAKuF,UAAY,GAArB,CAIA,IAAI+qC,EAAQtwC,KAAKqwD,UACb5qC,EAAY6qB,EAAMtrC,KAAK0gB,aAAa1lB,KAAKuF,WAC7C,OAAOkgB,EAAUG,SAAS6U,KAG5B21B,EAAU9lD,UAAUglD,uBAAyB,WAM3C,IALA,IAAImC,EAAc,CAChB7e,KAAM,GACNyC,KAAM,IAGCvvC,EAAI,EAAGA,EAAI9F,KAAKs4C,MAAMvyC,OAAQD,IAAK,CAC1C,IAAI4rD,EAAe1xD,KAAKs4C,MAAMxyC,GAE1B4rD,EAAansD,UAAY,IAI7BksD,EAAY7e,KAAKhiC,KAAK8gD,EAAansD,WACnCksD,EAAYpc,KAAKzkC,KAAK8gD,EAAa1e,MAAMztC,UAAWmsD,EAAaze,MAAM1tC,YAGzE,OAAOksD,GAGFrB,EAhET,GAmEIO,GAEJ,WACE,SAASA,EAAUjd,EAAIC,EAAIpuC,GACzBvF,KAAKuF,WAAa,EAClBvF,KAAKgzC,MAAQU,EACb1zC,KAAKizC,MAAQU,EACb3zC,KAAKuF,UAAyB,MAAbA,GAAqB,EAAIA,EAqB5C,OAjBAorD,EAAUrmD,UAAUsb,SAAW,SAAU6U,GACvC,KAAIz6B,KAAKuF,UAAY,GAArB,CAIA,IAAI+qC,EAAQtwC,KAAKqwD,UACb5qC,EAAY6qB,EAAMiC,SAAS7sB,aAAa1lB,KAAKuF,WACjD,OAAOkgB,EAAUG,SAAS6U,KAG5Bk2B,EAAUrmD,UAAUglD,uBAAyB,WAC3C,MAAO,CACL1c,KAAM,CAAC5yC,KAAKuF,WACZ8vC,KAAM,CAACr1C,KAAKgzC,MAAMztC,UAAWvF,KAAKizC,MAAM1tC,aAIrCorD,EA1BT,GA6BA,SAASgB,GAA0BC,EAAUC,GAC3C,MAAO,CAILza,SAAU,SAAU0a,GAClB,IAAI9sD,EAAOhF,KAAK4xD,GAAUC,GAC1B,OAAO7sD,EAAKwjD,WAAWloD,IAAI0E,EAAKyiC,kBAAkBqqB,GAAa,SAAU9xD,KAAKuF,YAGhFotC,UAAW,SAAUrsC,EAAK8D,GACxBpK,KAAKuF,WAAa,GAAKvF,KAAK4xD,GAAUC,GAAU9f,cAAc/xC,KAAKuF,UAAWe,EAAK8D,IAErFujC,UAAW,SAAUrnC,GACnB,OAAOtG,KAAK4xD,GAAUC,GAAUjoC,cAAc5pB,KAAKuF,UAAWe,IAEhEiZ,UAAW,SAAUuD,EAAQivC,GAC3B/xD,KAAKuF,WAAa,GAAKvF,KAAK4xD,GAAUC,GAAUpyC,cAAczf,KAAKuF,UAAWud,EAAQivC,IAExFjtC,UAAW,WACT,OAAO9kB,KAAK4xD,GAAUC,GAAU/xC,cAAc9f,KAAKuF,YAErDoyC,aAAc,WACZ,OAAO33C,KAAK4xD,GAAUC,GAAUzsC,iBAAiBplB,KAAKuF,YAExDgrD,YAAa,WACX,OAAOvwD,KAAK4xD,GAAUC,GAAUtB,YAAYvwD,KAAKuF,aAQvD,WAAa6qD,GAAWuB,GAA0B,YAAa,SAC/D,WAAahB,GAAWgB,GAA0B,YAAa,aAChD,UC3aX//B,GAAQ,kBAEZ,SAASogC,GAAenuD,GACtB,IAAIouD,EAAWpuD,EAAIouD,SACfC,EAAQruD,EAAIquD,MAEXA,IACHA,EAAQ,CACNC,KAAMF,GAERpuD,EAAIuuD,UAAY,CACdD,KAAM,SAIVtuD,EAAIquD,MAAQruD,EAAIouD,SAAW,KAC3BI,GAAQJ,EAAUC,EAAOruD,GAEzB,kBAAKquD,GAAO,SAAUltD,GACpB,kBAAKitD,EAASK,sBAAsB,SAAUC,GAC5CvtD,EAAKwtD,WAAWD,EAAY,mBAAME,GAAmB5uD,UAIzDouD,EAASO,WAAW,eAAgB,mBAAME,GAAuB7uD,IAGjE,kBAAKouD,EAASU,mBAAmB,SAAUJ,GACzCN,EAASO,WAAWD,EAAY,mBAAMK,GAAiB/uD,OAGzD,oBAAOquD,EAAMD,EAASloB,YAAckoB,GAGtC,SAASQ,GAAkB5uD,EAAKgvD,GAC9B,GAAIC,GAAW9yD,MAAO,CAEpB,IAAIkyD,EAAQ,oBAAO,GAAItgC,GAAM5xB,MAAMkyD,OACnCA,EAAMlyD,KAAK+pC,UAAY8oB,EACvBR,GAAQQ,EAAKX,EAAOruD,QAGpBkvD,GAAWF,EAAK7yD,KAAK+pC,SAAUnY,GAAM5xB,MAAMiyD,SAAUpuD,GAGvD,OAAOgvD,EAGT,SAASD,GAAgB/uD,EAAKgvD,GAE5B,OADAhvD,EAAImvD,QAAUnvD,EAAImvD,OAAO7mC,SAClB0mC,EAGT,SAASH,GAAsB7uD,EAAKgvD,GAQlC,OAHA,kBAAKjhC,GAAMihC,GAAKX,OAAO,SAAUltD,EAAM+kC,GACrC/kC,IAAS6tD,GAAOE,GAAW/tD,EAAK+U,eAAgBgwB,EAAU8oB,EAAKhvD,MAE1DgvD,EAUT,SAASI,GAAclpB,GACrB,IAAIkoB,EAAWrgC,GAAM5xB,MAAMiyD,SAC3B,OAAmB,MAAZloB,GAAgC,MAAZkoB,EAAmBA,EAAWrgC,GAAMqgC,GAAUC,MAAMnoB,GAOjF,SAASmpB,KACP,IAAIjB,EAAWrgC,GAAM5xB,MAAMiyD,SAC3B,OAAmB,MAAZA,EAAmB,CAAC,CACzBjtD,KAAMitD,IACH,iBAAI,kBAAKrgC,GAAMqgC,GAAUC,QAAQ,SAAUpvD,GAC9C,MAAO,CACLA,KAAMA,EACNkC,KAAM4sB,GAAMqgC,GAAUC,MAAMpvD,OAKlC,SAASgwD,GAAW9tD,GAClB,OAAO4sB,GAAM5sB,GAAMitD,WAAajtD,EAGlC,SAASqtD,GAAQJ,EAAUC,EAAOruD,GAChC+tB,GAAMqgC,GAAUC,MAAQ,GACxB,kBAAKA,GAAO,SAAUltD,EAAM+kC,GAC1BgpB,GAAW/tD,EAAM+kC,EAAUkoB,EAAUpuD,MAIzC,SAASkvD,GAAW/tD,EAAM+kC,EAAUkoB,EAAUpuD,GAC5C+tB,GAAMqgC,GAAUC,MAAMnoB,GAAY/kC,EAClC4sB,GAAM5sB,GAAMitD,SAAWA,EACvBjtD,EAAK+kC,SAAWA,EAEZlmC,EAAImvD,SACNhuD,EAAKnB,EAAIsvD,YAActvD,EAAImvD,OAC3BnvD,EAAImvD,OAAOnvD,EAAIuuD,UAAUroB,IAAa/kC,GAIxCA,EAAKiuD,cAAgBA,GACrBjuD,EAAKkuD,iBAAmBA,GAGX,U,uCCpHA,SAASE,GAAwB/a,EAAOC,EAAOj4C,EAAawvD,EAAUwD,GAKnF,IAFA,IAAI/iB,EAAQ,IAAI,GAAMuf,GAEb/pD,EAAI,EAAGA,EAAIuyC,EAAMtyC,OAAQD,IAChCwqC,EAAM4f,QAAQ,cACd7X,EAAMvyC,GAAGyB,GAAI8wC,EAAMvyC,GAAGlD,KAAMkD,GAAIA,GAGlC,IAAIwtD,EAAe,GACfC,EAAa,GACbC,EAAY,EAEhB,IAAS1tD,EAAI,EAAGA,EAAIwyC,EAAMvyC,OAAQD,IAAK,CACrC,IAAI2tD,EAAOnb,EAAMxyC,GACbhC,EAAS2vD,EAAK3vD,OACd6V,EAAS85C,EAAK95C,OAEd22B,EAAMmgB,QAAQ3sD,EAAQ6V,EAAQ65C,KAChCD,EAAW3iD,KAAK6iD,GAChBH,EAAa1iD,KAAK,cAAgB,gBAAoB6iD,EAAKlsD,GAAI,MAAOzD,EAAS,MAAQ6V,IACvF65C,KAIJ,IACI9c,EADA94B,EAAWvd,EAAYC,IAAI,oBAG/B,GAAiB,gBAAbsd,GAA2C,UAAbA,EAChC84B,EAAW,OAAA/yC,GAAA,MAAiB00C,EAAOh4C,OAC9B,CACL,IAAIqzD,EAAejxD,GAAA,KAAiBnC,IAAIsd,GACpCrZ,EAAkBmvD,GAAeA,EAAa5xD,YAAmB,GAIjE,aAAeyC,EAAiB,SAAW,GAC7CA,EAAgBikC,OAAO,CAAC,UAG1B,IAAI1mC,EAAa,gBAAwBu2C,EAAO,CAC9C9zC,gBAAiBA,EACjBE,aAAcpE,EAAYqE,cACzB5C,WACH40C,EAAW,IAAIzxC,GAAA,KAAWnD,EAAYzB,GACtCq2C,EAAShxC,SAAS2yC,GAGpB,IAAI9F,EAAW,IAAIttC,GAAA,KAAW,CAAC,SAAU5E,GAkBzC,OAjBAkyC,EAAS7sC,SAAS6tD,EAAYD,GAC9BD,GAAcA,EAAW3c,EAAUnE,GACnC,GAAe,CACb0f,SAAUvb,EACVsc,OAAQ1iB,EACR6iB,WAAY,QACZjB,MAAO,CACL7c,KAAMqB,EACN9D,KAAML,GAER6f,UAAW,CACT/c,KAAM,OACNzC,KAAM,cAIVtC,EAAMnkB,SACCmkB,E,wDC/DL,GAEJ,SAAU93B,GAGR,SAASm7C,IACP,IAAI/6C,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAIhE,OAFA4Y,EAAM9V,KAAO6wD,EAAiB7wD,KAC9B8V,EAAMg7C,iBAAkB,EACjBh7C,EAkPT,OAzPA,gBAAU+6C,EAAkBn7C,GAU5Bm7C,EAAiBrpD,UAAUwiB,KAAO,SAAUtiB,GAC1CgO,EAAOlO,UAAUwiB,KAAK5B,MAAMlrB,KAAMmrB,WAElC,IAAIokC,EAAOvvD,KAEX,SAASuxC,IACP,OAAOge,EAAKsE,gBAId7zD,KAAK+sB,qBAAuB,IAAIC,GAAA,KAAqBukB,EAAmBA,GACxEvxC,KAAK8zD,kBAAkBtpD,EAAO8tC,OAAS9tC,EAAOupD,OAE9C/zD,KAAKg0D,yBAGPL,EAAiBrpD,UAAU6iB,YAAc,SAAU3iB,GACjDgO,EAAOlO,UAAU6iB,YAAYjC,MAAMlrB,KAAMmrB,WAEzCnrB,KAAK8zD,kBAAkBtpD,EAAO8tC,OAAS9tC,EAAOupD,OAE9C/zD,KAAKg0D,yBAGPL,EAAiBrpD,UAAU2pD,qBAAuB,SAAUzpD,GAC1DgO,EAAOlO,UAAU2pD,qBAAqB/oC,MAAMlrB,KAAMmrB,WAElD,gBAAgB3gB,EAAQ,YAAa,CAAC,UAGxCmpD,EAAiBrpD,UAAU8iB,eAAiB,SAAU5iB,EAAQ7I,GAC5D,IAAI22C,EAAQ9tC,EAAO8tC,OAAS9tC,EAAOupD,OAAS,GACxC1b,EAAQ7tC,EAAOxF,MAAQwF,EAAO6tC,OAAS,GACvCkX,EAAOvvD,KAEX,GAAIq4C,GAASC,EAAO,CAElBlE,EAAkBp0C,MAClB,IAAIswC,EAAQ8iB,GAAwB/a,EAAOC,EAAOt4C,MAAM,EAAMqzD,GAI9D,OAHA,UAAY/iB,EAAMgI,OAAO,SAAU1F,GACjCyB,EAA0BzB,EAAKI,MAAOJ,EAAKK,MAAOjzC,KAAM4yC,EAAKrtC,aAC5DvF,MACIswC,EAAMtrC,KAGf,SAASquD,EAAW3c,EAAUnE,GAE5BmE,EAAS8b,WAAW,gBAAgB,SAAUjqC,GAC5C,IAAI2rC,EAAmB3E,EAAK4E,kBACxBjiB,EAAc3pB,EAAMa,WAAW,YAC/BgrC,EAAgBF,EAAiBhiB,GAOrC,OALIkiB,IACFA,EAAcC,YAAc9rC,EAAM8rC,YAClC9rC,EAAM8rC,YAAcD,GAGf7rC,KAGT,IAAI+rC,EAAc5+C,GAAA,KAAMpL,UAAUsb,SAElC,SAAS2uC,EAAY95B,EAAM45B,GACzB,IAAI9rC,EAAQ+rC,EAAYz7C,KAAK7Y,KAAMy6B,EAAM45B,GAEzC,OADA9rC,EAAMisC,kBAAoBA,EACnBjsC,EAST,SAASisC,EAAkBC,GACzB,GAAIA,IAA2B,UAAfA,EAAQ,IAAiC,UAAfA,EAAQ,IAAiB,CACjE,IAAIC,EAAaD,EAAQ1yD,QAQzB,MANmB,UAAf0yD,EAAQ,GACVC,EAAW,GAAK,YACQ,UAAfD,EAAQ,KACjBC,EAAW,GAAK,aAGXA,EAGT,OAAOD,EAnBTliB,EAASigB,WAAW,gBAAgB,SAAUjqC,GAG5C,OAFAA,EAAMisC,kBAAoBA,EAC1BjsC,EAAM3C,SAAW2uC,EACVhsC,OAqBborC,EAAiBrpD,UAAUknC,SAAW,WACpC,OAAOxxC,KAAK0P,UAAU4gC,OAGxBqjB,EAAiBrpD,UAAUkoC,YAAc,WACvC,OAAOxyC,KAAKwxC,WAAWe,UAGzBohB,EAAiBrpD,UAAUinC,kBAAoB,WAC7C,OAAOvxC,KAAK6zD,iBAGdF,EAAiBrpD,UAAUqqD,cAAgB,SAAUpvD,EAAWqvD,EAAgB7qB,GAC9E,GAAiB,SAAbA,EAAqB,CACvB,IAAI2M,EAAW12C,KAAK0P,UAChB8d,EAASxtB,KAAKutB,cAAchoB,EAAWwkC,GACvC6I,EAAO8D,EAASpG,MAAMuC,eAAettC,GACrCsvD,EAAane,EAASp2B,QAAQsyB,EAAKI,MAAMztC,WACzCuvD,EAAape,EAASp2B,QAAQsyB,EAAKK,MAAM1tC,WACzCwvD,EAAU,GAGd,OAFc,MAAdF,GAAsBE,EAAQnkD,KAAKikD,GACrB,MAAdC,GAAsBC,EAAQnkD,KAAKkkD,GAC5B,gBAAoB,YAAa,CACtClyD,KAAMmyD,EAAQztB,KAAK,OACnBl9B,MAAOojB,EAAOpjB,MACd4qD,QAAyB,MAAhBxnC,EAAOpjB,QAKpB,IAAI6qD,EAAa,gBAA2B,CAC1CnvB,OAAQ9lC,KACRuF,UAAWA,EACXqvD,eAAgBA,IAElB,OAAOK,GAGTtB,EAAiBrpD,UAAU0pD,sBAAwB,WACjD,IAAIkB,EAAa,SAAWl1D,KAAKwK,OAAO0qD,YAAc,IAAI,SAAUxjB,GAElE,OAAyB,MAAlBA,EAAStnC,MAAgBsnC,EAAW,YAAc,CACvDtnC,MAAO,GACNsnC,MAEDJ,EAAiB,IAAIrsC,GAAA,KAAW,CAAC,SAAUjF,MAC/CsxC,EAAe5rC,SAASwvD,GACxBl1D,KAAK6zD,gBAAkBviB,EACvBtxC,KAAKm0D,kBAAoB7iB,EAAezK,UAAS,SAAU39B,GACzD,OAAOooC,EAAe5rB,aAAaxc,OAIvCyqD,EAAiBrpD,UAAUwxC,QAAU,SAAUC,GAC7C/7C,KAAKwK,OAAOuxC,KAAOA,GAGrB4X,EAAiBrpD,UAAUyN,UAAY,SAAUC,GAC/ChY,KAAKwK,OAAOwN,OAASA,GAGvB27C,EAAiBrpD,UAAU+iC,mBAAqB,WAC9C,OAAO70B,EAAOlO,UAAU+iC,mBAAmBx0B,KAAK7Y,SACpB,UAAvBA,KAAKM,IAAI,WAAyBN,KAAKM,IAAI,CAAC,QAAS,sBAG5DqzD,EAAiB7wD,KAAO,eACxB6wD,EAAiBwB,aAAe,CAAC,OAAQ,QAAS,MAAO,aAAc,YACvExB,EAAiB5lC,cAAgB,CAE/BC,EAAG,EACHnQ,iBAAkB,OAMlBoQ,iBAAiB,EACjBnL,OAAQ,KAERsyC,SAAU,CACRC,aAAa,GAGfC,MAAO,CACLrb,WAAY,KAEZI,UAAW,CAAC,EAAG,IACf9B,QAAS,GAETM,SAAU,GAEVyB,WAAY,GACZ6U,iBAAiB,GAEnB7gC,KAAM,SACNC,IAAK,SAKL22B,OAAQ,SACRxS,WAAY,GACZ6iB,WAAY,CAAC,OAAQ,QACrBC,eAAgB,GAChBC,UAAW,CACT30C,SAAU,SACVoY,SAAU,GAEZ2T,WAAW,EACXiQ,MAAM,EAEN9kC,OAAQ,KACR+jC,KAAM,EAENhG,eAAgB,GAUhBjnC,MAAO,CACLgf,MAAM,EACN4nC,UAAW,OAEb3mC,UAAW,GACXD,UAAW,CACTM,MAAO,OACP1mB,MAAO,EACP4hB,QAAS,IAEXuD,SAAU,CACRpjB,OAAO,EACPqE,MAAO,CACLgf,MAAM,IAGVviB,OAAQ,CACNwjB,UAAW,CACTiX,YAAa,aAIZ2tB,EA1PT,CA2PEh3C,GAAA,MAEag5C,GAAA,GC3Qf,SAASC,GAAeC,EAAM/3C,GAE5B,OAAO+3C,EAAKC,iBAAmBD,EAAKC,iBAAiBh4C,GAAS+3C,EAAK5+B,YAAYnZ,GAG1E,SAASi4C,GAAoBF,EAAMvqC,EAAS0wB,EAAW7+B,GAC5D,IAAI64C,EAAeH,EAAK3f,UACpBl+B,EAAS69C,EAAK39C,YACd6jC,EAAOzwB,EAAQywB,KACfj+B,EAAQ+3C,EAAKI,iBAAmBJ,EAAKI,iBAAiBj+C,GAAU69C,EAAK93C,YAAY/F,GAQrF,GANkB,MAAdsT,EAAQtK,IAA4B,MAAdsK,EAAQ/J,KAChCzD,EAAM,IAAMwN,EAAQtK,GACpBlD,EAAM,IAAMwN,EAAQ/J,GACpBs0C,EAAK99C,UAAU69C,GAAeC,EAAM/3C,GAAQX,IAGlC,MAAR4+B,EAAc,CAChB,GAAIC,EAAW,CACb,IAAIsQ,EAAUtQ,EAAUhlC,KAAO,EAC3Bu1C,EAAUvQ,EAAU/kC,KAAOmC,IAC/B2iC,EAAOhpC,KAAKkE,IAAIlE,KAAKiE,IAAIg/C,EAAeja,EAAMwQ,GAAUD,GAAW0J,EAIrEH,EAAKvsC,QAAUyyB,EACf8Z,EAAKtsC,QAAUwyB,EACf,IAAIma,GAAQ5qC,EAAQ7B,QAAUosC,EAAKx/C,IAAM0lC,EAAO,GAC5Coa,GAAQ7qC,EAAQ5B,QAAUmsC,EAAKv/C,IAAMylC,EAAO,GAChD8Z,EAAKx/C,GAAK6/C,EACVL,EAAKv/C,GAAK6/C,EACVN,EAAKnZ,kBAELmZ,EAAK99C,UAAU69C,GAAeC,EAAM/3C,GAAQX,GAC5C04C,EAAK/Z,QAAQC,EAAOia,GAGtB,MAAO,CACLh+C,OAAQ69C,EAAK39C,YACb6jC,KAAM8Z,EAAK3f,WC3Bf,IAAIkgB,GAAa,CACftzD,KAAM,YACN2lD,MAAO,YACPt8B,OAAQ,QAEH,SAAS,GAAQ+D,GACtBA,EAAUC,kBAAkB,IAC5BD,EAAUE,oBAAoBulC,IAC9BzlC,EAAUK,kBAAkB6gB,GAC5BlhB,EAAUmmC,eAAe1kB,GACzBzhB,EAAUmmC,eAAe,GACzBnmC,EAAUI,eAAe,GACzBJ,EAAUI,eAAeJ,EAAUomC,SAASC,OAAOC,kBAAmB,IACtEtmC,EAAUI,eAAe,IACzBJ,EAAUumC,yBAAyB,YAAa,CAC9C30D,WAAY,GAAKA,WACjB40D,OAAQ,KAGVxmC,EAAUG,eAAe,CACvBvtB,KAAM,qBACN2lD,MAAO,qBACPt8B,OAAQ,6BACP,WACH+D,EAAUG,eAAe,CACvBvtB,KAAM,uBACN2lD,MAAO,uBACPt8B,OAAQ,+BACP,WAEH+D,EAAUG,eAAe+lC,IAAY,SAAU9qC,EAAS3pB,EAASwb,GAC/Dxb,EAAQg1D,cAAc,CACpBv2C,SAAU,SACVw2C,MAAOtrC,IACN,SAAUjrB,GACX,IAAIud,EAAWvd,EAAYwd,iBACvBg1C,EAAMkD,GAAoBn4C,EAAU0N,OAASurC,EAAW15C,GAC5D9c,EAAY0X,WAAa1X,EAAY0X,UAAU86C,EAAI76C,QACnD3X,EAAYy7C,SAAWz7C,EAAYy7C,QAAQ+W,EAAI9W,Y,iBC1FrD,MACM/1C,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAED,MAAO,kBACtBE,GAAa,CAAEF,MAAO,2BA8CAM,oCAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACLwqC,OAAQ,KACRtB,OAAQ,MAEV9oC,MAAO,CAAC,gBACRC,MAAMC,GAAc,KAAEC,IAExB,MAAMP,EAAQM,EAKbu+B,OAAY,CACXwxB,OACA5xB,OACA6xB,OACAC,GACA5xB,UAGF,MAAM6xB,EAA2B/vD,kBAAI,GACpC,IAAIgwD,EAAgBhwD,iBAAI,MAKxB,MAAMiwD,EAAahwD,sBAASV,EAAMwqC,QAC5BtB,EAASzoC,iBAAIT,EAAMkpC,QAEnBynB,EAAYlwD,kBAAI,GAChBmwD,EAAanwD,kBAAI,GACjBowD,EAAiBpwD,kBAAI,GACrB4gC,EAAiB5gC,iBAAI,IACrBqwD,EAAcrwD,iBAAI,IAGlBswD,GAFkBtwD,iBAAI,GACLA,iBAAI,GACNA,iBAAI,KAGnBgD,EAAe,KACpBlD,EAAK,iBAGAywD,EAAkBnwD,IACvB+vD,EAAWjtD,OAAQ,EACnB09B,EAAe19B,MAAQ9C,EAAItC,MAItB0yD,EAAkBpwD,IACvBgwD,EAAeltD,OAAQ,EACvB09B,EAAe19B,MAAQ9C,GAElBL,EAAYE,sBAAS,CAC1B,CAAE2B,MAAO,MACT,CAAEA,MAAO,MACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QAET,CAAEA,MAAO,OACT,CAAEA,MAAO,MACT,CAAEA,MAAO,QAGJ6uD,EAAc,KACnBP,EAAUhtD,OAAQ,EAClBwtD,gBAAY,CACX5yD,KAAM,CACL6yD,MAAOV,EAAW5qD,SACTurD,MAAOX,EAAWtqD,OAC3BkrD,QAASZ,EAAWzmB,OAASymB,EAAWzmB,OAAS,GACjDf,OAAQA,EAAOvlC,MACf2F,QAAQ,IAAIrD,MAAOC,aAGnB2B,KAAMtJ,IACN,IAAIgzD,EAAU,GACdhzD,EAAKizD,MAAM7oD,QAAQ,CAACC,EAAQnG,KAC3B8uD,GAAW3oD,EAAE6oD,SAAW7oD,EAAE8oD,IAAM9oD,EAAEozB,KAAO,MAE1C80B,EAAYntD,MAAQ4tD,EAAQj2D,MAAM,EAAGi2D,EAAQjyD,OAAS,GAEtDyxD,EAAQptD,MAAQpF,EAAKozD,IACrB,MAAMvyD,EAAM2xD,EAAQptD,MAAMrE,OAASyxD,EAAQptD,MAAQ,GAGnDotD,EAAQptD,MAAMiH,IAAKhK,IAClB,IAAIgxD,EAAY,GAChBhxD,EAAKixD,KAAKlpD,QAAQ,CAACC,EAAQnG,KAC1BmvD,GAAahpD,EAAE6oD,SAAW7oD,EAAE8oD,IAAM9oD,EAAEozB,KAAO,MAE5Cp7B,EAAK2wD,QAAUK,EAAUt2D,MAAM,EAAGi2D,EAAQjyD,OAAS,KAEpD,IAAIwyD,EAAoB,CACvB,UACA,SACA,cACA,cACA,MACA,aACA,WACA,SACA,UACA,KACA,UAED1yD,EAAIuJ,QAAQ,CAACC,EAAQvJ,KACpBmB,EAAUoK,IAAI,CAAC7D,EAAQtE,KACX,GAAPA,GACHsE,EAAE,SAAW1H,GAAKuJ,EAAEmpD,YAAcnpD,EAAEkpD,EAAQrvD,IAAQ,IAAMmG,EAAEmpD,YAAc,IAAMnpD,EAAEkpD,EAAQrvD,IAC1FsE,EAAE,KAAO1H,GAAKuJ,EAAE9H,GAChBiG,EAAE,SAAW1H,GAAKuJ,EAAE5H,OACpB+F,EAAE,YAAc1H,GAAKuJ,EAAEk5B,WAER,GAAPr/B,GACRsE,EAAE,SAAW1H,GAAKuJ,EAAEkpD,EAAQrvD,IAC5BsE,EAAE,KAAO1H,GAAKuJ,EAAE9H,GAChBiG,EAAE,SAAW1H,GAAKuJ,EAAE5H,OACpB+F,EAAE,YAAc1H,GAAKuJ,EAAEk5B,WAEvB/6B,EAAE,SAAW1H,GADI,GAAPoD,EACQmG,EAAEe,MAAQf,EAAEkpD,EAAQrvD,IAAQ,IAAMmG,EAAEe,MAAQ,IAAMf,EAAEkpD,EAAQrvD,IAC7D,GAAPA,GACQmG,EAAEopD,aAAeppD,EAAEkpD,EAAQrvD,IAAQ,IAAMmG,EAAEopD,aAAe,IAK1DppD,EAAEkpD,EAAQrvD,QAI/BkuD,EAAUhtD,OAAQ,IAElBoE,MAAM,SAETmpD,IACA,MAAMe,EAAa,KAClBzB,EAAW7sD,OAAS6sD,EAAW7sD,MAC1B6sD,EAAW7sD,OACfuuD,gBAAgB,CACf3zD,KAAM,CACL6yD,MAAOV,EAAW5qD,SACTurD,MAAOX,EAAWtqD,OAC3BkrD,QAASZ,EAAWzmB,OAASymB,EAAWzmB,OAAS,GACjD3gC,QAAQ,IAAIrD,MAAOC,aAElB2B,KAAMsqD,IACR,IAEIpuD,EAFAg7B,EAAUF,OAAa4xB,EAAS9sD,OACpCo7B,EAAQqzB,cAER,IAAI7/C,EAAmC,GAA5B4/C,EAAYloB,OAAO3qC,OAAc,GAC5CiT,EAAOA,EAAO,IAAM,IAAOA,EAAO,IAAM,IAAMA,EAC9C,MAAMs3B,EAAmBnpC,sBAAS,CACjCkxC,MAAO,GACP0b,MAAO,KAGRzjB,EAAM+H,MAAMznC,KAAK,CAChBrJ,GAAIqxD,EAAYE,KAChBl2D,KAAMg2D,EAAYloB,OAClBtmC,MAAOwuD,EAAYloB,OACnBI,SAAU8nB,EAAY9nB,SACtBC,OAAQ6nB,EAAY7nB,OAAS,EAAI,KAAO6nB,EAAY7nB,OACpDltB,QAAS,UACT6uB,WAAY,MAEbkmB,EAAYG,IAAI3pD,QAAQ,CAACC,EAAQnG,KAChC,IAAI8P,EAAyB,GAAlB3J,EAAEgD,OAAOtM,OAAc,GAClCiT,EAAOA,EAAO,IAAM,IAAOA,EAAO,IAAM,IAAMA,EAC9Cs3B,EAAM+H,MAAMznC,KAAK,CAChBrJ,GAAI8H,EAAE2pD,KACNp2D,KAAMyM,EAAEgD,OACRjI,MAAOiF,EAAEgD,OACTy+B,SAAUzhC,EAAEyhC,SACZC,OAAQ1hC,EAAE0hC,OAAS,EAAI,KAAO1hC,EAAE0hC,OAChCltB,QAAS,UACT6uB,WAAY15B,IAEbs3B,EAAMyjB,MAAMnjD,KAAK,CAChB9M,OAAQuL,EAAE2pD,KACVr/C,OAAQi/C,EAAYE,OAErBzpD,EAAE4pD,QAAQ7pD,QAAQ,CAAC5B,EAAQ1H,KAC1B,IAAIkT,EAA8B,GAAvBxL,EAAE0rD,YAAYnzD,OAAc,GACvCiT,EAAOA,EAAO,IAAM,IAAOA,EAAO,IAAM,IAAMA,EAC9Cs3B,EAAM+H,MAAMznC,KAAK,CAChBrJ,GAAIiG,EAAE2C,UACNvN,KAAM4K,EAAE0rD,YACR9uD,MAAOoD,EAAE0rD,YACTpoB,SAAUtjC,EAAEsjC,SACZC,OAAQvjC,EAAEujC,OAAS,EAAI,KAAOvjC,EAAEujC,OAChC2B,WAAY15B,EACZ6K,QAAS,UACTuL,MAAO,SAERkhB,EAAMyjB,MAAMnjD,KAAK,CAChB9M,OAAQ0J,EAAE2C,UACVwJ,OAAQtK,EAAE2pD,WAIbxzB,EAAQ2zB,cAER3uD,EAAS,CACR4uD,QAAS,CACR1D,UAAU7tD,GACT,MAAuB,QAAhBA,EAAIkiC,SAAqBliC,EAAIjF,KAAO,KAG7Cy2D,OAAQ,GACRvzB,OAAQ,CACP,CACCljC,KAAM,GACNE,KAAM,QACNggB,OAAQ,QACR9d,KAAMsrC,EAAM+H,MACZ0b,MAAOzjB,EAAMyjB,MACbjX,MAAM,EACNjQ,WAAW,EACX/9B,MAAO,CACNgf,MAAM,EACNwrC,gBAAiB,OACjBlqC,MAAO,OACPsW,SAAU,OACV5kB,SAAU,SACV40C,UAAW,EAAG1wD,UACN,GAAGA,EAAKpC,YAAYoC,EAAK8rC,iBAAgC,MAAf9rC,EAAK+rC,OAAiB,KAAO/rC,EAAK+rC,OAAS,OAK9FhiB,UAAW,CACVK,MAAQ5B,GACAA,EAAOxoB,KAAK6e,SAAW,WAMhCyxC,MAAO,CACNjb,UAAW,KAMZvrB,UAAY,CACXM,MAAO,UACWtsB,KAAM,QACxB4F,MAAO,EACP8sC,UAAW,OAMfhQ,EAAQY,UAAU57B,MAOtB,MAAO,CAACzC,EAAUC,KAChB,MAAMyL,EAAuBvL,8BAAkB,aACzC0L,EAAuB1L,8BAAkB,aACzCkhC,EAAoBlhC,8BAAkB,UACtCmhC,EAAoBnhC,8BAAkB,UACtCwL,EAAqBxL,8BAAkB,WACvCyL,EAA0BzL,8BAAkB,gBAC5C4L,EAAqBC,8BAAkB,WAE7C,OAAQ3L,yBAAcC,gCAAoB,MAAOrC,GAAY,CAC3DsC,yBAAaqL,EAAyB,KAAM,CAC1CnL,QAASC,qBAAS,IAAM,CACtBH,yBAAamL,EAAsB,KAAM,CACvCjL,QAASC,qBAAS,IAAM,CACtBH,yBAAaixD,OAAU,CACrBC,cAAetvD,EACfH,WAAY,OACZC,YAAamtD,EAAWzmB,QACvB,KAAM,EAAG,CAAC,kBAEf3nC,EAAG,IAEL+L,6BAAiB1M,yBAAce,yBAAauK,EAAoB,KAAM,CACpElL,QAASC,qBAAS,IAAM,CACtB0B,gCAAoB,MAAOjE,GAAY,CACrC0C,6BAAiBC,6BAAiBsuD,EAAWzmB,QAAU,UAAW,GAClEvmC,gCAAoB,OAAQ,KAAMtB,6BAAiBsuD,EAAWrmB,UAAY,IAAK,GAC/EloC,6BAAiB,UACjBuB,gCAAoB,OAAQ,KAAMtB,6BAAiBsuD,EAAWpmB,QAAU,EAAIomB,EAAWpmB,OAAU,IAAM,MAAO,GAC9G5mC,gCAAoB,MAAOhE,GAAY,CACrCmC,yBAAasL,EAAsB,CACjC9Q,KAAM,UACNwG,QAASovD,GACR,CACDlwD,QAASC,qBAAS,IAAM,CACtBG,6BAAiB,UAEnBG,EAAG,QAITT,yBAAa+gC,EAAmB,CAC9BpjC,MAAO,qBACPsjC,OAAQ,IACP,CACD/gC,QAASC,qBAAS,IAAM,CACtBH,yBAAa8gC,EAAmB,CAAEI,KAAM,IAAM,CAC5ChhC,QAASC,qBAAS,IAAM,CACrBwuD,EAAW7sD,OACPhC,yBAAce,yBAAaswD,OAAW,CACrCnzD,IAAK,EACLM,UAAW,IACXF,UAAWO,EACXN,SAAU6wD,EAAQptD,MAAMrE,OACxB2zD,iBAAkBhC,EAClBiC,iBAAkBlC,GACjB,KAAM,EAAG,CAAC,YAAa,eACzBrvD,yBAAcC,gCAAoB,MAAO,CACxC/B,IAAK,EACLL,MAAO,mBACPsgC,QAAS,WACTr/B,IAAKgwD,GACJ,KAAM,QAEfnuD,EAAG,MAGPA,EAAG,MAGPA,EAAG,KACA,CACH,CAAC+K,EAAoBsjD,EAAUhtD,SAEjC9B,yBAAayM,OAAW,CACtB9J,WAAYosD,EAAWjtD,MACvB,sBAAuBpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB8tD,EAAYjtD,MAAQb,GACxFyC,OAAQ87B,EAAe19B,MAAM7C,GAC7BE,OAAQqgC,EAAe19B,MAAM3C,QAC5B,KAAM,EAAG,CAAC,aAAc,SAAU,WACrCa,yBAAasxD,OAAY,CACvB/xB,cAAeyvB,EAAeltD,MAC9B,yBAA0BpC,EAAO,KAAOA,EAAO,GAAMuB,GAAkB+tD,EAAgBltD,MAAQb,GAC/Fu+B,eAAgBA,EAAe19B,OAC9B,KAAM,EAAG,CAAC,gBAAiB,qBAEhCrB,EAAG,U,oCC/YT,MAAMe,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,aCLf,MACM9D,GAAa,CACjBuB,GAAI,SACJL,IAAK,UAgCqBX,oCAAiB,CAC3CC,OAAQ,yBACRC,MAAO,CACL6pC,MAAO,MAETxpC,MAAMC,GAER,MAAMN,EAAQM,EAIdu+B,OAAY,CACVwxB,OACA5xB,OACA6xB,OACAC,GACA5xB,UAIE,MAAMkL,EAAmBnpC,sBAASV,EAAM6pC,OAAS,CAC7C+H,MAAO,GACP0b,MAAO,KAEL8F,EAAa,KAEfv1B,sBAAS,KACL,IAEI95B,EAFAsvD,EAAWt2B,SAASu2B,eAAe,UACnCv0B,EAAUF,OAAaw0B,GAI3BtvD,EAAS,CAOL4uD,QAAS,CACL1D,UAAW1wD,IACP,IAAIg1D,EAAM,GAaV,OAZGh1D,EAAKA,KAAKoF,QACT4vD,GAAOh1D,EAAKA,KAAKoF,OAElBpF,EAAKA,KAAK8rC,WACTkpB,GAAO,WAAah1D,EAAKA,KAAK8rC,eAEX+lB,GAApB7xD,EAAKA,KAAK+rC,SACTipB,GAAO,aAAoC,GAAtBh1D,EAAKA,KAAK+rC,OAAgB,KAAQ/rC,EAAKA,KAAK+rC,OAAS,MAKvEipB,IAGfX,OAAQ,GACRvzB,OAAQ,CACR,CACIljC,KAAM,GACNE,KAAM,QACNggB,OAAQ,QACR9d,KAAMsrC,EAAM+H,MACZ0b,MAAOzjB,EAAMyjB,MACbjX,MAAM,EACNjQ,WAAW,EACX/9B,MAAO,CACHgf,MAAM,EACNhN,SAAU,SACVsO,MAAO,OACPsmC,UAAW1wD,IACP,IAAIg1D,EAAMh1D,EAAKpC,KAgBf,YAfoBi0D,GAAjB7xD,EAAKA,KAAKmzD,MAEL6B,GAAO,MAAQh1D,EAAKA,KAAKmzD,KAAO,KAAOnzD,EAAKA,KAAKy9B,MAAQ,KAM9Dz9B,EAAKA,KAAK8rC,WACTkpB,GAAO,QAAUh1D,EAAKA,KAAK8rC,eAER+lB,GAApB7xD,EAAKA,KAAK+rC,SACTipB,GAAO,UAAiC,GAAtBh1D,EAAKA,KAAK+rC,OAAgB,KAAQ/rC,EAAKA,KAAK+rC,OAAS,MAGpEipB,IAGfjrC,UAAW,CACPK,MAAQ5B,GACGA,EAAOxoB,KAAK6e,SAAW,WAGtCgK,SAAU,CACN8xB,MAAO,YACPl1C,OAAO,EACPqkB,UAAW,CACPpmB,MAAO,EACP4hB,QAAS,IAGjBgrC,MAAO,CACHjb,UAAW,MAEfvrB,UAAY,CACRhsB,KAAM,QACN0yC,UAAW,GACX9sC,MAAO,EACP0mB,MAAO,WAMnBoW,EAAQY,UAAU57B,GAGlBg7B,EAAQY,UAAU57B,MAO9B,OAHIqvD,IAGG,CAAC9xD,EAAUC,KAChB,MAAM2L,EAA0BzL,8BAAkB,gBAElD,OAAQE,yBAAce,yBAAawK,EAAyB,CAAE1N,MAAO,0BAA4B,CAC/FuC,QAASC,qBAAS,IAAM,CACtB0B,gCAAoB,MAAOnE,GAAY,KAAM,OAE/C+C,EAAG,Q,UCtKP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,oDCcf,MAAM6mC,GAAU,CACd,CACExlC,MAAO,GACP0E,MAAO,QAET,CACE1E,MAAO,IACP0E,MAAO,QAET,CACE1E,MAAO,IACP0E,MAAO,SAII,QACXlM,KAAM,mBACNy9B,WAAY,CACR45B,wBACAC,cACAC,aACAjmD,oBACAkmD,0BACAC,cACAC,gBACAC,cACAC,eAGJ1zD,QACI,MAAMkqC,EAAkB9pC,kBAAI,GACtByoC,EAASzoC,iBAAI,IACb8oC,EAAU9oC,iBAAI,IACd+pC,EAAS/pC,mBACTqpC,EAAoBrpC,iBAAI,IACxBkpC,EAAkClpC,kBAAI,GACtC46B,EAAiB56B,iBAAI,IAErBqF,EAAWrF,iBAAIsF,QAAKC,iBAAgB,IAAIC,MAAOC,UAAY,SAAmBC,MAAM,KAAK,IACzFC,EAAS3F,iBAAIsF,QAAKC,iBAAgB,IAAIC,MAAOC,WAAWC,MAAM,KAAK,IACnE6tD,EAAavzD,kBAAI,GACjBuoC,EAAWvoC,kBAAI,GAIfupC,EAAiB,CAACppC,EAAU6B,KAC9B+nC,EAAO7mC,MAAQ,CAACsmC,OAAOrpC,EAAKqpC,OAASI,SAASzpC,EAAKypC,SAAUC,OAAO1pC,EAAK0pC,OAAQxkC,SAASA,EAASnC,MAAOyC,OAAOA,EAAOzC,OACxHqlC,EAASrlC,OAAQ,GAEf+mC,EAAe,KACjB1B,EAASrlC,OAAQ,GAIfswD,EAAcltD,IAChBA,EAAEmtD,mBAEA7qB,EAAY,KAEdkB,EAAgB5mC,OAAQ,EACvBwwD,eAAc,CACX51D,KAAK,CACD6yD,MAAOtrD,EAASnC,MAChB0tD,MAAOjrD,EAAOzC,MACdulC,OAAOA,EAAOvlC,MACd4lC,QAAQA,EAAQ5lC,MAChB2F,QAAQ,IAAIrD,MAAOC,aAExB2B,KAAMtJ,IAELgsC,EAAgB5mC,OAAQ,EAExB,MAAMywD,EAAgB,GACtB,IAAkBC,EAAW,GAC7B91D,EAAKoK,QAAQ,CAAC/H,EAASnF,KAEnB,MAAM64D,EAAQ,CACNnqB,WAAY,GAIpB,GAFIkqB,EAAKlqD,KAAKO,OAAOC,OAAO,GAAI/J,EAAM0zD,IAEnC74D,EAAM,GAAG,CACR,MAAM84D,EAAM,CACR34B,QAAS,QACT50B,MAAOpG,EAAK0pC,OAAS,IAAM,EAAK1pC,EAAK0pC,OAAS,GAAK,EAAI1pC,EAAK0pC,OAAS,GAAK,EAAI,EAC9EhjC,KAAM1G,EAAKqpC,QAEfmqB,EAAQjqD,KAAKoqD,MAIrBl5B,EAAU13B,MAAQywD,EAElBtqB,EAAanmC,MAAQ0wD,IAEtBtsD,MAAM,SAIbshC,IAEA,MAAMe,EAAY,CAACrjC,EAAOtE,KACtBqnC,EAAanmC,MAAMlB,GAAK0nC,UAAYpjC,GAGlCytD,EAAoB,GAQpB3qB,EAAmBnpC,sBAAS,CAC9BkxC,MAAO,GACP0b,MAAO,KAEX,IAAI7xD,GAAS,EACb,MAAMiuC,EAAgBxgC,UAClB,MAAMurD,EAAwB,GAM9B,GALA3qB,EAAanmC,MAAMgF,QAAQ,CAACC,EAAQvJ,KAC7BuJ,EAAEuhC,WACDsqB,EAAYtqD,KAAKvB,EAAEqhC,UAGxBN,EAAkBhmC,MAEjB,YADAgmC,EAAkBhmC,OAAQ,GAG9B,IAAI8wD,EAAYn1D,OAAQ,OAExBuqC,EAAM+H,MAAMtyC,OAAS,EACrBuqC,EAAMyjB,MAAMhuD,OAAS,EACrBk1D,EAAWl1D,OAAS,QACdo1D,EAAgBD,GAEtB,MAAME,EAAkB,GAIxBH,EAAW7rD,QAAQ,CAACC,EAAGvJ,KACnBuJ,EAAEipD,KAAKlpD,QAAS5B,IACZ,IAAI6tD,EAAOD,EAASE,OAAO3vC,GAAKA,EAAE/oB,MAAQ4K,EAAE0qD,SAAS5nD,QAAQ,IAAI,IAAIA,QAAQ,IAAI,KAAK,GAClF+qD,GACAD,EAASxqD,KAAK,CACVhO,KAAM4K,EAAE0qD,SAAS5nD,QAAQ,IAAI,IAAIA,QAAQ,IAAI,IAC7C6nD,IAAK3qD,EAAE2qD,IACP11B,KAAMj1B,EAAEi1B,WAYxB24B,EAAShsD,QAAQC,IAAI,MACN,QAAX,EAAAihC,EAAM+H,aAAK,OAAX,EAAaznC,KAAK,CACdhO,KAAMyM,EAAEzM,KACR2E,GAAI8H,EAAEzM,KACNwH,MAAOiF,EAAEzM,KACT8vC,WAAY,GACZ7uB,QAAS,UACTs0C,IAAK9oD,EAAE8oD,IACP11B,KAAMpzB,EAAEozB,SAGhBw4B,EAAW7rD,QAAQ,CAACC,EAAGvJ,KAAK,MACxB5D,IACA,IAAIq5D,EAAWlsD,EAAEqhC,OAASxuC,EACf,QAAX,EAAAouC,EAAM+H,aAAK,OAAX,EAAaznC,KAAK,CACdhO,KAAMyM,EAAEqhC,OACRnpC,GAAIg0D,EACJnxD,MAAOiF,EAAEqhC,OACTI,SAAUzhC,EAAEyhC,SACZC,OAAQ1hC,EAAE0hC,OACV2B,WAAY,IACZ7uB,QAAS,YAEbu3C,EAAShsD,QAAQ5B,IACb6B,EAAEipD,KAAKlpD,QAASuc,IAE6C,MAAtDA,EAAEusC,SAAS5nD,QAAQ,IAAI,IAAIA,QAAQ,IAAI,KAAO9C,EAAE5K,OACpC,QAAX,EAAA0tC,EAAMyjB,aAAK,OAAX,EAAanjD,KAAK,CACd9M,OAAQ6nB,EAAEusC,SAAS5nD,QAAQ,IAAI,IAAIA,QAAQ,IAAI,IAC/CqJ,OAAQ4hD,SAKxBlsD,EAAEmsD,OAAOpsD,QAAS5B,IAAU,QACxBtL,IACA,IAAIu5D,EAAejuD,EAAE6E,OAASnQ,EACnB,QAAX,EAAAouC,EAAM+H,aAAK,OAAX,EAAaznC,KAAK,CACdhO,KAAM4K,EAAE6E,OACR9K,GAAIk0D,EACJrxD,MAAOoD,EAAE6E,OACTqgC,WAAY,GACZ7uB,QAAS,UACTitB,SAAUtjC,EAAEsjC,SACRC,OAAQvjC,EAAEujC,SAEP,QAAX,EAAAT,EAAMyjB,aAAK,OAAX,EAAanjD,KAAK,CACd9M,OAAQ23D,EACR9hD,OAAQ4hD,IAEZ/tD,EAAEyrD,QAAQ7pD,QAASuc,IAAU,QACzBzpB,IACW,QAAX,EAAAouC,EAAM+H,aAAK,OAAX,EAAaznC,KAAK,CACdhO,KAAM+oB,EAAEutC,YACR3xD,GAAIokB,EAAExb,UAAYjO,EAClBkI,MAAOuhB,EAAEutC,YACTxmB,WAAY,GACZ5B,SAAUnlB,EAAEmlB,SACZC,OAAQplB,EAAEolB,SAEH,QAAX,EAAAT,EAAMyjB,aAAK,OAAX,EAAanjD,KAAK,CACd9M,OAAQ6nB,EAAExb,UAAYjO,EACtByX,OAAQ8hD,UAQxBrrB,EAAkBhmC,OAAQ,GAExB+wD,EAAkBxrD,UACpB,MAAMtI,EAAOsE,EAAKgtB,QACZ3zB,QAAa4yD,gBAAY,CAC3B5yD,KAAM,CACF6yD,MAAOtrD,EAASnC,MAChB0tD,MAAOjrD,EAAOzC,MACd2tD,QAAS1wD,EACTsoC,OAAQA,EAAOvlC,MACf2F,QAAQ,IAAIrD,MAAOC,aAGrB6uD,QAAeE,EAAYr0D,GACjC4zD,EAAWrqD,KAAK,CACZ8/B,OAAQrpC,EACRixD,KAAM9rD,QAAKmvD,aAAa32D,EAAKizD,MAAO,eACpCuD,OAAQA,EAAOzC,IACfhoB,OAAQyqB,EAAOzqB,OACfD,SAAU0qB,EAAO1qB,WAElBnlC,EAAK5F,cACEo1D,EAAgBxvD,IAIxB+vD,EAAc/rD,UAChB,MAAM3K,QAAa2zD,gBAAgB,CAC3C3zD,KAAM,CACL6yD,MAAOtrD,EAASnC,MACD0tD,MAAOjrD,EAAOzC,MAC7B2tD,QAASrnB,EACT3gC,QAAQ,IAAIrD,MAAOC,aAGb,OAAO3H,GAGV,MAAO,CACHorC,oBACAE,QACAX,SACAC,WACAI,UACA4rB,cACAnB,aACAhrB,WACAc,eACAU,SACAtnC,kBACAqnC,kBACAzkC,WACAM,SACAi1B,YAGD2O,iBACAU,eACArB,YACAe,YACAV,gBACAuqB,iB,UCjTX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,SAASrvC,GAAQ,CAAC,YAAY,qBAE1E,iB,uKCwCXwwC,EAA4B,SAAUl6D,EAASmB,GACjD,MAAa,QAATA,EACK,CACLA,KAAM,MACNgG,MAAOnH,EAAQm6D,iBAAiBx7D,IAAI,CAAC,SAAU,WAAY,SAE3C,YAATwC,EACF,CACLA,KAAM,UACNgG,MAAOnH,EAAQm6D,iBAAiBx7D,IAAI,CAAC,SAAU,WAAY,kBAHxD,GAQL,EAEJ,SAAUkY,GAGR,SAASujD,IACP,IAAInjD,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAchE,OAZA4Y,EAAM9V,KAAOi5D,EAAYj5D,KACzB8V,EAAMojD,WAAa,CACjBl5D,KAAM,MAQNm5D,YAAY,GAEPrjD,EAqQT,OAtRA,eAAUmjD,EAAavjD,GAoBvBujD,EAAYzxD,UAAUwiB,KAAO,SAAUtiB,EAAQ6pD,EAAa1yD,GAC1D3B,KAAKi0D,qBAAqBzpD,EAAQ7I,GAClC6I,EAAOo+B,SAAWp+B,EAAOo+B,UAAY,GAErC5oC,KAAKk8D,gBAAgB1xD,IAGvBuxD,EAAYzxD,UAAU6iB,YAAc,SAAU3iB,EAAQ7I,GACpD6W,EAAOlO,UAAU6iB,YAAYtU,KAAK7Y,KAAMwK,EAAQ7I,GAEhD3B,KAAKk8D,gBAAgB1xD,IAGvBuxD,EAAYzxD,UAAU4xD,gBAAkB,SAAU1xD,GAChD,IAAI2xD,EAAW3xD,EAAO2xD,SAClBx6D,EAAU3B,KAAK2B,SAEF,IAAbw6D,IACFA,EAAW3xD,EAAO2xD,SAAW,CAAC,MAAO,YAGnC,aAAeA,IACjB,UAAYA,GAAU,SAAU90D,EAAMnF,GACpC,cAAgBmF,KAAUA,EAAO,CAC/BvE,KAAMuE,IAER80D,EAASj6D,GAAS,WAAamF,EAAMw0D,EAA0Bl6D,EAAS0F,EAAKvE,WAKnFi5D,EAAYzxD,UAAU8xD,cAAgB,WACpCp8D,KAAKq8D,YAAYr8D,KAAK2B,SAEtB,IAAI26D,EAAat8D,KAAKwrB,MAEtB,GAAI8wC,EAAW,IAAmC,WAA7Bt8D,KAAKM,IAAI,gBAA8B,CAG1D,IAFA,IAAIi8D,GAAc,EAETz2D,EAAI,EAAGA,EAAIw2D,EAAWv2D,OAAQD,IAAK,CAC1C,IAAI02D,EAASF,EAAWx2D,GAAGxF,IAAI,QAE/B,GAAIN,KAAKugB,WAAWi8C,GAAS,CAE3Bx8D,KAAKuL,OAAOixD,GACZD,GAAc,EACd,QAKHA,GAAev8D,KAAKuL,OAAO+wD,EAAW,GAAGh8D,IAAI,WAIlDy7D,EAAYzxD,UAAU+xD,YAAc,SAAU16D,GAC5C,IAAI86D,EAAgB,GAChBC,EAAiB,GACrB/6D,EAAQg7D,eAAc,SAAUt8D,GAC9B,IAEIu8D,EAFAC,EAAax8D,EAAYuC,KAI7B,GAHA85D,EAAe9rD,KAAKisD,GAGhBx8D,EAAY0sB,qBAAsB,CACpC,IAAI+vC,EAAWz8D,EAAY0sB,qBACvBgwC,EAAQD,EAASn2B,cAEhBhlC,EAAQq7D,iBAAiB38D,KAC5Bq8D,EAAiBA,EAAel0B,OAAOu0B,IAGrCA,EAAMh3D,OACR02D,EAAgBA,EAAcj0B,OAAOu0B,GAErCH,GAAc,OAGhBA,GAAc,EAGZA,GAAe,eAAgBv8D,IACjCo8D,EAAc7rD,KAAKvQ,EAAYuC,SAQnC5C,KAAKi9D,gBAAkBP,EAGvB,IAAI91B,EAAU5mC,KAAKM,IAAI,SAAWm8D,EAC9BH,EAAa,SAAW11B,GAAS,SAAUs2B,GAQ7C,OANI,cAAgBA,IAAa,cAAgBA,MAC/CA,EAAW,CACTt6D,KAAMs6D,IAIH,IAAIxnD,EAAA,KAAMwnD,EAAUl9D,KAAMA,KAAK2B,WACrC3B,MAMHA,KAAKwrB,MAAQ8wC,GAGfP,EAAYzxD,UAAUoF,QAAU,WAC9B,OAAO1P,KAAKwrB,OAGduwC,EAAYzxD,UAAUiB,OAAS,SAAU3I,GACvC,IAAIgmC,EAAW5oC,KAAKwK,OAAOo+B,SACvBu0B,EAAen9D,KAAKM,IAAI,gBAE5B,GAAqB,WAAjB68D,EAA2B,CAC7B,IAAIn4D,EAAOhF,KAAKwrB,MAChB,UAAYxmB,GAAM,SAAUk4D,GAC1Bt0B,EAASs0B,EAAS58D,IAAI,UAAW,KAIrCsoC,EAAShmC,IAAQ,GAGnBm5D,EAAYzxD,UAAU8yD,SAAW,SAAUx6D,GACR,WAA7B5C,KAAKM,IAAI,kBACXN,KAAKwK,OAAOo+B,SAAShmC,IAAQ,IAIjCm5D,EAAYzxD,UAAU+yD,eAAiB,SAAUz6D,GAC/C,IAAIgmC,EAAW5oC,KAAKwK,OAAOo+B,SAEtBA,EAASkkB,eAAelqD,KAC3BgmC,EAAShmC,IAAQ,GAGnB5C,KAAK4oC,EAAShmC,GAAQ,WAAa,UAAUA,IAG/Cm5D,EAAYzxD,UAAUgzD,UAAY,WAChC,IAAIt4D,EAAOhF,KAAKwrB,MACZod,EAAW5oC,KAAKwK,OAAOo+B,SAC3B,UAAY5jC,GAAM,SAAUk4D,GAC1Bt0B,EAASs0B,EAAS58D,IAAI,QAAQ,KAAS,MAI3Cy7D,EAAYzxD,UAAUizD,cAAgB,WACpC,IAAIv4D,EAAOhF,KAAKwrB,MACZod,EAAW5oC,KAAKwK,OAAOo+B,SAC3B,UAAY5jC,GAAM,SAAUk4D,GAC1B,IAAIt6D,EAAOs6D,EAAS58D,IAAI,QAAQ,GAE3BsoC,EAASkkB,eAAelqD,KAC3BgmC,EAAShmC,IAAQ,GAGnBgmC,EAAShmC,IAASgmC,EAAShmC,OAI/Bm5D,EAAYzxD,UAAUiW,WAAa,SAAU3d,GAC3C,IAAIgmC,EAAW5oC,KAAKwK,OAAOo+B,SAC3B,QAASA,EAASkkB,eAAelqD,KAAUgmC,EAAShmC,KAAU,aAAe5C,KAAKi9D,gBAAiBr6D,IAAS,GAG9Gm5D,EAAYzxD,UAAUkzD,UAAY,WAChC,MAA8B,aAAvBx9D,KAAKM,IAAI,UAA2B,CACzC4B,MAAO,EACPU,KAAM,YACJ,CACFV,MAAO,EACPU,KAAM,eAIVm5D,EAAYj5D,KAAO,eACnBi5D,EAAY5G,aAAe,CAAC,UAC5B4G,EAAYhuC,cAAgB,CAE1BC,EAAG,EACHF,MAAM,EACN2vC,OAAQ,aACRnvC,KAAM,SAENC,IAAK,EAELjH,MAAO,OACP/D,gBAAiB,gBACjByiB,YAAa,OACbD,aAAc,EACd/W,YAAa,EACb5L,QAAS,EACTs6C,QAAS,GACTC,UAAW,GACXC,WAAY,GACZ5d,aAAc,UACduE,kBAAkB,EAClBsZ,cAAe,OACfC,oBAAqB,OACrBC,oBAAqB,OACrBhvC,UAAW,CACTK,MAAO,UACP9E,QAAS,UACT0b,YAAa,UACbhX,YAAa,OACbgvC,UAAW,UACX/uC,WAAY,UACZgvC,iBAAkB,UAClBC,iBAAkB,WAEpBpvC,UAAW,CACTpmB,MAAO,OACP0mB,MAAO,UACPyuC,cAAe,OACfM,cAAe,EACf7zC,QAAS,UACTxnB,KAAM,UACNs7D,IAAK,UACL92B,KAAM,UACN+2B,WAAY,UACZC,WAAY,WAEd74B,UAAW,CACTrW,MAAO,QAET+tC,cAAc,EACdhB,UAAU,EACVoC,cAAe,CACbzwC,MAAM,EACNiY,aAAc,GACd3iB,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBsiB,SAAU,GACV84B,WAAY,aACZpvC,MAAO,OACPJ,YAAa,EACbgX,YAAa,QAEfnY,SAAU,CACR0wC,cAAe,CACbzwC,MAAM,EACNsB,MAAO,OACP7L,gBAAiB,SAGrBk7C,iBAAkB,OAClBC,gBAAiB,EACjBC,kBAAmB,GACnBvF,QAAS,CACPtrC,MAAM,IAGHiuC,EAvRT,CAwRE1/C,EAAA,MAEa,I,4GCzRR,SAASuiD,EAAe3lD,EAAM4lD,GACnC,IAAIz7C,EAAU07C,EAAA,KAA6BD,EAAev+D,IAAI,YAC1DiI,EAAQs2D,EAAe/yC,aAAa,CAAC,QAAS,YAkBlD,OAjBAvjB,EAAM6hB,KAAOy0C,EAAev+D,IAAI,mBAChC2Y,EAAO,IAAI,OAAa,CACtBoM,MAAO,CACLhP,EAAG4C,EAAK5C,EAAI+M,EAAQ,GACpB9M,EAAG2C,EAAK3C,EAAI8M,EAAQ,GACpB1a,MAAOuQ,EAAKvQ,MAAQ0a,EAAQ,GAAKA,EAAQ,GACzCxX,OAAQqN,EAAKrN,OAASwX,EAAQ,GAAKA,EAAQ,GAC3CzF,EAAGkhD,EAAev+D,IAAI,iBAExBiI,MAAOA,EACP22C,QAAQ,EACRr2B,IAAK,IAMA5P,E,wCChCL8lD,EAAQ,WACRtgD,EAAO,UACP,EAAQ,OAER,EAEJ,SAAUjG,GAGR,SAASwmD,IACP,IAAIpmD,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAIhE,OAFA4Y,EAAM9V,KAAOk8D,EAAWl8D,KACxB8V,EAAMqmD,iBAAkB,EACjBrmD,EAkWT,OAzWA,eAAUomD,EAAYxmD,GAUtBwmD,EAAW10D,UAAUwiB,KAAO,WAC1B9sB,KAAKyrB,MAAMM,IAAI/rB,KAAKk/D,cAAgB,IAAI,GACxCl/D,KAAKyrB,MAAMM,IAAI/rB,KAAKm/D,eAAiB,IAAI,GACzCn/D,KAAKo/D,gBAAiB,GAOxBJ,EAAW10D,UAAU+0D,gBAAkB,WACrC,OAAOr/D,KAAKk/D,eAOdF,EAAW10D,UAAUg1D,iBAAmB,WACtC,OAAOt/D,KAAKm/D,gBAOdH,EAAW10D,UAAU+gB,OAAS,SAAUk0C,EAAa59D,EAASwb,GAC5D,IAAIqiD,EAAgBx/D,KAAKo/D,eAIzB,GAHAp/D,KAAKo/D,gBAAiB,EACtBp/D,KAAKy/D,aAEAF,EAAYj/D,IAAI,QAAQ,GAA7B,CAIA,IAAIo/D,EAAYH,EAAYj/D,IAAI,SAC5Bm9D,EAAS8B,EAAYj/D,IAAI,UAExBo/D,GAA2B,SAAdA,IAChBA,EAAwC,UAA5BH,EAAYj/D,IAAI,SAAkC,aAAXm9D,EAAwB,QAAU,QAIvF,IAAItB,EAAWoD,EAAYj/D,IAAI,YAAY,GACvCm+D,EAAmBc,EAAYj/D,IAAI,oBAAoB,IAEvD67D,GAAcsC,GAAyC,SAArBA,IACpCA,EAA8B,eAAXhB,EAA0B,MAAQ,SAGvDz9D,KAAK2/D,YAAYD,EAAWH,EAAa59D,EAASwb,EAAKg/C,EAAUsB,EAAQgB,GAEzE,IAAImB,EAAeL,EAAYniD,qBAC3ByiD,EAAe,CACjBn3D,MAAOyU,EAAIE,WACXzR,OAAQuR,EAAIG,aAEV8F,EAAUm8C,EAAYj/D,IAAI,WAC1Bw/D,EAAUh9C,EAAA,KAAyB88C,EAAcC,EAAcz8C,GAC/D28C,EAAW//D,KAAKggE,YAAYT,EAAaG,EAAWI,EAASN,EAAerD,EAAUsC,GAEtFwB,EAAan9C,EAAA,KAAyB,cAAgB,CACxDpa,MAAOq3D,EAASr3D,MAChBkD,OAAQm0D,EAASn0D,QAChBg0D,GAAeC,EAAcz8C,GAChCpjB,KAAKyrB,MAAMpV,EAAI4pD,EAAW5pD,EAAI0pD,EAAS1pD,EACvCrW,KAAKyrB,MAAMnV,EAAI2pD,EAAW3pD,EAAIypD,EAASzpD,EACvCtW,KAAKyrB,MAAMi3B,aAEX1iD,KAAKyrB,MAAMM,IAAI/rB,KAAKkgE,cAAgBtB,EAAemB,EAAUR,MAG/DP,EAAW10D,UAAUm1D,WAAa,WAChCz/D,KAAKq/D,kBAAkBlhB,YACvBn+C,KAAKkgE,eAAiBlgE,KAAKyrB,MAAMI,OAAO7rB,KAAKkgE,eAC7ClgE,KAAKs/D,mBAAmBnhB,aAG1B6gB,EAAW10D,UAAUq1D,YAAc,SAAUD,EAAWH,EAAa59D,EAASwb,EAAKg/C,EAAUsB,EAAQgB,GACnG,IAAI0B,EAAengE,KAAKq/D,kBACpBe,EAAiB,qBACjBC,EAAad,EAAYj/D,IAAI,gBAC7BggE,EAAkB,GACtB3+D,EAAQg7D,eAAc,SAAUt8D,IAC7BA,EAAYC,IAAI,oBAAsBggE,EAAgB1vD,KAAKvQ,EAAYkH,OAE1EkX,EAAK8gD,EAAY7vD,WAAW,SAAU6wD,EAAiBh7D,GACrD,IAAI3C,EAAO29D,EAAgBjgE,IAAI,QAE/B,IAAKN,KAAKi/D,kBAA6B,KAATr8D,GAAwB,OAATA,GAAgB,CAC3D,IAAI49D,EAAI,IAAI,EAIZ,OAFAA,EAAEC,SAAU,OACZN,EAAap0C,IAAIy0C,GAKnB,IAAIngE,EAAcsB,EAAQ++D,gBAAgB99D,GAAM,GAEhD,IAAIw9D,EAAe9/D,IAAIsC,GAAvB,CAMA,GAAIvC,EAAa,CACf,IAAI2E,EAAO3E,EAAYqP,UACnBixD,EAAkB37D,EAAK2oC,UAAU,oBAAsB,GACvDizB,EAAa57D,EAAK2oC,UAAU,cAM5BplC,EAAQvD,EAAK2oC,UAAU,SAEvBkzB,EAAY7gE,KAAK8gE,YAAYzgE,EAAauC,EAAM2C,EAAWg7D,EAAiBhB,EAAaG,EAAWiB,EAAiBp4D,EAAOq4D,EAAYP,EAAYljD,GAExJ0jD,EAAUx6B,GAAG,QAAS04B,EAAMgC,EAAsBn+D,EAAM,KAAMua,EAAKmjD,IAAkBj6B,GAAG,YAAa04B,EAAMiC,EAAyB3gE,EAAYuC,KAAM,KAAMua,EAAKmjD,IAAkBj6B,GAAG,WAAY04B,EAAMkC,EAAwB5gE,EAAYuC,KAAM,KAAMua,EAAKmjD,IAC7PF,EAAer/D,IAAI6B,GAAM,QAGzBjB,EAAQg7D,eAAc,SAAUt8D,GAE9B,IAAI+/D,EAAe9/D,IAAIsC,IAInBvC,EAAY0sB,qBAAsB,CACpC,IAAI+vC,EAAWz8D,EAAY0sB,qBAE3B,IAAK+vC,EAASh2B,YAAYlkC,GACxB,OAGF,IAAIsG,EAAM4zD,EAAS/1B,YAAYnkC,GAC3B2F,EAAQu0D,EAASlzC,cAAc1gB,EAAK,SACpC03D,EAAa9D,EAASlzC,cAAc1gB,EAAK,cACzCg4D,EAAW,mBAAM34D,EAAM6hB,MAGvB82C,GAA4B,IAAhBA,EAAS,KACvBA,EAAS,GAAK,GAEd34D,EAAQ,YAAc,YAAc,GAAIA,GAAQ,CAC9C6hB,KAAM,uBAAU82C,EAAU,WAI9B,IAAIL,EAAY7gE,KAAK8gE,YAAYzgE,EAAauC,EAAM2C,EAAWg7D,EAAiBhB,EAAaG,EAAW,GAAIn3D,EAAOq4D,EAAYP,EAAYljD,GAG3I0jD,EAAUx6B,GAAG,QAAS04B,EAAMgC,EAAsB,KAAMn+D,EAAMua,EAAKmjD,IAElEj6B,GAAG,YAAa04B,EAAMiC,EAAyB,KAAMp+D,EAAMua,EAAKmjD,IAAkBj6B,GAAG,WAAY04B,EAAMkC,EAAwB,KAAMr+D,EAAMua,EAAKmjD,IACjJF,EAAer/D,IAAI6B,GAAM,MAE1B5C,MAGD,KAKHA,MAECm8D,GACFn8D,KAAKmhE,gBAAgBhF,EAAUoD,EAAapiD,EAAKsgD,EAAQgB,IAI7DO,EAAW10D,UAAU62D,gBAAkB,SAAUhF,EAAUoD,EAAapiD,EAAKsgD,EAAQgB,GACnF,IAAI2C,EAAgBphE,KAAKs/D,mBACzB7gD,EAAK09C,GAAU,SAA8BkF,GAC3C,IAAIv+D,EAAOu+D,EAAav+D,KACpBonB,EAAY,IAAI,OAAa,CAC/B3hB,MAAO,CACL8N,EAAG,EACHC,EAAG,EACHgR,MAAO,SACPD,cAAe,UAEjBi6C,QAAS,WACPnkD,EAAIqyC,eAAe,CACjB1sD,KAAe,QAATA,EAAiB,kBAAoB,2BAIjDs+D,EAAcr1C,IAAI7B,GAClB,IAAIvE,EAAa45C,EAAY35C,SAAS,iBAClC27C,EAAqBhC,EAAY35C,SAAS,CAAC,WAAY,kBAC3D,eAAcsE,EAAW,CACvB4U,OAAQnZ,EACRkI,SAAU0zC,GACT,CACD52C,YAAa02C,EAAav4D,QAE5B,eAAoBohB,OAIxB80C,EAAW10D,UAAUw2D,YAAc,SAAUzgE,EAAauC,EAAM2C,EAAWg7D,EAAiBhB,EAAaG,EAAWiB,EAAiBa,EAAiBZ,EAAYP,EAAYljD,GAC5K,IAAIskD,EAAWphE,EAAYqhE,eACvB/D,EAAY4B,EAAYj/D,IAAI,aAC5Bs9D,EAAa2B,EAAYj/D,IAAI,cAC7BigB,EAAag/C,EAAYh/C,WAAW3d,GACpC++D,EAAapB,EAAgBjgE,IAAI,gBACjCikD,EAAmBgc,EAAgBjgE,IAAI,oBACvCshE,EAAiBrB,EAAgBjgE,IAAI,QACzCsgE,EAAagB,GAAkBhB,GAAc,YAC7C,IAAIr4D,EAAQs5D,EAAejB,EAAYL,EAAiBI,EAAiBa,EAAiBC,EAAUlhD,EAAYpD,GAC5G0jD,EAAY,IAAI,EAChBjrD,EAAiB2qD,EAAgB36C,SAAS,aAE9C,IAAI,gBAAkBvlB,EAAYyhE,gBAAoBF,GAAqC,YAAnBA,EAWjE,CAEL,IAAI76C,EAA4B,YAAnB66C,GAAgCvhE,EAAYqP,UAAUi+B,UAAU,UAA2B,YAAfg0B,EAA2BthE,EAAYqP,UAAUi+B,UAAU,gBAAkBg0B,EAAa,EAEnLd,EAAU90C,IAAIg2C,EAAqB,CACjCpE,UAAWA,EACXC,WAAYA,EACZptB,KAAMowB,EACNe,WAAY56C,EACZgI,UAAWxmB,EAAMwmB,UACjBD,UAAWvmB,EAAMumB,UACjBy1B,iBAAkBA,UApBpBsc,EAAU90C,IAAI1rB,EAAYyhE,cAAc,CACtCnE,UAAWA,EACXC,WAAYA,EACZptB,KAAMowB,EACNe,WAAYA,EACZ5yC,UAAWxmB,EAAMwmB,UACjBD,UAAWvmB,EAAMumB,UACjBy1B,iBAAkBA,KAiBtB,IAAIt+B,EAAsB,SAAdy5C,EAAuB/B,EAAY,GAAK,EAChDx3C,EAAYu5C,EACZhK,EAAY6J,EAAYj/D,IAAI,aAC5B4hC,EAAUt/B,EAEV,cAAgB8yD,IAAcA,EAChCxzB,EAAUwzB,EAAUplD,QAAQ,SAAkB,MAAR1N,EAAeA,EAAO,IACnD,gBAAkB8yD,KAC3BxzB,EAAUwzB,EAAU9yD,IAGtB,IAAIi7D,EAAgB0C,EAAgBjgE,IAAI,iBACxCugE,EAAU90C,IAAI,IAAI,OAAa,CAC7BxjB,MAAO,eAAgBqN,EAAgB,CACrC7H,KAAMm0B,EACN7rB,EAAG4P,EACH3P,EAAGsnD,EAAa,EAChBxzC,KAAM7J,EAAa3K,EAAeosD,eAAiBnE,EACnDv2C,MAAOnB,EACPkB,cAAe,cAInB,IAAI46C,EAAU,IAAI,OAAa,CAC7B58C,MAAOw7C,EAAU3nD,kBACjB00B,WAAW,IAETs0B,EAAe3B,EAAgB36C,SAAS,WAoB5C,OAlBIs8C,EAAa5hE,IAAI,SACnB2lC,EAAA,oBAAyB,CACvB7rB,GAAI6nD,EACJpD,eAAgBU,EAChB77D,SAAUd,EACVu/D,kBAAmBD,EAAa13D,SAIpCq2D,EAAU90C,IAAIk2C,GACdpB,EAAUuB,WAAU,SAAUl2B,GAC5BA,EAAMgT,QAAS,KAEjB+iB,EAAQ/iB,QAAUmhB,EAClBrgE,KAAKq/D,kBAAkBtzC,IAAI80C,GAC3B,eAAoBA,GAEpBA,EAAUwB,kBAAoB98D,EACvBs7D,GAGT7B,EAAW10D,UAAU01D,YAAc,SAAUT,EAAaG,EAAWI,EAASN,EAAerD,EAAUsC,GACrG,IAAI0B,EAAengE,KAAKq/D,kBACpB+B,EAAgBphE,KAAKs/D,mBAEzBx8C,EAAA,KAAey8C,EAAYj/D,IAAI,UAAW6/D,EAAcZ,EAAYj/D,IAAI,WAAYw/D,EAAQp3D,MAAOo3D,EAAQl0D,QAC3G,IAAI02D,EAAcnC,EAAajnD,kBAC3BqpD,EAAa,EAAED,EAAYjsD,GAAIisD,EAAYhsD,GAI/C,GAHA8qD,EAAc1e,aACdyd,EAAazd,aAETyZ,EAAU,CAEZr5C,EAAA,KACA,aAAcs+C,EAAe7B,EAAYj/D,IAAI,mBAAmB,IAChE,IAAIkiE,EAAepB,EAAcloD,kBAC7BupD,EAAc,EAAED,EAAansD,GAAImsD,EAAalsD,GAC9CqoD,EAAoBY,EAAYj/D,IAAI,qBAAqB,GACzDoiE,EAAYnD,EAAY/B,YAAYt7D,MACpCygE,EAAmB,IAAdD,EAAkB,QAAU,SACjCE,EAAmB,IAAdF,EAAkB,SAAW,QAClCG,EAAmB,IAAdH,EAAkB,IAAM,IAER,QAArBjE,EACFgE,EAAYC,IAAcJ,EAAYK,GAAMhE,EAE5C4D,EAAWG,IAAcF,EAAaG,GAAMhE,EAI9C8D,EAAY,EAAIC,IAAcJ,EAAYM,GAAM,EAAIJ,EAAaI,GAAM,EACvExB,EAAc/qD,EAAIosD,EAAY,GAC9BrB,EAAc9qD,EAAImsD,EAAY,GAC9BtC,EAAa9pD,EAAIksD,EAAW,GAC5BpC,EAAa7pD,EAAIisD,EAAW,GAC5B,IAAIxC,EAAW,CACb1pD,EAAG,EACHC,EAAG,GAKL,OAHAypD,EAAS4C,GAAML,EAAYK,GAAMhE,EAAoB6D,EAAaG,GAClE5C,EAAS6C,GAAM7vD,KAAKkE,IAAIqrD,EAAYM,GAAKJ,EAAaI,IACtD7C,EAAS8C,GAAM9vD,KAAKiE,IAAI,EAAGwrD,EAAaK,GAAMJ,EAAY,EAAIC,IACvD3C,EAIP,OAFAI,EAAa9pD,EAAIksD,EAAW,GAC5BpC,EAAa7pD,EAAIisD,EAAW,GACrBviE,KAAKyrB,MAAMvS,mBAQtB8lD,EAAW10D,UAAUuhB,OAAS,WAC5B7rB,KAAKq/D,kBAAkBlhB,YACvBn+C,KAAKo/D,gBAAiB,GAGxBJ,EAAWl8D,KAAO,eACXk8D,EA1WT,CA2WE,QAEF,SAAS6C,EAAeiB,EAAUvC,EAAiBI,EAAiBa,EAAiBC,EAAUlhD,EAAYpD,GAKzG,SAAS4lD,EAAkBx6D,EAAOklC,GAER,SAApBllC,EAAMy6D,YACRz6D,EAAMy6D,UAAYv1B,EAAYu1B,UAAY,EAAI,EAAI,GAGpDvkD,EAAKlW,GAAO,SAAU06D,EAASC,GACT,YAApB36D,EAAM26D,KAA4B36D,EAAM26D,GAAYz1B,EAAYy1B,OAKpE,IAAIC,EAAiB5C,EAAgB36C,SAAS,aAC1CmJ,EAAYo0C,EAAer3C,eAC3Bs3C,EAAqD,IAArCN,EAASO,YAAY,QAAS,GAAW,OAAS,SAClEC,EAAaH,EAAe/5C,WAAW,SAC3C2F,EAAUuxB,MAASgjB,GAA6B,YAAfA,EAAmD,eAA+BA,EAAYnmD,GAAnEqkD,EAAgBlhB,MAErD,YAAnBvxB,EAAU3E,OAKZ2E,EAAU3E,KAAOo3C,EAAgBC,IAGV,YAArB1yC,EAAU/D,SAKZ+D,EAAU/D,OAASw2C,EAAgB4B,IAGX,YAAtBr0C,EAAUzE,UAIZyE,EAAUzE,SAAwB,SAAbm3C,EAAsBD,EAAkBb,GAAiBr2C,SAGhFy4C,EAAkBh0C,EAAWyyC,GAE7B,IAAI+B,EAAkBhD,EAAgB36C,SAAS,aAC3CkJ,EAAYy0C,EAAgBvlC,eAOhC,GANA+kC,EAAkBj0C,EAAW6xC,GAEV,SAAnB5xC,EAAU3E,OAAoB2E,EAAU3E,KAAOo3C,EAAgBp3C,MAC1C,SAArB2E,EAAU/D,SAAsB+D,EAAU/D,OAASw2C,EAAgBp3C,MAC9C,SAArB0E,EAAU9D,SAAsB8D,EAAU9D,OAASw2C,EAAgBp3C,OAE9D7J,EAAY,CACf,IAAIyO,EAAcuxC,EAAgBjgE,IAAI,uBAOlCkjE,EAAkBz0C,EAAUq0C,GAChCr0C,EAAUi0C,UAA4B,SAAhBh0C,EAAyBwyC,EAAgBwB,UAAY,GAAKQ,EAAkB,EAAI,EAAIz0C,EAAUi0C,UACpHj0C,EAAU3E,KAAOm2C,EAAgBjgE,IAAI,iBACrCyuB,EAAU/D,OAASu1C,EAAgBjgE,IAAI,uBACvCwuB,EAAU9D,OAASu4C,EAAgBjjE,IAAI,iBACvCwuB,EAAUk0C,UAAYO,EAAgBjjE,IAAI,iBAG5C,MAAO,CACLyuB,UAAWA,EACXD,UAAWA,GAIf,SAASizC,EAAqBl+D,GAC5B,IAAI4/D,EAAY5/D,EAAI2sC,MAAQ,YACxBA,EAAO,eAAaizB,EAAW,EAAG,EAAG5/D,EAAI85D,UAAW95D,EAAI+5D,WAAY/5D,EAAIkrB,UAAU3E,KAAMvmB,EAAI0gD,kBAWhG,OAVA/T,EAAKtsB,SAASrgB,EAAIkrB,WAClByhB,EAAKppB,UAAYvjB,EAAI89D,YAAc,GAAK5uD,KAAKiK,GAAK,IAClDwzB,EAAKkzB,UAAU,CAAC7/D,EAAI85D,UAAY,EAAG95D,EAAI+5D,WAAa,IAEhD6F,EAAUE,QAAQ,UAAY,IAChCnzB,EAAKjoC,MAAMyiB,OAASwlB,EAAKjoC,MAAM6hB,KAC/BomB,EAAKjoC,MAAM6hB,KAAO,OAClBomB,EAAKjoC,MAAMy6D,UAAY,GAGlBxyB,EAGT,SAASuwB,EAAqBlE,EAAYhL,EAAU10C,EAAKmjD,GAEvDW,EAAuBpE,EAAYhL,EAAU10C,EAAKmjD,GAClDnjD,EAAIqyC,eAAe,CACjB1sD,KAAM,qBACNF,KAAoB,MAAdi6D,EAAqBA,EAAahL,IAI1CmP,EAAwBnE,EAAYhL,EAAU10C,EAAKmjD,GAGrD,SAASsD,EAAgBzmD,GACvB,IACI86B,EADAtsC,EAAOwR,EAAIqxC,QAAQqV,QAAQC,iBAE3Bh+D,EAAI,EACJ2R,EAAM9L,EAAK5F,OAEf,MAAOD,EAAI2R,KAASwgC,EAAgBtsC,EAAK7F,GAAGof,OAAO2I,UACjD/nB,IAGF,OAAOmyC,GAAiBA,EAAciL,WAGxC,SAAS8d,EAAwBnE,EAAYhL,EAAU10C,EAAKmjD,GAErDsD,EAAgBzmD,IACnBA,EAAIqyC,eAAe,CACjB1sD,KAAM,YACN+5D,WAAYA,EACZj6D,KAAMivD,EACNyO,gBAAiBA,IAKvB,SAASW,EAAuBpE,EAAYhL,EAAU10C,EAAKmjD,GAEpDsD,EAAgBzmD,IACnBA,EAAIqyC,eAAe,CACjB1sD,KAAM,WACN+5D,WAAYA,EACZj6D,KAAMivD,EACNyO,gBAAiBA,IAKR,QC7gBA,SAASyD,EAAapiE,GACnC,IAAIue,EAAeve,EAAQwe,eAAe,CACxCC,SAAU,WAGRF,GAAgBA,EAAana,QAC/BpE,EAAQqiE,cAAa,SAAUl+B,GAG7B,IAAK,IAAIhgC,EAAI,EAAGA,EAAIoa,EAAana,OAAQD,IACvC,IAAKoa,EAAapa,GAAGya,WAAWulB,EAAOljC,MACrC,OAAO,EAIX,OAAO,KCZb,SAASqhE,EAA0B1R,EAAYjnC,EAAS3pB,GACtD,IAEI4e,EAFA2jD,EAAc,GACdC,EAAgC,mBAAf5R,EAoCrB,OAjCA5wD,EAAQg1D,cAAc,UAAU,SAAU4I,GACpC4E,GAAgC,MAAd5jD,EAKpBg/C,EAAYh/C,EAAa,SAAW,YAAY+K,EAAQ1oB,MAChC,cAAf2vD,GAA6C,kBAAfA,EACvCgN,EAAYhN,MAEZgN,EAAYhN,GAAYjnC,EAAQ1oB,MAChC2d,EAAag/C,EAAYh/C,WAAW+K,EAAQ1oB,OAG9C,IAAI05D,EAAaiD,EAAY7vD,UAC7B,kBAAK4sD,GAAY,SAAU/zC,GACzB,IAAI3lB,EAAO2lB,EAAMjoB,IAAI,QAErB,GAAa,OAATsC,GAA0B,KAATA,EAArB,CAIA,IAAIwhE,EAAiB7E,EAAYh/C,WAAW3d,GAExCshE,EAAYpX,eAAelqD,GAE7BshE,EAAYthE,GAAQshE,EAAYthE,IAASwhE,EAEzCF,EAAYthE,GAAQwhE,SAKJ,cAAf7R,GAA6C,kBAAfA,EAAiC,CACpE3pB,SAAUs7B,GACR,CACFthE,KAAM0oB,EAAQ1oB,KACdgmC,SAAUs7B,GAIP,SAASG,EAAoBn0C,GAQlCA,EAAUG,eAAe,qBAAsB,sBAAuB,mBAAM4zC,EAA2B,mBACvG/zC,EAAUG,eAAe,kBAAmB,kBAAmB,mBAAM4zC,EAA2B,cAChG/zC,EAAUG,eAAe,sBAAuB,sBAAuB,mBAAM4zC,EAA2B,kBAQxG/zC,EAAUG,eAAe,eAAgB,iBAAkB,mBAAM4zC,EAA2B,WAQ5F/zC,EAAUG,eAAe,iBAAkB,mBAAoB,mBAAM4zC,EAA2B,aCvE3F,SAASh0C,EAAQC,GACtBA,EAAUo0C,uBAAuB,GACjCp0C,EAAUq0C,sBAAsB,GAChCr0C,EAAUK,kBAAkBL,EAAUomC,SAASkO,UAAUC,cAAeV,GACxE7zC,EAAUw0C,yBAAyB,UAAU,WAC3C,MAAO,WAETL,EAAoBn0C,G,gBCNlB,EAEJ,SAAU1X,GAGR,SAASmsD,IACP,IAAI/rD,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAGhE,OADA4Y,EAAM9V,KAAO6hE,EAAsB7hE,KAC5B8V,EAgDT,OAtDA,eAAU+rD,EAAuBnsD,GAajCmsD,EAAsBr6D,UAAUs6D,mBAAqB,SAAUC,GAC7D7kE,KAAKwK,OAAOq6D,gBAAkBA,GAGhCF,EAAsBr6D,UAAUwiB,KAAO,SAAUtiB,EAAQ6pD,EAAa1yD,GACpE,IAAImjE,EAAsB,eAAgBt6D,GAE1CgO,EAAOlO,UAAUwiB,KAAKjU,KAAK7Y,KAAMwK,EAAQ6pD,EAAa1yD,GAEtDojE,EAA8B/kE,KAAMwK,EAAQs6D,IAO9CH,EAAsBr6D,UAAU6iB,YAAc,SAAU3iB,EAAQ7I,GAC9D6W,EAAOlO,UAAU6iB,YAAYtU,KAAK7Y,KAAMwK,EAAQ7I,GAEhDojE,EAA8B/kE,KAAMA,KAAKwK,OAAQA,IAGnDm6D,EAAsB7hE,KAAO,gBAC7B6hE,EAAsB52C,cAAgB,eAAqB,EAAYA,cAAe,CACpF82C,gBAAiB,EACjBG,kBAAmB,EACnBC,cAAe,KACfC,mBAAoB,MACpBC,cAAe,oBACfC,UAAW,CACTC,WAAY,CAAC,qBAAsB,wBACnCC,SAAU,CAAC,oBAAqB,qBAElCC,cAAe,UACfC,sBAAuB,OACvBC,aAAc,GACdC,cAAe,CACbt2C,MAAO,QAETQ,wBAAyB,MAEpB+0C,EAvDT,CAwDE,GAIF,SAASI,EAA8BxF,EAAa5lD,EAAQojC,GAC1D,IAAI0gB,EAAS8B,EAAY/B,YACrBvB,EAAa,CAAC,EAAG,GACrBA,EAAWwB,EAAOv7D,OAAS,EAC3B,eAAiByX,EAAQojC,EAAK,CAC5Bj6C,KAAM,MACNm5D,aAAcA,IAIH,Q,YCpEX,EAAQ,OACR0J,EAAK,CAAC,QAAS,UACfC,EAAK,CAAC,IAAK,KAEX,EAEJ,SAAUptD,GAGR,SAASqtD,IACP,IAAIjtD,EAAmB,OAAXJ,GAAmBA,EAAO0S,MAAMlrB,KAAMmrB,YAAcnrB,KAKhE,OAHA4Y,EAAM9V,KAAO+iE,EAAqB/iE,KAClC8V,EAAMqmD,iBAAkB,EACxBrmD,EAAMktD,cAAgB,EACfltD,EA8XT,OAtYA,eAAUitD,EAAsBrtD,GAWhCqtD,EAAqBv7D,UAAUwiB,KAAO,WACpCtU,EAAOlO,UAAUwiB,KAAKjU,KAAK7Y,MAE3BA,KAAKyrB,MAAMM,IAAI/rB,KAAK+lE,gBAAkB,IAAI,GAE1C/lE,KAAK+lE,gBAAgBh6C,IAAI/rB,KAAKq/D,mBAE9Br/D,KAAKyrB,MAAMM,IAAI/rB,KAAKgmE,iBAAmB,IAAI,IAO7CH,EAAqBv7D,UAAUm1D,WAAa,WAC1CjnD,EAAOlO,UAAUm1D,WAAW5mD,KAAK7Y,MAEjCA,KAAKgmE,iBAAiB7nB,YAEtBn+C,KAAK+lE,gBAAgBE,iBAErBjmE,KAAK+lE,gBAAgBG,WAAa,MAOpCL,EAAqBv7D,UAAUq1D,YAAc,SAAUD,EAAWH,EAAa59D,EAASwb,EAAKg/C,EAAUsB,EAAQgB,GAC7G,IAAIlP,EAAOvvD,KAEXwY,EAAOlO,UAAUq1D,YAAY9mD,KAAK7Y,KAAM0/D,EAAWH,EAAa59D,EAASwb,EAAKg/C,EAAUsB,EAAQgB,GAEhG,IAAI0H,EAAkBnmE,KAAKgmE,iBAGvBP,EAAelG,EAAYj/D,IAAI,gBAAgB,GAC/C8lE,EAAkB,aAAeX,GAAgBA,EAAe,CAACA,EAAcA,GACnFY,EAAiB,WAAY,GAC7B,IAAIC,EAAqB/G,EAAY35C,SAAS,iBAe9C,SAASygD,EAAiBzjE,EAAM2jE,GAC9B,IAAIC,EAAoB5jE,EAAO,YAC3B4tC,EAAOvK,EAAA,cAAmBs5B,EAAYj/D,IAAI,aAAa,GAAMi/D,EAAY/B,YAAY56D,MAAM2jE,GAAU,CAGvGjF,QAAS,UAAY/R,EAAKkX,QAASlX,EAAMiX,EAAmBjH,EAAapiD,IACxE,CACD9G,GAAI+vD,EAAgB,GAAK,EACzB9vD,GAAI8vD,EAAgB,GAAK,EACzB19D,MAAO09D,EAAgB,GACvBx6D,OAAQw6D,EAAgB,KAE1B51B,EAAK5tC,KAAOA,EACZujE,EAAgBp6C,IAAIykB,GA3BtB21B,EAAgBp6C,IAAI,IAAI,OAAa,CACnCnpB,KAAM,WACN2F,MAAO,CAELwF,KAAM,QACNqc,KAAMk8C,EAAmBtE,eACzBjtC,KAAMuxC,EAAmB5wC,UACzBrO,cAAe,SACfC,MAAO,UAET43B,QAAQ,KAEVmnB,EAAiB,WAAY,IAuB/BR,EAAqBv7D,UAAU01D,YAAc,SAAUT,EAAaG,EAAWI,EAASN,EAAerD,EAAUsC,GAC/G,IAAI2C,EAAgBphE,KAAKs/D,mBACrBoD,EAAYnD,EAAY/B,YAAYt7D,MACpCygE,EAAKgD,EAAGjD,GACRgE,EAAKd,EAAGlD,GACRE,EAAK+C,EAAG,EAAIjD,GACZG,EAAK+C,EAAG,EAAIlD,GAChBvG,GAAYr5C,EAAA,KACZ,aAAcs+C,EAAe7B,EAAYj/D,IAAI,mBAAmB,IAChE,IAAIq+D,EAAoBY,EAAYj/D,IAAI,qBAAqB,GACzDkiE,EAAepB,EAAcloD,kBAC7BupD,EAAc,EAAED,EAAansD,GAAImsD,EAAalsD,GAC9CqwD,EAAiB,WAAa7G,GAClC3D,IAAawK,EAAehE,GAAM7C,EAAQ6C,GAAMH,EAAaG,GAAMhE,GAEnE,IAAIoB,EAAW//D,KAAK4mE,4BAA4BrH,EAAaC,EAAemH,EAAgBjE,EAAWC,EAAIC,EAAIC,EAAI6D,GAEnH,GAAIvK,EAAU,CACZ,GAAyB,QAArBsC,EACFgE,EAAYC,IAAc3C,EAAS4C,GAAMhE,MACpC,CACL,IAAI90C,EAAS24C,EAAaG,GAAMhE,EAChC8D,EAAYC,IAAc74C,EAC1Bk2C,EAAS2G,IAAO78C,EAGlBk2C,EAAS4C,IAAOH,EAAaG,GAAMhE,EACnC8D,EAAY,EAAIC,IAAc3C,EAAS8C,GAAM9C,EAAS6C,GAAM,EAAIJ,EAAaI,GAAM,EACnF7C,EAAS6C,GAAM7vD,KAAKkE,IAAI8oD,EAAS6C,GAAKJ,EAAaI,IACnD7C,EAAS8C,GAAM9vD,KAAKiE,IAAI+oD,EAAS8C,GAAKL,EAAaK,GAAMJ,EAAY,EAAIC,IACzEtB,EAAc/qD,EAAIosD,EAAY,GAC9BrB,EAAc9qD,EAAImsD,EAAY,GAC9BrB,EAAc1e,aAGhB,OAAOqd,GAGT8F,EAAqBv7D,UAAUs8D,4BAA8B,SAAUrH,EAAaC,EAAeM,EAAS4C,EAAWC,EAAIC,EAAIC,EAAI6D,GACjI,IAAIvG,EAAengE,KAAKq/D,kBACpBwH,EAAiB7mE,KAAK+lE,gBACtBI,EAAkBnmE,KAAKgmE,iBAE3BljD,EAAA,KAAey8C,EAAYj/D,IAAI,UAAW6/D,EAAcZ,EAAYj/D,IAAI,WAAaoiE,EAAmB5C,EAAQp3D,MAAf,KAAsBg6D,EAAY,KAAO5C,EAAQl0D,QAClJkX,EAAA,KACA,aAAcqjD,EAAiB5G,EAAYj/D,IAAI,qBAAqB,IACpE,IAAIgiE,EAAcnC,EAAajnD,kBAC3B4tD,EAAiBX,EAAgBjtD,kBACjC6tD,EAAiB/mE,KAAKgnE,gBAAkB1E,EAAYK,GAAM7C,EAAQ6C,GAElEJ,EAAa,EAAED,EAAYjsD,GAAIisD,EAAYhsD,GAI1CkpD,IACH+C,EAAWG,GAAavC,EAAauG,IAIvC,IAAIO,EAAe,CAAC,EAAG,GACnBC,EAAgB,EAAEJ,EAAezwD,GAAIywD,EAAexwD,GACpD2uD,EAAgB,eAAiB1F,EAAYj/D,IAAI,iBAAiB,GAAOi/D,EAAYj/D,IAAI,WAAW,IAExG,GAAIymE,EAAgB,CAClB,IAAI7B,EAAqB3F,EAAYj/D,IAAI,sBAAsB,GAEpC,QAAvB4kE,EACFgC,EAAcxE,IAAc5C,EAAQ6C,GAAMmE,EAAenE,GAGvDsE,EAAavE,IAAcoE,EAAenE,GAAMsC,EAKtDiC,EAAc,EAAIxE,IAAcJ,EAAYM,GAAM,EAAIkE,EAAelE,GAAM,EAC3EzC,EAAa/d,YAAYmgB,GACzBsE,EAAezkB,YAAY6kB,GAC3Bd,EAAgB/jB,YAAY8kB,GAI5B,IAAInH,EAAW,CACb1pD,EAAG,EACHC,EAAG,GASL,GANAypD,EAAS4C,GAAMoE,EAAiBjH,EAAQ6C,GAAML,EAAYK,GAC1D5C,EAAS6C,GAAM7vD,KAAKkE,IAAIqrD,EAAYM,GAAKkE,EAAelE,IAExD7C,EAAS8C,GAAM9vD,KAAKiE,IAAI,EAAG8vD,EAAejE,GAAMqE,EAAc,EAAIxE,IAClEmE,EAAeX,WAAapG,EAAQ6C,GAEhCoE,EAAgB,CAClB,IAAIrlB,EAAY,CACdrrC,EAAG,EACHC,EAAG,GAELorC,EAAUihB,GAAM5vD,KAAKkE,IAAI6oD,EAAQ6C,GAAMmE,EAAenE,GAAMsC,EAAe,GAC3EvjB,EAAUkhB,GAAM7C,EAAS6C,GACzBiE,EAAeM,YAAY,IAAI,OAAa,CAC1C9hD,MAAOq8B,KAITmlB,EAAeX,WAAaxkB,EAAUihB,QAGtCwD,EAAgB/D,WAAU,SAAUl2B,GAClCA,EAAMniB,KAAK,CACT6jB,WAAW,EACXsR,QAAQ,OAMd,IAAIkoB,EAAWpnE,KAAKqnE,aAAa9H,GAWjC,OATsB,MAAtB6H,EAASE,WAAqB,OAAoBnH,EAAc,CAC9D9pD,EAAG+wD,EAASG,gBAAgB,GAC5BjxD,EAAG8wD,EAASG,gBAAgB,IAG9BR,EAAiBxH,EAAc,MAE/Bv/D,KAAKwnE,oBAAoBjI,EAAa6H,GAE/BrH,GAGT8F,EAAqBv7D,UAAUm8D,QAAU,SAAUgB,EAAIlI,EAAapiD,GAClE,IAAI0nD,EAAkB7kE,KAAKqnE,aAAa9H,GAAakI,GAElC,MAAnB5C,GAA2B1nD,EAAIqyC,eAAe,CAC5C1sD,KAAM,eACN+hE,gBAAiBA,EACjB6C,SAAUnI,EAAYh4D,MAI1Bs+D,EAAqBv7D,UAAUk9D,oBAAsB,SAAUjI,EAAa6H,GAC1E,IAAIjB,EAAkBnmE,KAAKgmE,iBAC3B,UAAY,CAAC,WAAY,aAAa,SAAUpjE,GAC9C,IAAI0D,EAAM1D,EAAO,YACb+kE,EAA2B,MAAjBP,EAAS9gE,GACnBkqC,EAAO21B,EAAgB/gB,YAAYxiD,GAEnC4tC,IACFA,EAAKtsB,SAAS,OAAQyjD,EAAUpI,EAAYj/D,IAAI,iBAAiB,GAAQi/D,EAAYj/D,IAAI,yBAAyB,IAClHkwC,EAAK7E,OAASg8B,EAAU,UAAY,cAGxC,IAAIC,EAAWzB,EAAgB/gB,YAAY,YACvC+f,EAAgB5F,EAAYj/D,IAAI,iBAChCgnE,EAAYF,EAASE,UACrBO,EAAuB,MAAbP,EAAoBA,EAAY,EAAI,EAC9CQ,EAAQV,EAASW,UACrBH,GAAYzC,GAAiByC,EAAS1jD,SAAS,OAAQ,cAAgBihD,GAAiBA,EAAc70D,QAAQ,YAAwB,MAAXu3D,EAAkB,GAAKA,EAAU,IAAIv3D,QAAQ,UAAoB,MAATw3D,EAAgB,GAAKA,EAAQ,IAAM3C,EAAc,CAClO0C,QAASA,EACTC,MAAOA,MAaXjC,EAAqBv7D,UAAU+8D,aAAe,SAAU9H,GACtD,IAAIsF,EAAkBtF,EAAYj/D,IAAI,mBAAmB,GACrD6/D,EAAengE,KAAKq/D,kBACpB2I,EAAoBhoE,KAAK+lE,gBAAgBG,WACzCxD,EAAYnD,EAAY/B,YAAYt7D,MACpCygE,EAAKgD,EAAGjD,GACRgE,EAAKd,EAAGlD,GAERuF,EAAkBjoE,KAAKkoE,qBAAqBrD,GAE5CvyD,EAAW6tD,EAAa7tD,WACxB61D,EAAa71D,EAAS21D,GACtBG,EAAY91D,EAASvM,OACrBsiE,EAAUD,EAAgB,EAAJ,EACtB7nE,EAAS,CACXgnE,gBAAiB,CAACpH,EAAa9pD,EAAG8pD,EAAa7pD,GAC/CyxD,UAAWM,EACXf,UAAWe,EAAS,EACpBC,kBAAmB,KACnBC,kBAAmB,MAGrB,IAAKJ,EACH,OAAO5nE,EAGT,IAAIioE,EAAiBC,EAAYN,GACjC5nE,EAAOgnE,gBAAgB7E,IAAc8F,EAAe78C,EAYpD,IAAK,IAAI7lB,EAAImiE,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAM9iE,GAAKsiE,IAAatiE,EAC3I8iE,EAAeH,EAAYn2D,EAASxM,MAGnC8iE,GAAgBD,EAAen7D,EAAIk7D,EAAiB/8C,EAAIq8C,GAEzDY,IAAiBC,EAAUD,EAAcF,EAAiB/8C,MAEtD+8C,EADEC,EAAe7iE,EAAI4iE,EAAiB5iE,EACnB6iE,EAGAC,EAGjBF,IAC8B,MAA5BnoE,EAAOgoE,oBACThoE,EAAOgoE,kBAAoBG,EAAiB5iE,KAG5CvF,EAAOwnE,YAIbY,EAAiBC,EAGnB,IAAS9iE,EAAImiE,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAM9iE,IAAM,IAAKA,EACpI8iE,EAAeH,EAAYn2D,EAASxM,IAIlC8iE,GAAiBC,EAAUF,EAAgBC,EAAaj9C,MAC1D+8C,EAAiB5iE,EAAI6iE,EAAe7iE,KAClC6iE,EAAiBD,EAEe,MAA5BnoE,EAAO+nE,oBACT/nE,EAAO+nE,kBAAoBI,EAAiB5iE,KAG5CvF,EAAOwnE,YACPxnE,EAAO+mE,WAGXoB,EAAmBE,EAGrB,OAAOroE,EAEP,SAASkoE,EAAYruD,GACnB,GAAIA,EAAI,CACN,IAAI0uD,EAAW1uD,EAAGlB,kBACdyd,EAAQmyC,EAASpC,GAAMtsD,EAAGssD,GAC9B,MAAO,CACL/6C,EAAGgL,EACHnpB,EAAGmpB,EAAQmyC,EAASnG,GACpB78D,EAAGsU,EAAGioD,oBAKZ,SAASwG,EAAUE,EAAUC,GAC3B,OAAOD,EAASv7D,GAAKw7D,GAAYD,EAASp9C,GAAKq9C,EAAWhB,IAI9DnC,EAAqBv7D,UAAU49D,qBAAuB,SAAUe,GAC9D,IAAKjpE,KAAKgnE,gBACR,OAAO,EAGT,IAAI9kE,EAEAgnE,EADA/I,EAAengE,KAAKq/D,kBAiBxB,OAfAc,EAAaiC,WAAU,SAAUl2B,EAAOhjC,GACtC,IAAIigE,EAAgBj9B,EAAMm2B,kBAMN,MAAhB6G,GAAyC,MAAjBC,IAC1BD,EAAehgE,GAGbigE,IAAkBF,IACpB/mE,EAAQgH,MAGI,MAAThH,EAAgBA,EAAQgnE,GAGjCrD,EAAqB/iE,KAAO,gBACrB+iE,EAvYT,CAwYE,GAEa,ICzZA,SAASuD,EAA8Bl5C,GAOpDA,EAAUG,eAAe,eAAgB,gBAAgB,SAAU/E,EAAS3pB,GAC1E,IAAIkjE,EAAkBv5C,EAAQu5C,gBACX,MAAnBA,GAA2BljE,EAAQg1D,cAAc,CAC/Cv2C,SAAU,SACVipD,QAAS,SACTzS,MAAOtrC,IACN,SAAUi0C,GACXA,EAAYqF,mBAAmBC,SCT9B,SAAS,EAAQ30C,GACtB,eAAID,GACJC,EAAUo0C,uBAAuB,GACjCp0C,EAAUq0C,sBAAsB,GAChC6E,EAA8Bl5C,GCNzB,SAAS,EAAQA,GACtB,eAAID,GACJ,eAAI","file":"js/Cass-prescriptanslysis.b8a12a22.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./rxanalysis.vue?vue&type=style&index=0&id=f6dba93e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./brain.vue?vue&type=style&index=0&id=4214f81b&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\nimport { createHashMap, retrieve, each } from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../util/model.js';\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\n\nvar CoordSysInfo =\n/** @class */\nfunction () {\n function CoordSysInfo(coordSysName) {\n this.coordSysDims = [];\n this.axisMap = createHashMap();\n this.categoryAxisMap = createHashMap();\n this.coordSysName = coordSysName;\n }\n\n return CoordSysInfo;\n}();\n\nexport function getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!xAxisModel) {\n throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\n }\n\n if (!yAxisModel) {\n throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\n }\n }\n\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!singleAxisModel) {\n throw new Error('singleAxis should be specified.');\n }\n }\n\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n\n if (process.env.NODE_ENV !== 'production') {\n if (!angleAxisModel) {\n throw new Error('angleAxis option not found');\n }\n\n if (!radiusAxisModel) {\n throw new Error('radiusAxis option not found');\n }\n }\n\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel)) {\n categoryAxisMap.set(axisDim, axisModel);\n\n if (result.firstCategoryDimIndex == null) {\n result.firstCategoryDimIndex = index;\n }\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport { getDataItemValue } from '../../util/model.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport { getCoordSysInfoBySeries } from '../../model/referHelper.js';\nimport { createSourceFromSeriesDataOption } from '../../data/Source.js';\nimport { enableDataStack } from '../../data/helper/dataStackHelper.js';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper.js';\nimport { SOURCE_FORMAT_ORIGINAL } from '../../util/types.js';\n\nfunction getCoordSysDimDefs(seriesModel, coordSysInfo) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysDimDefs;\n\n if (coordSysInfo && coordSysInfo.coordSysDims) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n return coordSysDimDefs;\n}\n\nfunction injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n\n if (createInvertedIndices) {\n dimInfo.createInvertedIndices = true;\n }\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n return firstCategoryDimIndex;\n}\n/**\n * Caution: there are side effects to `sourceManager` in this method.\n * Should better only be called in `Series['getInitialData']`.\n */\n\n\nfunction createSeriesData(sourceRaw, seriesModel, opt) {\n opt = opt || {};\n var sourceManager = seriesModel.getSourceManager();\n var source;\n var isOriginalSource = false;\n\n if (sourceRaw) {\n isOriginalSource = true;\n source = createSourceFromSeriesDataOption(sourceRaw);\n } else {\n source = sourceManager.getSource(); // Is series.data. not dataset.\n\n isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;\n }\n\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);\n var useEncodeDefaulter = opt.useEncodeDefaulter;\n var encodeDefaulter = zrUtil.isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;\n var createDimensionOptions = {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefine: seriesModel.getEncode(),\n encodeDefaulter: encodeDefaulter,\n canOmitUnusedDimensions: !isOriginalSource\n };\n var schema = prepareSeriesDataSchema(source, createDimensionOptions);\n var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);\n var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;\n var stackCalculationInfo = enableDataStack(seriesModel, {\n schema: schema,\n store: store\n });\n var data = new SeriesData(schema, seriesModel);\n data.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n data.hasItemOption = false;\n data.initData( // Try to reuse the data store in sourceManager if using dataset.\n isOriginalSource ? source : store, null, dimValueGetter);\n return data;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(arr) {\n var i = 0;\n\n while (i < arr.length && arr[i] == null) {\n i++;\n }\n\n return arr[i];\n}\n\nexport default createSeriesData;","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./caseeffect.vue?vue&type=style&index=0&id=68d29b8a&lang=scss\"","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1faff333\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"casstable\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { key: 2 }\n\nimport { reactive, ref, watch} from \"vue\";\r\nimport { ImgUrlFix } from '@u/contant'\r\nimport effectmodel from './effectmodel.vue'\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'casstable',\n props: {\n tableData: null,\n arrlenth: null,\n tableType: null\n },\n emits: ['emitshowCaseNo', 'emitshowEffect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n tableData: any,\r\n arrlenth: any,\r\n tableType: any\r\n };\n\r\n\r\n\r\nconst activeName = ref('first')\r\nconst showCaseDetails = ref(false);//是否显示病案弹框\r\nconst showEffectDetails = ref(false);//是否显示疗效弹框\r\nconst tableList = reactive(props.tableData)\r\n\r\n//点击病案代号。弹出病案页面\r\nconst handleCaseNo = (index:number, item:any) => {\r\n const row = {id:'',per:'',patnId:''}\r\n row.id = item['id' + index]\r\n row.patnId = item['patnId' + index]\r\n emit('emitshowCaseNo',{\r\n data: row,\r\n index\r\n })\r\n\r\n}\r\n//点击百分比。弹出疗效弹窗\r\nconst handleEffect = (index:number, item:any) => {//i是$index,\r\n if(typeof(item) == 'number' && item > -1){\r\n const row = {id:'', per:'', patnId:'', patName:''}\r\n row.id = tableList[0]['effcollId' + index] || tableList[0]['id' + index];\r\n row.per = item > -1 ? item : 0 ;\r\n row.patName = tableList[0]['column' + index];\r\n emit('emitshowEffect',row)\r\n }\r\n \r\n}\r\nwatch(() => props.tableData, (val) => {\r\n props.tableData = val \r\n },{\r\n immediate:true\r\n })\r\nwatch(() => props.arrlenth, (val) => {\r\n props.arrlenth = val \r\n})\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_table_column = _resolveComponent(\"el-table-column\")!\n const _component_el_table = _resolveComponent(\"el-table\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_table, {\n data: tableList,\n \"show-header\": false,\n style: {\"width\":\"100%\",\"overflow-y\":\"scroll\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_table_column, { width: \"100\" }, {\n default: _withCtx((scope) => [\n _createTextVNode(_toDisplayString(scope.row.title), 1)\n ]),\n _: 1\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.arrlenth, (item, idx) => {\n return (_openBlock(), _createBlock(_component_el_table_column, {\n width: \"360\",\n prop: 'column' + idx,\n key: idx\n }, {\n default: _withCtx((scope) => [\n (scope.$index == 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n onClick: ($event: any) => (handleCaseNo(idx, scope.row)),\n class: _normalizeClass({'underline':scope.row['column' + idx] > -1 })\n }, [\n _createTextVNode(_toDisplayString(scope.row['column' + idx]), 1),\n (scope.row['isSeminar' + idx])\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"img\",\n src: _unref(ImgUrlFix) + 'images/research.png',\n alt: \"\"\n }, null, 8, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : (scope.$index == 1)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass({'underline':scope.row['column' + idx] > -1 }),\n onClick: ($event: any) => (handleEffect(idx, scope.row['column' + idx]))\n }, _toDisplayString(scope.row['column' + idx] > -1 ? scope.row['column' + idx] + '%' : '--'), 11, _hoisted_4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(scope.row['column' + idx]), 1))\n ]),\n _: 2\n }, 1032, [\"prop\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"data\"])\n ]))\n}\n}\n\n})","import script from \"./casstable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./casstable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./casstable.vue?vue&type=style&index=0&id=1faff333&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1faff333\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-607436bd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"breadnav\" }\n\nimport {ref} from \"vue\";\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'breadnav',\n props: {\n firsttitle: null,\n secondtitle: null\n },\n emits: ['emitshowNav'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n firsttitle: any,\r\n secondtitle: any\r\n };\n\r\n\r\n\r\nconst propsecondtitle = ref(props.secondtitle)\r\nconst showCaseBack = () => {\r\n emit('emitshowNav')\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h4\", null, _toDisplayString(props.firsttitle), 1),\n _createTextVNode(\" > \"),\n _createElementVNode(\"h4\", null, _toDisplayString(propsecondtitle.value), 1),\n _createElementVNode(\"i\", { onClick: showCaseBack }, \"返回\")\n ]))\n}\n}\n\n})","import script from \"./breadnav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./breadnav.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./breadnav.vue?vue&type=style&index=0&id=607436bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-607436bd\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar AxisModelCommonMixin =\n/** @class */\nfunction () {\n function AxisModelCommonMixin() {}\n\n AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\n var option = this.option;\n return !option.scale;\n };\n /**\n * Should be implemented by each axis model if necessary.\n * @return coordinate system model\n */\n\n\n AxisModelCommonMixin.prototype.getCoordSysModel = function () {\n return;\n };\n\n return AxisModelCommonMixin;\n}();\n\nexport { AxisModelCommonMixin };","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./emrDetail.vue?vue&type=style&index=0&id=2de394cd&lang=scss\"","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5df4f414\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"cStep-line\" }, null, -1))\nconst _hoisted_2 = {\n key: 0,\n class: \"cStep-assistLabel\"\n}\nconst _hoisted_3 = { class: \"cStep-icon\" }\nconst _hoisted_4 = { class: \"cStep-content\" }\nconst _hoisted_5 = { class: \"cStep-content_title\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"cStep-content_description\" }\n\nimport { withDefaults, inject } from 'vue';\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'cStep',\n props: {\n modelValue: { default: 0 },\n direction: { default: 'vertical' },\n title: { default: '' },\n description: { default: '' },\n assistLabel: { default: '' },\n index: { default: 0 }\n },\n emits: [\"select\"],\n setup(__props: any, { emit: emits }: { emit: ({\r\n (e: 'select', val: number): void\r\n }), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { modelValue: number, direction: 'vertical' | 'horizontal', title: string, description: string, assistLabel: string, index: number };\n\r\n \r\n \r\n const strpsProp: any = inject('stepsProps');\r\n const select = () => {\r\n emits('select', props.index)\r\n }\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n onClick: select,\n class: _normalizeClass([\"cStep\", {active: _unref(strpsProp).modelValue == props.index}])\n }, [\n _hoisted_1,\n (props.assistLabel)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(props.assistLabel), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n (props.title)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(props.title), 1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(props.description), 1),\n _renderSlot(_ctx.$slots, \"description\")\n ])\n ])\n ], 2))\n}\n}\n\n})","import script from \"./cStep.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./cStep.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./cStep.vue?vue&type=style&index=0&id=5df4f414&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5df4f414\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1508654f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"cSteps\" }\n\nimport { withDefaults, provide, inject } from 'vue';\r\n interface listItemRole {\r\n title: string | number,\r\n label: string | number\r\n }\r\n \r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'cSteps',\n props: {\n modelValue: { default: 0 },\n list: { default: [] },\n direction: { default: 'vertical' },\n height: { default: 0 }\n },\n setup(__props: any) {\n\nconst props = __props as { modelValue: number, list: listItemRole[], direction: 'vertical' | 'horizontal', height: number | string };\n\r\n \r\n provide('stepsProps', props);\r\n\r\n const select = () => {\r\n }\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"ul\", {\n class: _normalizeClass([\"cSteps\", [props.direction]]),\n style: _normalizeStyle({height: props.height})\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ]))\n}\n}\n\n})","import script from \"./cSteps.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./cSteps.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./cSteps.vue?vue&type=style&index=0&id=1508654f&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1508654f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, unref as _unref, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"emrDetail-stepTitle emrDetail-stepTitle-out\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", null, \" \"),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"疗效指数\"),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"医生\")\n], -1)\nconst _hoisted_2 = { class: \"emrDetail-stepTitle\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"span\", null, \"关联临床研讨:\", -1)\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"span\", null, \"病案标签:\", -1)\nconst _hoisted_5 = { class: \"dialog-footer\" }\n\nimport { reactive, onMounted, ref, watch, toRefs, watchEffect, Ref, computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport cCell from '@c/public/cCell/cCell.vue'\r\nimport { cSteps, cStep } from '@c/public/cSteps';\r\nimport pickerGroup from '@c/public/pickerGroup/pickerGroup.vue'\r\nimport { emrDetail } from 'br-components'\r\nimport { ElNotification, ElLoading } from \"element-plus\";\r\nimport { detailRole } from './role'\r\nimport { getEmrDetail, getQueryStreamline, updateEmrType, getClinicalSeminarTree, saveClinicalSeminarEmr, getTmplInfoByid} from '@/request/api/xingling'\r\nimport { pbFn } from '@u/publicMethod'\r\nimport { drugUeWayList, qidList } from '@u/contant'\r\n\r\ninterface formItemRole {\r\n title: string\r\n label: string\r\n type: string\r\n labelTip?: boolean\r\n code?: string\r\n}\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'emrDetail',\n props: {\n modelValue: { type: Boolean, default: false },\n dataId: { default: '' },\n patnId: { default: '' },\n title: { default: '预览' },\n isSimplyType: { type: Boolean, default: false }\n },\n emits: [\"update:modelValue\", \"changeEmrType\"],\n setup(__props: any, { emit: emits }: { emit: ({\r\n (e: 'update:modelValue', val: boolean): void,\r\n (e: 'changeEmrType', val: any): void\r\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { modelValue: boolean, dataId: string, patnId: string, title: string, isSimplyType: boolean };\n\r\nconst { state } = useStore();\r\n\r\n/**\r\n * dataId: 病历id\r\n * patnId: 患者id\r\n */\r\n\r\n\r\nconst sexList = reactive(['', '男', '女'])\r\nconst medicineRadio: Ref = ref('');\r\nconst dataLoading = ref(true);\r\nconst listLoading = ref(true);\r\n\r\nconst startval = ref(pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0]);\r\nconst endval = ref(pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0]);\r\nconst initDate = (): string[] => {\r\n startval.value = pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0];\r\n endval.value = pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0];\r\n return [pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0], pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0]];\r\n}\r\nconst dateValue: Ref = ref(initDate())\r\nconst emrList: any = reactive([]);\r\nconst emrData: any = reactive({})\r\n\r\nconst defaultTmplSelectKeys: string[] = reactive([]) //默认选中的研讨\r\nconst curAutor = ref(false);//当前病案所属医生是否当前医生\r\nconst userName = computed(() => state.userInfo.B_RealName)\r\nconst selectTree = (e: any) => {\r\n if (e.level == 3 && !e.disabled) {\r\n let loading = ElLoading.service({\r\n lock: true,\r\n text: '正在保存...',\r\n background: 'rgba(0, 0, 0, 0.7)',\r\n })\r\n const vsErmList = saveClinicalSeminarEmr({\r\n data: {\r\n \"clinicalSeminarId\": e.grapaId,//临床研讨id ,\r\n \"mdtrtNo\": emrData.mdtrt_no,//就诊号 ,\r\n \"patnId\": emrData.patn_id,//患者id ,\r\n \"synDiffId\": e.id,// 辨证id ,\r\n \"tmplId\": e.parentId//模型id\r\n }\r\n })\r\n .then((data: any) => {\r\n const val = medicineRadio.value\r\n emits('changeEmrType', val)\r\n loading.close()\r\n })\r\n .catch((err: any) => {\r\n loading.close()\r\n });\r\n\r\n }\r\n}\r\n\r\n\r\n\r\nconst treeValue = ref('')\r\n\r\nconst clinicalSeminarTree: any = reactive([])\r\nconst treeData = ref(clinicalSeminarTree)\r\n\r\nconst caseList: formItemRole[] = reactive([\r\n { title: '主诉:', label: '', type: 'chfcomp' },\r\n { title: '现病史:', label: '', type: 'dise_now' },\r\n { title: '既往史:', label: '', type: 'dise_his' },\r\n { title: '过敏史:', label: '', type: 'algs_his' },\r\n { title: '个人史:', label: '', type: 'psn_his' },\r\n { title: '婚育史:', label: '', type: 'mrg_his' },\r\n { title: '家族史:', label: '', type: 'fm_his' },\r\n { title: '中医“四诊”观察结果:', label: '', type: 'tcm4d_rslt' },\r\n // { title: '体格检查:', label: '', type: 'chfcomp' },\r\n { title: '体格体征检查:', label: '', type: 'physexm' },\r\n { title: '辅助检查:', label: '', type: 'asst_exam_rslt' },\r\n { title: '中医诊断:', label: '', type: 'tcm_dise_name', labelTip: true },\r\n { title: '中医辨证:', label: '', type: 'tcm_symp_name', labelTip: true },\r\n { title: '西医诊断:', label: '', type: 'wm_diag_name', labelTip: true },\r\n { title: '辨证依据:', label: '', type: 'symp_evid' },\r\n { title: '治则治法:', label: '', type: 'prnp_trt', labelTip: true },\r\n { title: '医嘱信息:', label: '', type: '' },\r\n]);\r\nconst recipeData: any = reactive({})\r\nconst stepActive: Ref = ref(0)\r\n\r\nconst drugUeWayData: any = reactive({});\r\ndrugUeWayList.forEach(t => {\r\n drugUeWayData[t.id] = t.name;\r\n})\r\nconst qidData: any = reactive({});\r\nqidList.forEach(t => {\r\n qidData[t.value] = t.title;\r\n})\r\nconst selectStep = (idx: number) => {\r\n stepActive.value = idx\r\n getDetail(emrList[idx].id)\r\n}\r\nconst getData = async (data: detailRole) => {\r\n getDetail(data.dataId)\r\n getEmrList(data.patnId)\r\n}\r\nconst getDetail = async (id: string) => {\r\n dataLoading.value = true;\r\n const emrDetailData = await getEmrDetail({\r\n data: {\r\n id: id,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n if(emrDetailData.cseIsDeleted == 1){//关联研讨删除\r\n treeValue.value = ''\r\n }else if(emrDetailData.cseIsDeleted == 2){//关联研讨结束\r\n const getTmplInfo = await getTmplInfoByid({\r\n data: {\r\n id: emrDetailData.synDiffId,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n treeValue.value = getTmplInfo.alias ? getTmplInfo.name + '(' + getTmplInfo.alias + ')' : getTmplInfo.name\r\n\r\n }else{\r\n treeValue.value = emrDetailData.synDiffId\r\n }\r\n emrDetailData.mdtrt_date = emrDetailData.mdtrt_date ? emrDetailData.mdtrt_date.replace('T', ' ') : ''\r\n curAutor.value = emrDetailData.emrExpand.atddrName !== userName.value //病案医生和当前医生一致可选\r\n\r\n var wm_diagsArr = [], tcm_disesArr = []\r\n if ('tcm_dises' in emrDetailData == false || !emrDetailData.tcm_dises.length) {//不存在属性和没有数组,取字符串的值\r\n tcm_disesArr.push({\r\n name: emrDetailData.tcm_dise_name,\r\n code: emrDetailData.tcm_dise_code\r\n })\r\n emrDetailData.tcm_dises = tcm_disesArr\r\n }\r\n if ('wm_diags' in emrDetailData == false || !emrDetailData.wm_diags.length) {\r\n wm_diagsArr.push({\r\n name: emrDetailData.wm_diag_name,\r\n code: emrDetailData.wm_diag_code\r\n })\r\n emrDetailData.wm_diags = wm_diagsArr.length\r\n }\r\n\r\n Object.assign(emrData, emrDetailData)\r\n caseList.map(t => {\r\n if (t.type == 'tcm4d_rslt') {\r\n var label = '';\r\n var data: any = {};\r\n try {\r\n data = JSON.parse(emrDetailData[t.type] || '{}');\r\n } catch (error) {\r\n data = { key: emrDetailData[t.type] }\r\n }\r\n for (const v in data) {\r\n label += data[v] + ','\r\n }\r\n t.label = label.slice(0, label.length - 1)\r\n } else {\r\n if (t.labelTip) {\r\n if (t.type == 'tcm_dise_name') {\r\n t.code = emrDetailData.tcm_dise_code\r\n } else if (t.type == 'tcm_symp_name') {\r\n t.code = emrDetailData.tcm_symp_code\r\n } else if (t.type == 'wm_diag_name') {\r\n t.code = emrDetailData.wm_diag_code\r\n } else if (t.type == 'prnp_trt') {\r\n t.code = emrDetailData.prnp_trt_code\r\n }\r\n }\r\n t.label = emrDetailData[t.type];\r\n }\r\n\r\n return t\r\n })\r\n // recipeData.splice(0, recipeData.length, ...emrDetailData.drord);\r\n\r\n Object.assign(recipeData, emrDetailData.drord)\r\n medicineRadio.value = emrDetailData.emrExpand ? (emrDetailData.emrExpand.emrType === '' || emrDetailData.emrExpand.emrType === null) ? '' : emrDetailData.emrExpand.emrType : ''\r\n dataLoading.value = false;\r\n}\r\n\r\nconst getEmrList = async (id: string) => {\r\n listLoading.value = true;\r\n await getClinicalSeminarTree({\r\n data: {\r\n isSelectAll: true\r\n }\r\n })\r\n .then((data: any) => {\r\n const list: any[] = [];\r\n data.forEach((item: any) => {\r\n let tmplList: any = [];\r\n if (item.tmplList?.length) {\r\n item.tmplList.forEach((obj: any) => {\r\n let synList: any = []\r\n if (obj.synDiffList?.length) {\r\n obj.synDiffList.forEach((obj1: any) => {\r\n synList.push({\r\n ...obj1,\r\n grapaId: item.id,\r\n parentId: obj.id,\r\n label: obj1.alias ? obj1.name + '(' + obj1.alias + ')' : obj1.name,\r\n value: obj1.id,\r\n level: 3\r\n })\r\n\r\n })\r\n }\r\n tmplList.push({\r\n ...obj,\r\n label: obj.alias ? obj.dxName + '(' + obj.alias + ')' : obj.dxName,\r\n value: obj.id,\r\n level: 2,\r\n children: synList\r\n })\r\n\r\n\r\n })\r\n\r\n }\r\n list.push({\r\n ...item,\r\n label: item.name,\r\n value: item.id,\r\n level: 1,\r\n children: tmplList\r\n\r\n })\r\n clinicalSeminarTree.splice(0, clinicalSeminarTree.length, ...list)\r\n });\r\n })\r\n .catch((err: any) => { });\r\n const Treedata = ref(clinicalSeminarTree)\r\n\r\n const QueryStreamlineData = await getQueryStreamline({\r\n data: {\r\n patnId: id,\r\n startDate: startval.value,\r\n endDate: endval.value,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n\r\n QueryStreamlineData.splice(0, QueryStreamlineData.length, ...QueryStreamlineData)\r\n\r\n QueryStreamlineData.map((t: any, i: number) => {\r\n\r\n if (QueryStreamlineData[i + 1]) {\r\n var times = new Date(t.mdtrtDate).getTime() - new Date(QueryStreamlineData[i + 1].mdtrtDate).getTime();\r\n t.AssistLabel = Math.floor(times / (60 * 60 * 24 * 1000)) + '天'\r\n }\r\n return t\r\n })\r\n emrList.splice(0, emrList.length, ...QueryStreamlineData)\r\n\r\n QueryStreamlineData.forEach((t: any, i: number) => {\r\n if (t.id == props.dataId) {\r\n stepActive.value = i\r\n }\r\n })\r\n\r\n\r\n listLoading.value = false;\r\n}\r\n\r\nwatch(() => props.modelValue, (val: boolean) => {\r\n dateValue.value = initDate()\r\n\r\n\r\n if (val) {\r\n // stepActive.value = emrList.filter(t => t.)\r\n getData({\r\n dataId: props.dataId,\r\n patnId: props.patnId\r\n })\r\n }\r\n\r\n})\r\nwatch(startval, data => {\r\n if (data == null) {\r\n startval.value = ''\r\n } else {\r\n getEmrList(props.patnId)\r\n }\r\n})\r\nwatch(endval, data => {\r\n if (data == null) {\r\n endval.value = ''\r\n } else {\r\n getEmrList(props.patnId)\r\n }\r\n})\r\n//修改精选、存疑\r\nconst changeEmrType = async (val: any) => {\r\n dataLoading.value = true;\r\n await updateEmrType({\r\n data: {\r\n \"emrType\": val,\r\n //\"id\": props.dataId,\r\n \"id\": emrList[stepActive.value].id,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n dataLoading.value = false;\r\n\r\n emits('changeEmrType', val)\r\n}\r\n// watch(medicineRadio, async val => {\r\n// dataLoading.value = true;\r\n// await updateEmrType({\r\n// data: {\r\n// \"emrType\": val,\r\n// \"id\": props.dataId,\r\n// _times: new Date().getTime()\r\n// }\r\n// })\r\n// dataLoading.value = false;\r\n// emits('changeEmrType', val)\r\n// })\r\n\r\nconst onClose = () => {\r\n emits('update:modelValue', false)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_space = _resolveComponent(\"el-space\")!\n const _component_el_aside = _resolveComponent(\"el-aside\")!\n const _component_el_tree_select = _resolveComponent(\"el-tree-select\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createBlock(_component_el_dialog, {\n modelValue: props.modelValue,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((props.modelValue) = $event)),\n title: __props.title,\n width: \"80%\",\n onClose: onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"custom-class\": \"emrDetail\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_5, [\n _createVNode(_component_el_button, {\n type: \"success\",\n plain: \"\",\n onClick: onClose\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_el_container, {\n class: _normalizeClass([\"emrDetail-container\", [__props.isSimplyType === false ? '' : 'simple']])\n }, {\n default: _withCtx(() => [\n (!__props.isSimplyType)\n ? (_openBlock(), _createBlock(_component_el_aside, {\n key: 0,\n class: \"emrDetail-aside\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_space, null, {\n default: _withCtx(() => [\n _createVNode(pickerGroup, {\n startDate: startval.value,\n \"onUpdate:startDate\": _cache[0] || (_cache[0] = ($event: any) => ((startval).value = $event)),\n endDate: endval.value,\n \"onUpdate:endDate\": _cache[1] || (_cache[1] = ($event: any) => ((endval).value = $event))\n }, null, 8, [\"startDate\", \"endDate\"])\n ]),\n _: 1\n }),\n _hoisted_1,\n _createVNode(_unref(cSteps), {\n class: \"emrDetail-step scrollGood\",\n height: emrList.length * 90 + 'px',\n modelValue: stepActive.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((stepActive).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(emrList, (item, idx) => {\n return (_openBlock(), _createBlock(_unref(cStep), {\n assistLabel: item.AssistLabel,\n class: \"pointer\",\n onSelect: selectStep,\n index: idx,\n description: item.tcmDiseName + '(' + item.tcmSympName + ')',\n key: idx\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(item.mdtrtDate ? item.mdtrtDate.split('T')[0] : ''), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.emrExpand.curEff > -1 ? item.emrExpand.curEff + '%' : '--'), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.emrExpand.atddrName != _unref(userName) ? item.emrExpand.atddrName : ''), 1)\n ])\n ]),\n _: 2\n }, 1032, [\"assistLabel\", \"index\", \"description\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"height\", \"modelValue\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_el_container, { class: \"emrDetail-container\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, { class: \"emrDetail-header\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", null, [\n _hoisted_3,\n _createVNode(_component_el_tree_select, {\n modelValue: treeValue.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((treeValue).value = $event)),\n class: \"select-height\",\n clearable: \"\",\n filterable: \"\",\n data: treeData.value,\n onNodeClick: selectTree,\n disabled: __props.isSimplyType || emrData.cseIsDeleted == 2 || curAutor.value\n }, null, 8, [\"modelValue\", \"data\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", null, [\n _hoisted_4,\n _createVNode(_component_el_select, {\n onChange: changeEmrType,\n modelValue: medicineRadio.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((medicineRadio).value = $event)),\n placeholder: \"请选择\",\n disabled: __props.isSimplyType || curAutor.value\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_option, {\n label: \"请选择\",\n value: \"\"\n }),\n _createVNode(_component_el_option, {\n label: \"精选病案\",\n value: 0\n }),\n _createVNode(_component_el_option, {\n label: \"存疑病案\",\n value: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _: 1\n }),\n _withDirectives((_openBlock(), _createBlock(_component_el_main, { class: \"emrDetail-form\" }, {\n default: _withCtx(() => [\n (!dataLoading.value)\n ? (_openBlock(), _createBlock(_unref(emrDetail), {\n key: 0,\n emrData: emrData\n }, null, 8, [\"emrData\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })), [\n [_directive_loading, dataLoading.value]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]))\n}\n}\n\n})","import script from \"./emrDetail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./emrDetail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./emrDetail.vue?vue&type=style&index=0&id=2de394cd&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./breadnav.vue?vue&type=style&index=0&id=607436bd&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./prescriptanslysis.vue?vue&type=style&index=0&id=0b767a65&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module exposes helper functions for developing extensions.\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport createSeriesData from '../../chart/helper/createSeriesData.js'; // import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge.js';\n\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport { AxisModelCommonMixin } from '../../coord/axisModelCommonMixin.js';\nimport Model from '../../model/Model.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport { enableDataStack, isDimensionStacked, getStackedDimension } from '../../data/helper/dataStackHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle.js';\n/**\n * Create a muti dimension List structure from seriesModel.\n */\n\nexport function createList(seriesModel) {\n return createSeriesData(null, seriesModel);\n} // export function createGraph(seriesModel) {\n// let nodes = seriesModel.get('data');\n// let links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\nexport { getLayoutRect };\nexport { createDimensions } from '../../data/helper/createDimensions.js';\nexport var dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\nexport { createSymbol } from '../../util/symbol.js';\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option If `optoin.type`\n * is secified, it can only be `'value'` currently.\n */\n\nexport function createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!(option instanceof Model)) {\n axisModel = new Model(option); // FIXME\n // Currently AxisModelCommonMixin has nothing to do with the\n // the requirements of `axisHelper.createScaleByModel`. For\n // example the method `getCategories` and `getOrdinalMeta`\n // are required for `'category'` axis, and ecModel are required\n // for `'time'` axis. But occationally echarts-gl happened\n // to only use `'value'` axis.\n // zrUtil.mixin(axisModel, AxisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n */\n\nexport function mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, AxisModelCommonMixin);\n}\nexport { getECData };\nexport { enableHoverEmphasis } from '../../util/states.js';\nexport function createTextStyle(textStyleModel, opts) {\n opts = opts || {};\n return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal');\n}","import windingLine from './windingLine.js';\nvar EPSILON = 1e-8;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nexport function contain(points, x, y) {\n var w = 0;\n var p = points[0];\n if (!p) {\n return false;\n }\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n }\n var p0 = points[0];\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n return w !== 0;\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as polygonContain from 'zrender/lib/contain/polygon.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport { each } from 'zrender/lib/core/util.js';\nvar TMP_TRANSFORM = [];\n\nfunction transformPoints(points, transform) {\n for (var p = 0; p < points.length; p++) {\n vec2.applyTransform(points[p], points[p], transform);\n }\n}\n\nfunction updateBBoxFromPoints(points, min, max, projection) {\n for (var i = 0; i < points.length; i++) {\n var p = points[i];\n\n if (projection) {\n // projection may return null point.\n p = projection.project(p);\n }\n\n if (p && isFinite(p[0]) && isFinite(p[1])) {\n vec2.min(min, min, p);\n vec2.max(max, max, p);\n }\n }\n}\n\nfunction centroid(points) {\n var signedArea = 0;\n var cx = 0;\n var cy = 0;\n var len = points.length;\n var x0 = points[len - 1][0];\n var y0 = points[len - 1][1]; // Polygon should been closed.\n\n for (var i = 0; i < len; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n x0 = x1;\n y0 = y1;\n }\n\n return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points[0][0] || 0, points[0][1] || 0];\n}\n\nvar Region =\n/** @class */\nfunction () {\n function Region(name) {\n this.name = name;\n }\n\n Region.prototype.setCenter = function (center) {\n this._center = center;\n };\n /**\n * Get center point in data unit. That is,\n * for GeoJSONRegion, the unit is lat/lng,\n * for GeoSVGRegion, the unit is SVG local coord.\n */\n\n\n Region.prototype.getCenter = function () {\n var center = this._center;\n\n if (!center) {\n // In most cases there are no need to calculate this center.\n // So calculate only when called.\n center = this._center = this.calcCenter();\n }\n\n return center;\n };\n\n return Region;\n}();\n\nexport { Region };\n\nvar GeoJSONPolygonGeometry =\n/** @class */\nfunction () {\n function GeoJSONPolygonGeometry(exterior, interiors) {\n this.type = 'polygon';\n this.exterior = exterior;\n this.interiors = interiors;\n }\n\n return GeoJSONPolygonGeometry;\n}();\n\nexport { GeoJSONPolygonGeometry };\n\nvar GeoJSONLineStringGeometry =\n/** @class */\nfunction () {\n function GeoJSONLineStringGeometry(points) {\n this.type = 'linestring';\n this.points = points;\n }\n\n return GeoJSONLineStringGeometry;\n}();\n\nexport { GeoJSONLineStringGeometry };\n\nvar GeoJSONRegion =\n/** @class */\nfunction (_super) {\n __extends(GeoJSONRegion, _super);\n\n function GeoJSONRegion(name, geometries, cp) {\n var _this = _super.call(this, name) || this;\n\n _this.type = 'geoJSON';\n _this.geometries = geometries;\n _this._center = cp && [cp[0], cp[1]];\n return _this;\n }\n\n GeoJSONRegion.prototype.calcCenter = function () {\n var geometries = this.geometries;\n var largestGeo;\n var largestGeoSize = 0;\n\n for (var i = 0; i < geometries.length; i++) {\n var geo = geometries[i];\n var exterior = geo.exterior; // Simple trick to use points count instead of polygon area as region size.\n // Ignore linestring\n\n var size = exterior && exterior.length;\n\n if (size > largestGeoSize) {\n largestGeo = geo;\n largestGeoSize = size;\n }\n }\n\n if (largestGeo) {\n return centroid(largestGeo.exterior);\n } // from bounding rect by default.\n\n\n var rect = this.getBoundingRect();\n return [rect.x + rect.width / 2, rect.y + rect.height / 2];\n };\n\n GeoJSONRegion.prototype.getBoundingRect = function (projection) {\n var rect = this._rect; // Always recalculate if using projection.\n\n if (rect && !projection) {\n return rect;\n }\n\n var min = [Infinity, Infinity];\n var max = [-Infinity, -Infinity];\n var geometries = this.geometries;\n each(geometries, function (geo) {\n if (geo.type === 'polygon') {\n // Doesn't consider hole\n updateBBoxFromPoints(geo.exterior, min, max, projection);\n } else {\n each(geo.points, function (points) {\n updateBBoxFromPoints(points, min, max, projection);\n });\n }\n }); // Normalie invalid bounding.\n\n if (!(isFinite(min[0]) && isFinite(min[1]) && isFinite(max[0]) && isFinite(max[1]))) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\n if (!projection) {\n this._rect = rect;\n }\n\n return rect;\n };\n\n GeoJSONRegion.prototype.contain = function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n var geo = geometries[i]; // Only support polygon.\n\n if (geo.type !== 'polygon') {\n continue;\n }\n\n var exterior = geo.exterior;\n var interiors = geo.interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k], coord[0], coord[1])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n };\n /**\n * Transform the raw coords to target bounding.\n * @param x\n * @param y\n * @param width\n * @param height\n */\n\n\n GeoJSONRegion.prototype.transformTo = function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n var geo = geometries[i];\n\n if (geo.type === 'polygon') {\n transformPoints(geo.exterior, transform);\n each(geo.interiors, function (interior) {\n transformPoints(interior, transform);\n });\n } else {\n each(geo.points, function (points) {\n transformPoints(points, transform);\n });\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n };\n\n GeoJSONRegion.prototype.cloneShallow = function (name) {\n name == null && (name = this.name);\n var newRegion = new GeoJSONRegion(name, this.geometries, this._center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n };\n\n return GeoJSONRegion;\n}(Region);\n\nexport { GeoJSONRegion };\n\nvar GeoSVGRegion =\n/** @class */\nfunction (_super) {\n __extends(GeoSVGRegion, _super);\n\n function GeoSVGRegion(name, elOnlyForCalculate) {\n var _this = _super.call(this, name) || this;\n\n _this.type = 'geoSVG';\n _this._elOnlyForCalculate = elOnlyForCalculate;\n return _this;\n }\n\n GeoSVGRegion.prototype.calcCenter = function () {\n var el = this._elOnlyForCalculate;\n var rect = el.getBoundingRect();\n var center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n var mat = matrix.identity(TMP_TRANSFORM);\n var target = el;\n\n while (target && !target.isGeoSVGGraphicRoot) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n matrix.invert(mat, mat);\n vec2.applyTransform(center, center, mat);\n return center;\n };\n\n return GeoSVGRegion;\n}(Region);\n\nexport { GeoSVGRegion };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { GeoJSONLineStringGeometry, GeoJSONPolygonGeometry, GeoJSONRegion } from './Region.js';\n\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var jsonCompressed = json;\n var encodeScale = jsonCompressed.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = jsonCompressed.features;\n zrUtil.each(features, function (feature) {\n var geometry = feature.geometry;\n var encodeOffsets = geometry.encodeOffsets;\n var coordinates = geometry.coordinates; // Geometry may be appeded manually in the script after json loaded.\n // In this case this geometry is usually not encoded.\n\n if (!encodeOffsets) {\n return;\n }\n\n switch (geometry.type) {\n case 'LineString':\n geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'Polygon':\n decodeRings(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'MultiLineString':\n decodeRings(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'MultiPolygon':\n zrUtil.each(coordinates, function (rings, idx) {\n return decodeRings(rings, encodeOffsets[idx], encodeScale);\n });\n }\n }); // Has been decoded\n\n jsonCompressed.UTF8Encoding = false;\n return jsonCompressed;\n}\n\nfunction decodeRings(rings, encodeOffsets, encodeScale) {\n for (var c = 0; c < rings.length; c++) {\n rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale);\n }\n}\n\nfunction decodeRing(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n\nexport default function parseGeoJSON(geoJson, nameProperty) {\n geoJson = decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var geometries = [];\n\n switch (geo.type) {\n case 'Polygon':\n var coordinates = geo.coordinates; // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n\n geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));\n break;\n\n case 'MultiPolygon':\n zrUtil.each(geo.coordinates, function (item) {\n if (item[0]) {\n geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));\n }\n });\n break;\n\n case 'LineString':\n geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));\n break;\n\n case 'MultiLineString':\n geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));\n }\n\n var region = new GeoJSONRegion(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// These APIs are for more advanced usages\n// For example extend charts and components, creating graphic elements, formatting.\nimport ComponentModel from '../model/Component.js';\nimport ComponentView from '../view/Component.js';\nimport SeriesModel from '../model/Series.js';\nimport ChartView from '../view/Chart.js';\nimport SeriesData from '../data/SeriesData.js';\nimport * as zrender_1 from 'zrender/lib/zrender.js';\nexport { zrender_1 as zrender };\nimport * as matrix_1 from 'zrender/lib/core/matrix.js';\nexport { matrix_1 as matrix };\nimport * as vector_1 from 'zrender/lib/core/vector.js';\nexport { vector_1 as vector };\nimport * as zrUtil_1 from 'zrender/lib/core/util.js';\nexport { zrUtil_1 as zrUtil };\nimport * as color_1 from 'zrender/lib/tool/color.js';\nexport { color_1 as color };\nexport { throttle } from '../util/throttle.js';\nimport * as helper_1 from './api/helper.js';\nexport { helper_1 as helper };\nexport { use } from '../extension.js';\nexport { setPlatformAPI } from 'zrender/lib/core/platform.js'; //////////////// Helper Methods /////////////////////\n\nexport { default as parseGeoJSON } from '../coord/geo/parseGeoJson.js';\nexport { default as parseGeoJson } from '../coord/geo/parseGeoJson.js';\nimport * as number_1 from './api/number.js';\nexport { number_1 as number };\nimport * as time_1 from './api/time.js';\nexport { time_1 as time };\nimport * as graphic_1 from './api/graphic.js';\nexport { graphic_1 as graphic };\nimport * as format_1 from './api/format.js';\nexport { format_1 as format };\nimport * as util_1 from './api/util.js';\nexport { util_1 as util };\nexport { default as env } from 'zrender/lib/core/env.js'; //////////////// Export for Exension Usage ////////////////\n// export {SeriesData};\n\nexport { SeriesData as List }; // TODO: Compatitable with exists echarts-gl code\n\nexport { default as Model } from '../model/Model.js';\nexport { default as Axis } from '../coord/Axis.js';\nexport { ComponentModel, ComponentView, SeriesModel, ChartView }; // Only for GL\n\nexport { brushSingle as innerDrawElementOnCanvas } from 'zrender/lib/canvas/graphic.js'; //////////////// Deprecated Extension Methods ////////////////\n// Should use `ComponentModel.extend` or `class XXXX extend ComponentModel` to create class.\n// Then use `registerComponentModel` in `install` parameter when `use` this extension. For example:\n// class Bar3DModel extends ComponentModel {}\n// export function install(registers) { regsiters.registerComponentModel(Bar3DModel); }\n// echarts.use(install);\n\nexport function extendComponentModel(proto) {\n var Model = ComponentModel.extend(proto);\n ComponentModel.registerClass(Model);\n return Model;\n}\nexport function extendComponentView(proto) {\n var View = ComponentView.extend(proto);\n ComponentView.registerClass(View);\n return View;\n}\nexport function extendSeriesModel(proto) {\n var Model = SeriesModel.extend(proto);\n SeriesModel.registerClass(Model);\n return Model;\n}\nexport function extendChartView(proto) {\n var View = ChartView.extend(proto);\n ChartView.registerClass(View);\n return View;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Core API from echarts/src/echarts\nexport * from '../core/echarts.js';\nexport * from './api.js';\nimport { use } from '../extension.js'; // Import label layout by default.\n// TODO will be treeshaked.\n\nimport { installLabelLayout } from '../label/installLabelLayout.js';\nuse(installLabelLayout);","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./cStep.vue?vue&type=style&index=0&id=5df4f414&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nexport function getBasicPieLayout(seriesModel, api) {\n var viewRect = getViewRect(seriesModel, api);\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var cx;\n var cy;\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys) {\n // percentage is not allowed when coordinate system is specified\n var point = coordSys.dataToPoint(center);\n cx = point[0] || 0;\n cy = point[1] || 0;\n } else {\n cx = parsePercent(center[0], width) + viewRect.x;\n cy = parsePercent(center[1], height) + viewRect.y;\n }\n\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r\n };\n}\nexport default function pieLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n\n var _a = getBasicPieLayout(seriesModel, api),\n cx = _a.cx,\n cy = _a.cy,\n r = _a.r,\n r0 = _a.r0;\n\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n var restAngle = PI2;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n var dir = clockwise ? 1 : -1;\n data.setLayout({\n viewRect: viewRect,\n r: r\n });\n data.each(valueDim, function (value, idx) {\n var angle;\n\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r\n });\n return;\n } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n\n\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = PI2 / validDataCount;\n }\n\n if (angle < minAngle) {\n angle = minAngle;\n restAngle -= minAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n\n var endAngle = currentAngle + dir * angle;\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: currentAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r\n });\n currentAngle = endAngle;\n }); // Some sector is constrained by minAngle\n // Rest sectors needs recalculate angle\n\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle\n if (restAngle <= 1e-3) {\n var angle_1 = PI2 / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_1 = data.getItemLayout(idx);\n layout_1.angle = angle_1;\n layout_1.startAngle = startAngle + dir * idx * angle_1;\n layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_2 = data.getItemLayout(idx);\n var angle = layout_2.angle === minAngle ? minAngle : value * unitRadian;\n layout_2.startAngle = currentAngle;\n layout_2.endAngle = currentAngle + dir * angle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function dataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n // @ts-ignore FIXME: LegendModel\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nimport { parsePercent } from '../../util/number.js';\nimport { Point } from '../../util/graphic.js';\nimport { each, isNumber } from 'zrender/lib/core/util.js';\nimport { limitTurnAngle, limitSurfaceAngle } from '../../label/labelGuideHelper.js';\nimport { shiftLayoutOnY } from '../../label/labelLayoutHelper.js';\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n if (list.length < 2) {\n return;\n }\n\n ;\n\n function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\n var rB = semi.rB;\n var rB2 = rB * rB;\n\n for (var i = 0; i < semi.list.length; i++) {\n var item = semi.list[i];\n var dy = Math.abs(item.label.y - cy); // horizontal r is always same with original r because x is not changed.\n\n var rA = r + item.len;\n var rA2 = rA * rA; // Use ellipse implicit function to calculate x\n\n var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\n var newX = cx + (dx + item.len2) * dir;\n var deltaX = newX - item.label.x;\n var newTargetWidth = item.targetTextWidth - deltaX * dir; // text x is changed, so need to recalculate width.\n\n constrainTextWidth(item, newTargetWidth, true);\n item.label.x = newX;\n }\n } // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve.\n\n\n function recalculateX(items) {\n // Extremes of\n var topSemi = {\n list: [],\n maxY: 0\n };\n var bottomSemi = {\n list: [],\n maxY: 0\n };\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].labelAlignTo !== 'none') {\n continue;\n }\n\n var item = items[i];\n var semi = item.label.y > cy ? bottomSemi : topSemi;\n var dy = Math.abs(item.label.y - cy);\n\n if (dy >= semi.maxY) {\n var dx = item.label.x - cx - item.len2 * dir; // horizontal r is always same with original r because x is not changed.\n\n var rA = r + item.len; // Canculate rB based on the topest / bottemest label.\n\n var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA;\n semi.rB = rB;\n semi.maxY = dy;\n }\n\n semi.list.push(item);\n }\n\n recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\n recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\n }\n\n var len = list.length;\n\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].label.x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].label.x = farthestX;\n }\n }\n\n if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\n recalculateX(list);\n }\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var label = labelLayoutList[i].label;\n\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n\n if (label.x < cx) {\n leftmostX = Math.min(leftmostX, label.x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, label.x);\n rightList.push(labelLayoutList[i]);\n }\n }\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (!isPositionCenter(layout) && layout.linePoints) {\n if (layout.labelStyleWidth != null) {\n continue;\n }\n\n var label = layout.label;\n var linePoints = layout.linePoints;\n var targetTextWidth = void 0;\n\n if (layout.labelAlignTo === 'edge') {\n if (label.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance;\n }\n } else if (layout.labelAlignTo === 'labelLine') {\n if (label.x < cx) {\n targetTextWidth = leftmostX - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin;\n }\n } else {\n if (label.x < cx) {\n targetTextWidth = label.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\n }\n }\n\n layout.targetTextWidth = targetTextWidth;\n constrainTextWidth(layout, targetTextWidth);\n }\n }\n\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (!isPositionCenter(layout) && layout.linePoints) {\n var label = layout.label;\n var linePoints = layout.linePoints;\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var padding = label.style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0; // textRect.width already contains paddingH if bgColor is set\n\n var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;\n var realTextWidth = layout.rect.width + extraPaddingH;\n var dist = linePoints[1][0] - linePoints[2][0];\n\n if (isAlignToEdge) {\n if (label.x < cx) {\n linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance;\n }\n } else {\n if (label.x < cx) {\n linePoints[2][0] = label.x + layout.labelDistance;\n } else {\n linePoints[2][0] = label.x - layout.labelDistance;\n }\n\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n\n linePoints[1][1] = linePoints[2][1] = label.y;\n }\n }\n}\n/**\n * Set max width of each label, and then wrap each label to the max width.\n *\n * @param layout label layout\n * @param availableWidth max width for the label to display\n * @param forceRecalculate recaculate the text layout even if the current width\n * is smaller than `availableWidth`. This is useful when the text was previously\n * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in\n * which case, previous wrapping should be redo.\n */\n\n\nfunction constrainTextWidth(layout, availableWidth, forceRecalculate) {\n if (forceRecalculate === void 0) {\n forceRecalculate = false;\n }\n\n if (layout.labelStyleWidth != null) {\n // User-defined style.width has the highest priority.\n return;\n }\n\n var label = layout.label;\n var style = label.style;\n var textRect = layout.rect;\n var bgColor = style.backgroundColor;\n var padding = style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n var overflow = style.overflow; // textRect.width already contains paddingH if bgColor is set\n\n var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);\n\n if (availableWidth < oldOuterWidth || forceRecalculate) {\n var oldHeight = textRect.height;\n\n if (overflow && overflow.match('break')) {\n // Temporarily set background to be null to calculate\n // the bounding box without backgroud.\n label.setStyle('backgroundColor', null); // Set constraining width\n\n label.setStyle('width', availableWidth - paddingH); // This is the real bounding box of the text without padding\n\n var innerRect = label.getBoundingRect();\n label.setStyle('width', Math.ceil(innerRect.width));\n label.setStyle('backgroundColor', bgColor);\n } else {\n var availableInnerWidth = availableWidth - paddingH;\n var newWidth = availableWidth < oldOuterWidth // Current text is too wide, use `availableWidth` as max width.\n ? availableInnerWidth : // Current available width is enough, but the text may have\n // already been wrapped with a smaller available width.\n forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth // Current available is larger than text width,\n // so don't constrain width (otherwise it may have\n // empty space in the background).\n ? null // Current available is smaller than text width, so\n // use the current available width as constraining\n // width.\n : availableInnerWidth : // Current available width is enough, so no need to\n // constrain.\n null;\n label.setStyle('width', newWidth);\n }\n\n var newRect = label.getBoundingRect();\n textRect.width = newRect.width;\n var margin = (label.style.margin || 0) + 2.1;\n textRect.height = newRect.height + margin;\n textRect.y -= (textRect.height - oldHeight) / 2;\n }\n}\n\nfunction isPositionCenter(sectorShape) {\n // Not change x for center label\n return sectorShape.position === 'center';\n}\n\nexport default function pieLabelLayout(seriesModel) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n var viewRect = data.getLayout('viewRect');\n var r = data.getLayout('r');\n var viewWidth = viewRect.width;\n var viewLeft = viewRect.x;\n var viewTop = viewRect.y;\n var viewHeight = viewRect.height;\n\n function setNotShow(el) {\n el.ignore = true;\n }\n\n function isLabelShown(label) {\n if (!label.ignore) {\n return true;\n }\n\n for (var key in label.states) {\n if (label.states[key].ignore === false) {\n return true;\n }\n }\n\n return false;\n }\n\n data.each(function (idx) {\n var sector = data.getItemGraphicEl(idx);\n var sectorShape = sector.shape;\n var label = sector.getTextContent();\n var labelLine = sector.getTextGuideLine();\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\n each(label.states, setNotShow);\n each(labelLine.states, setNotShow);\n label.ignore = labelLine.ignore = true;\n return;\n }\n\n if (!isLabelShown(label)) {\n return;\n }\n\n var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\n var nx = Math.cos(midAngle);\n var ny = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = sectorShape.cx;\n cy = sectorShape.cy;\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n if (labelPosition === 'center') {\n textX = sectorShape.cx;\n textY = sectorShape.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\n var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\n textX = x1 + nx * 3;\n textY = y1 + ny * 3;\n\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\n var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\n var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;\n } else {\n textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\n }\n\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right';\n }\n\n var PI = Math.PI;\n var labelRotate = 0;\n var rotate = labelModel.get('rotate');\n\n if (isNumber(rotate)) {\n labelRotate = rotate * (PI / 180);\n } else if (labelPosition === 'center') {\n labelRotate = 0;\n } else if (rotate === 'radial' || rotate === true) {\n var radialAngle = nx < 0 ? -midAngle + PI : -midAngle;\n labelRotate = radialAngle;\n } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') {\n var rad = Math.atan2(nx, ny);\n\n if (rad < 0) {\n rad = PI * 2 + rad;\n }\n\n var isDown = ny > 0;\n\n if (isDown) {\n rad = PI + rad;\n }\n\n labelRotate = rad - PI;\n }\n\n hasLabelRotate = !!labelRotate;\n label.x = textX;\n label.y = textY;\n label.rotation = labelRotate;\n label.setStyle({\n verticalAlign: 'middle'\n }); // Not sectorShape the inside label\n\n if (!isLabelInside) {\n var textRect = label.getBoundingRect().clone();\n textRect.applyTransform(label.getComputedTransform()); // Text has a default 1px stroke. Exclude this.\n\n var margin = (label.style.margin || 0) + 2.1;\n textRect.y -= margin / 2;\n textRect.height += margin;\n labelLayoutList.push({\n label: label,\n labelLine: labelLine,\n position: labelPosition,\n len: labelLineLen,\n len2: labelLineLen2,\n minTurnAngle: labelLineModel.get('minTurnAngle'),\n maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\n surfaceNormal: new Point(nx, ny),\n linePoints: linePoints,\n textAlign: textAlign,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n edgeDistance: edgeDistance,\n bleedMargin: bleedMargin,\n rect: textRect,\n unconstrainedWidth: textRect.width,\n labelStyleWidth: label.style.width\n });\n } else {\n label.setStyle({\n align: textAlign\n });\n var selectState = label.states.select;\n\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n\n sector.setTextConfig({\n inside: isLabelInside\n });\n });\n\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n var label = layout.label;\n var labelLine = layout.labelLine;\n var notShowLabel = isNaN(label.x) || isNaN(label.y);\n\n if (label) {\n label.setStyle({\n align: layout.textAlign\n });\n\n if (notShowLabel) {\n each(label.states, setNotShow);\n label.ignore = true;\n }\n\n var selectState = label.states.select;\n\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n\n if (labelLine) {\n var linePoints = layout.linePoints;\n\n if (notShowLabel || !linePoints) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n } else {\n limitTurnAngle(linePoints, layout.minTurnAngle);\n limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\n labelLine.setShape({\n points: linePoints\n }); // Set the anchor to the midpoint of sector\n\n label.__hostTarget.textGuideLineConfig = {\n anchor: new Point(linePoints[0][0], linePoints[0][1])\n };\n }\n }\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isArray, map } from 'zrender/lib/core/util.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nexport function getSectorCornerRadius(model, shape, zeroIfNull) {\n var cornerRadius = model.get('borderRadius');\n\n if (cornerRadius == null) {\n return zeroIfNull ? {\n cornerRadius: 0\n } : null;\n }\n\n if (!isArray(cornerRadius)) {\n cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];\n }\n\n var dr = Math.abs(shape.r || 0 - shape.r0 || 0);\n return {\n cornerRadius: map(cornerRadius, function (cr) {\n return parsePercent(cr, dr);\n })\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { extend, retrieve3 } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport labelLayout from './labelLayout.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getSectorCornerRadius } from '../helper/pieHelper.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getBasicPieLayout } from './pieLayout.js';\n/**\n * Piece of pie including Sector, Label, LabelLine\n */\n\nvar PiePiece =\n/** @class */\nfunction (_super) {\n __extends(PiePiece, _super);\n\n function PiePiece(data, idx, startAngle) {\n var _this = _super.call(this) || this;\n\n _this.z2 = 2;\n var text = new graphic.Text();\n\n _this.setTextContent(text);\n\n _this.updateData(data, idx, startAngle, true);\n\n return _this;\n }\n\n PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\n var sector = this;\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n var layout = data.getItemLayout(idx); // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified.\n // see `setItemLayout` in `pieLayout.ts`.\n\n var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout); // Ignore NaN data.\n\n if (isNaN(sectorShape.startAngle)) {\n // Use NaN shape to avoid drawing shape.\n sector.setShape(sectorShape);\n return;\n }\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (seriesModel.ecModel.ssr) {\n // Use scale animation in SSR mode(opacity?)\n // Because CSS SVG animation doesn't support very customized shape animation.\n graphic.initProps(sector, {\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: idx,\n isFrom: true\n });\n sector.originX = sectorShape.cx;\n sector.originY = sectorShape.cy;\n } else if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n if (startAngle != null) {\n sector.setShape({\n startAngle: startAngle,\n endAngle: startAngle\n });\n graphic.initProps(sector, {\n shape: {\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n } else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n }\n } else {\n saveOldStyle(sector); // Transition animation from the old shape\n\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n\n sector.useStyle(data.getItemVisual(idx, 'style'));\n setStatesStylesFromModel(sector, itemModel);\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var offset = seriesModel.get('selectedOffset');\n var dx = Math.cos(midAngle) * offset;\n var dy = Math.sin(midAngle) * offset;\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n\n this._updateLabel(seriesModel, data, idx);\n\n sector.ensureState('emphasis').shape = extend({\n r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0)\n }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\n extend(sector.ensureState('select'), {\n x: dx,\n y: dy,\n shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\n });\n extend(sector.ensureState('blur'), {\n shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\n });\n var labelLine = sector.getTextGuideLine();\n var labelText = sector.getTextContent();\n labelLine && extend(labelLine.ensureState('select'), {\n x: dx,\n y: dy\n }); // TODO: needs dx, dy in zrender?\n\n extend(labelText.ensureState('select'), {\n x: dx,\n y: dy\n });\n toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n };\n\n PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\n var sector = this;\n var itemModel = data.getItemModel(idx);\n var labelLineModel = itemModel.getModel('labelLine');\n var style = data.getItemVisual(idx, 'style');\n var visualColor = style && style.fill;\n var visualOpacity = style && style.opacity;\n setLabelStyle(sector, getLabelStatesModels(itemModel), {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n inheritColor: visualColor,\n defaultOpacity: visualOpacity,\n defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx)\n });\n var labelText = sector.getTextContent(); // Set textConfig on sector.\n\n sector.setTextConfig({\n // reset position, rotation\n position: null,\n rotation: null\n }); // Make sure update style on labelText after setLabelStyle.\n // Because setLabelStyle will replace a new style on it.\n\n labelText.attr({\n z2: 10\n });\n var labelPosition = seriesModel.get(['label', 'position']);\n\n if (labelPosition !== 'outside' && labelPosition !== 'outer') {\n sector.removeTextGuideLine();\n } else {\n var polyline = this.getTextGuideLine();\n\n if (!polyline) {\n polyline = new graphic.Polyline();\n this.setTextGuideLine(polyline);\n } // Default use item visual color\n\n\n setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\n stroke: visualColor,\n opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\n });\n }\n };\n\n return PiePiece;\n}(graphic.Sector); // Pie view\n\n\nvar PieView =\n/** @class */\nfunction (_super) {\n __extends(PieView, _super);\n\n function PieView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.ignoreLabelLineUpdate = true;\n return _this;\n }\n\n PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var startAngle; // First render\n\n if (!oldData && data.count() > 0) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n if (shape) {\n startAngle = shape.startAngle;\n }\n } // remove empty-circle if it exists\n\n\n if (this._emptyCircleSector) {\n group.remove(this._emptyCircleSector);\n } // when all data are filtered, show lightgray empty circle\n\n\n if (data.count() === 0 && seriesModel.get('showEmptyCircle')) {\n var sector = new graphic.Sector({\n shape: getBasicPieLayout(seriesModel, api)\n });\n sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle());\n this._emptyCircleSector = sector;\n group.add(sector);\n }\n\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx, startAngle);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx, startAngle);\n piePiece.off('click');\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n graphic.removeElementWithFadeOut(piePiece, seriesModel, idx);\n }).execute();\n labelLayout(seriesModel); // Always use initial animation.\n\n if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\n this._data = data;\n }\n };\n\n PieView.prototype.dispose = function () {};\n\n PieView.prototype.containPoint = function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n };\n\n PieView.type = 'pie';\n return PieView;\n}(ChartView);\n\nexport default PieView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { extend, isArray } from 'zrender/lib/core/util.js';\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n */\n\nexport default function createSeriesDataSimply(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({\n encodeDefine: seriesModel.getEncode()\n }, opt);\n var source = seriesModel.getSource();\n var dimensions = prepareSeriesDataSchema(source, opt).dimensions;\n var list = new SeriesData(dimensions, seriesModel);\n list.initData(source, nameList);\n return list;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { getPercentSeats } from '../../util/number.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar PieSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(PieSeriesModel, _super);\n\n function PieSeriesModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.init = function (option) {\n _super.prototype.init.apply(this, arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n\n this._defaultLabelLine(option);\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.mergeOption = function () {\n _super.prototype.mergeOption.apply(this, arguments);\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.getInitialData = function () {\n var data = createSeriesDataSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n this.seats = getPercentSeats(valueList, data.hostModel.get('percentPrecision'));\n return data;\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.getDataParams = function (dataIndex) {\n var params = _super.prototype.getDataParams.call(this, dataIndex);\n\n params.percent = this.seats[dataIndex];\n params.$vars.push('percent');\n return params;\n };\n\n PieSeriesModel.prototype._defaultLabelLine = function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n };\n\n PieSeriesModel.type = 'series.pie';\n PieSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n legendHoverLink: true,\n colorBy: 'data',\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // color: 'inherit',\n // If rotate around circle\n rotate: 0,\n show: true,\n overflow: 'truncate',\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n edgeDistance: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n minTurnAngle: 90,\n maxSurfaceAngle: 90,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1,\n borderJoin: 'round'\n },\n showEmptyCircle: true,\n emptyCircleStyle: {\n color: 'lightgray',\n opacity: 1\n },\n labelLayout: {\n // Hide the overlapped label.\n hideOverlap: true\n },\n emphasis: {\n scale: true,\n scaleSize: 5\n },\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasingUpdate: 'cubicInOut',\n animationDurationUpdate: 500,\n animationEasing: 'cubicInOut'\n };\n return PieSeriesModel;\n}(SeriesModel);\n\nexport default PieSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function negativeDataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n // handle negative value condition\n var valueDim = data.mapDimension('value');\n var curValue = data.get(valueDim, idx);\n\n if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {\n return false;\n }\n\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport pieLayout from '../pie/pieLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport PieView from './PieView.js';\nimport PieSeriesModel from './PieSeries.js';\nimport negativeDataFilter from '../../processor/negativeDataFilter.js';\nexport function install(registers) {\n registers.registerChartView(PieView);\n registers.registerSeriesModel(PieSeriesModel);\n createLegacyDataSelectAction('pie', registers.registerAction);\n registers.registerLayout(curry(pieLayout, 'pie'));\n registers.registerProcessor(dataFilter('pie'));\n registers.registerProcessor(negativeDataFilter('pie'));\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./navTitle.vue?vue&type=style&index=0&id=5178a2d8&lang=scss&scoped=true\"","let ImgUrlFix :string = location.origin + location.pathname.replace('index.html', '')\r\n\r\nexport {\r\n ImgUrlFix,\r\n}\r\n\r\n//个人模型\r\nexport const header = [\r\n '证型名称',\r\n '辨证要点',\r\n '辨证分析',\r\n '治则治法',\r\n '方药',\r\n '组方',\r\n '特色诊疗',\r\n '第二处方',\r\n '随访',\r\n\r\n]\r\n\r\n//种子模型\r\nexport const header2 = [\r\n '证型名称',\r\n '辨证要点',\r\n '辨证分析',\r\n '治则治法',\r\n '方药',\r\n '组方',\r\n '特色诊疗',\r\n]\r\n\r\nexport const effcollDateSelect = [\r\n {\r\n value:1,\r\n label:'一天'\r\n },\r\n {\r\n value:2,\r\n label:'二天'\r\n },\r\n {\r\n value:3,\r\n label:'三天'\r\n },\r\n {\r\n value:4,\r\n label:'四天'\r\n },\r\n {\r\n value:5,\r\n label:'五天'\r\n },\r\n {\r\n value:6,\r\n label:'六天'\r\n },\r\n {\r\n value:7,\r\n label:'七天'\r\n },\r\n {\r\n value:8,\r\n label:'八天'\r\n },\r\n {\r\n value:9,\r\n label:'九天'\r\n },\r\n]\r\n\r\nexport const effcollType = [\r\n {\r\n value:0,\r\n label:'单选'\r\n },\r\n {\r\n value:1,\r\n label:'多选'\r\n },\r\n]\r\n\r\nexport const directionType = [\r\n {\r\n value:1,\r\n label:'口服'\r\n },\r\n {\r\n value:4,\r\n label:'外用'\r\n },\r\n\r\n]\r\n\r\nexport const defaultMethod = [\r\n {\r\n value:'先煎',\r\n label:'先煎'\r\n },\r\n {\r\n value:'冲服',\r\n label:'冲服'\r\n },\r\n {\r\n value:'包煎',\r\n label:'包煎'\r\n },\r\n {\r\n value:'另煎',\r\n label:'另煎'\r\n },\r\n {\r\n value:'后下',\r\n label:'后下'\r\n },\r\n {\r\n value:'烊化',\r\n label:'烊化'\r\n },\r\n {\r\n value:'焗服',\r\n label:'焗服'\r\n },\r\n]\r\nexport const caseTableHeader = [\r\n { title: '分类'},\r\n { title:'疗效'},\r\n { title:'第一诊断要素'},\r\n { title:'第二诊断要素'},\r\n { title:'第三诊断要素'},\r\n { title:'辨证要点'},\r\n { title: '未匹配词'},\r\n { title:'伴随证'},\r\n { title:'方药'},\r\n { title:'组方'},\r\n \r\n]\r\nexport const charCodeArr: string[] = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ]\r\n\r\nexport const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \r\n\r\nexport const SEX = [\r\n {\r\n value: -1,\r\n label:'不限'\r\n },\r\n {\r\n value: 0,\r\n label:'女'\r\n },\r\n {\r\n value: 1,\r\n label:'男'\r\n },\r\n]\r\n\r\nexport const AGE = [\r\n {\r\n value: '0-0',\r\n label:'不限'\r\n },\r\n {\r\n value: '0-14',\r\n label:'0-14'\r\n },\r\n]\r\n\r\n//标点符号, 不含 + 和 = \r\nexport const markReg = /([。?!,、:;“”()—…《》<>~/【】{}'’‘\"\",&$#@`?{}-])|(\\\\)|(\\[)|(\\])|(\\.)|(\\/)|(\\*)|(\\|)|(\\_)|(\\!)|(\\%)|(\\^)|(\\()|(\\))|(\\¥)/g\r\n\r\n// 药品煎煮法\r\nexport const drugUeWayList = [{\r\n name: '先煎',\r\n id: '001'\r\n},{\r\n name: '后下',\r\n id: '002'\r\n},{\r\n name: '冲服',\r\n id: '003'\r\n},{\r\n name: '包煎',\r\n id: '004'\r\n},{\r\n name: '焗服',\r\n id: '005'\r\n},{\r\n name: '烊化',\r\n id: '006'\r\n},{\r\n name: '另煎',\r\n id: '007'\r\n}]\r\nexport const qidList = [{ title: '每天一次(qd)', value: '11'}, \r\n{ title: '每天二次(bid)', value: '12'}, \r\n{ title: '每天三次(tid)', value: '13'}, \r\n{ title: '每天四次(qid)', value: '14'}, \r\n{ title: '每周一次(qw)', value: '21'}, \r\n{ title: '每周二次(biw)', value: '22' }, \r\n{ title: '每周三次(tiw)', value: '23' }, \r\n{ title: '每小时一次(qh)', value: '31' }, \r\n{ title: '每2小时一次(q2h)', value: '32' }, \r\n{ title: '每4小时一次(q4h)', value: '33' }, \r\n{ title: '每5小时一次(q5h)', value: '34' }, \r\n{ title: '每6小时一次(q6h)', value: '35' }, \r\n{ title: '每8小时一次(q8h)', value: '36' }, \r\n{ title: '每12小时一次(q12h)', value: '37' }, \r\n{ title: '每晚一次(qn)', value: '41' }, \r\n{ title: '隔天一次(qod)', value: '42' }, \r\n{ title: '五天一次(q5d)', value: '43' }, \r\n{ title: '十天一次(q10d)', value: '44' }, \r\n{ title: '12小时维持', value: '51' }, \r\n{ title: '24小时维持', value: '52' }, \r\n{ title: '立即(st)', value: '61' }, \r\n{ title: '必要时使用(prn)', value: '62' }]\r\n\r\n\r\nexport const groupLabelList = [\r\n {\r\n text:'险',\r\n value: '1',\r\n },\r\n {\r\n text:'重',\r\n value: '2',\r\n },\r\n {\r\n text:'针',\r\n value: '3',\r\n },\r\n {\r\n text:'灸',\r\n value: '4',\r\n },\r\n {\r\n text:'推',\r\n value: '5',\r\n },\r\n {\r\n text:'膳',\r\n value: '6',\r\n },\r\n {\r\n text:'试',\r\n value: '7',\r\n },\r\n {\r\n text:'随',\r\n value: '8',\r\n },\r\n {\r\n text:'颗',\r\n value: '9',\r\n },\r\n {\r\n text:'膏',\r\n value: '10',\r\n },\r\n {\r\n text:'贴',\r\n value: '11',\r\n },\r\n {\r\n text:'检',\r\n value: '12',\r\n },\r\n {\r\n text:'影',\r\n value: '13',\r\n },\r\n {\r\n text:'外',\r\n value: '14',\r\n },\r\n]\r\n\r\nexport enum EYE_VALUE {\r\n nameAlias = '病名别名',\r\n groupOfLabel = '证型标签',\r\n syndiffAlias = '证型别名'\r\n}\r\n\r\nexport const EYE_LIST = [\r\n {\r\n label:EYE_VALUE.nameAlias,\r\n },\r\n {\r\n label:EYE_VALUE.groupOfLabel,\r\n },\r\n {\r\n label:EYE_VALUE.syndiffAlias,\r\n },\r\n]\r\n\r\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport { makeInner } from '../util/model.js';\nimport { makeLabelFormatter, getOptionCategoryInterval, shouldShowAllLabels } from './axisHelper.js';\nvar inner = makeInner();\nexport function createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\nexport function createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: zrUtil.map(axis.scale.getTicks(), function (tick) {\n return tick.value;\n })\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tick, idx) {\n return {\n level: tick.level,\n formattedLabel: labelFormatter(tick, idx),\n rawLabel: axis.scale.getLabel(tick),\n tickValue: tick.value\n };\n })\n };\n}\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nexport function calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter({\n value: tickValue\n }), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtent0 = axisExtent[0];\n cache.axisExtent1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tickValue) {\n var tickObj = {\n value: tickValue\n };\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickObj),\n rawLabel: ordinalScale.getLabel(tickObj),\n tickValue: tickValue\n });\n }\n\n return result;\n}\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tick) {\n var rawLabel = ordinalScale.getLabel(tick);\n var tickValue = tick.value;\n\n if (categoryInterval(tick.value, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tick),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each, map } from 'zrender/lib/core/util.js';\nimport { linearMap, getPixelPrecision, round } from '../util/number.js';\nimport { createAxisTicks, createAxisLabels, calculateCategoryInterval } from './axisTickLabelBuilder.js';\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n */\n\nvar Axis =\n/** @class */\nfunction () {\n function Axis(dim, scale, extent) {\n this.onBand = false;\n this.inverse = false;\n this.dim = dim;\n this.scale = scale;\n this._extent = extent || [0, 0];\n }\n /**\n * If axis extent contain given coord\n */\n\n\n Axis.prototype.contain = function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n };\n /**\n * If axis extent contain given data\n */\n\n\n Axis.prototype.containData = function (data) {\n return this.scale.contain(data);\n };\n /**\n * Get coord extent.\n */\n\n\n Axis.prototype.getExtent = function () {\n return this._extent.slice();\n };\n /**\n * Get precision used for formatting\n */\n\n\n Axis.prototype.getPixelPrecision = function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n };\n /**\n * Set coord extent\n */\n\n\n Axis.prototype.setExtent = function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n };\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n */\n\n\n Axis.prototype.dataToCoord = function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n };\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n */\n\n\n Axis.prototype.coordToData = function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n };\n /**\n * Convert pixel point to data in axis\n */\n\n\n Axis.prototype.pointToData = function (point, clamp) {\n // Should be implemented in derived class if necessary.\n return;\n };\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param opt.tickModel default: axis.model.getModel('axisTick')\n * @param opt.clamp If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n */\n\n\n Axis.prototype.getTicksCoords = function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickVal) {\n return {\n coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),\n tickValue: tickVal\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n };\n\n Axis.prototype.getMinorTicksCoords = function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n };\n\n Axis.prototype.getViewLabels = function () {\n return createAxisLabels(this).labels;\n };\n\n Axis.prototype.getLabelModel = function () {\n return this.model.getModel('axisLabel');\n };\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n */\n\n\n Axis.prototype.getTickModel = function () {\n return this.model.getModel('axisTick');\n };\n /**\n * Get width of band\n */\n\n\n Axis.prototype.getBandWidth = function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n };\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return Auto interval for cateogry axis tick and label\n */\n\n\n Axis.prototype.calculateCategoryInterval = function () {\n return calculateCategoryInterval(this);\n };\n\n return Axis;\n}();\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift_1 / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nexport default Axis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Point, Path, Polyline } from '../util/graphic.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nimport { cubicProjectPoint, quadraticProjectPoint } from 'zrender/lib/core/curve.js';\nimport { defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport { DISPLAY_STATES, SPECIAL_STATES } from '../util/states.js';\nvar PI2 = Math.PI * 2;\nvar CMD = PathProxy.CMD;\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\n\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\n var width = rect.width;\n var height = rect.height;\n\n switch (pos) {\n case 'top':\n outPt.set(rect.x + width / 2, rect.y - distance);\n outDir.set(0, -1);\n break;\n\n case 'bottom':\n outPt.set(rect.x + width / 2, rect.y + height + distance);\n outDir.set(0, 1);\n break;\n\n case 'left':\n outPt.set(rect.x - distance, rect.y + height / 2);\n outDir.set(-1, 0);\n break;\n\n case 'right':\n outPt.set(rect.x + width + distance, rect.y + height / 2);\n outDir.set(1, 0);\n break;\n }\n}\n\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d; // Intersect point.\n\n var ox = x * r + cx;\n var oy = y * r + cy;\n\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var angle = Math.atan2(y, x);\n\n if (angle < 0) {\n angle += PI2;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n // Project point is on the arc.\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n\n var x1 = r * Math.cos(startAngle) + cx;\n var y1 = r * Math.sin(startAngle) + cy;\n var x2 = r * Math.cos(endAngle) + cx;\n var y2 = r * Math.sin(endAngle) + cy;\n var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\n var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\n\n if (d1 < d2) {\n out[0] = x1;\n out[1] = y1;\n return Math.sqrt(d1);\n } else {\n out[0] = x2;\n out[1] = y2;\n return Math.sqrt(d2);\n }\n}\n\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\n var dx = x - x1;\n var dy = y - y1;\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n dx1 /= lineLen;\n dy1 /= lineLen; // dot product\n\n var projectedLen = dx * dx1 + dy * dy1;\n var t = projectedLen / lineLen;\n\n if (limitToEnds) {\n t = Math.min(Math.max(t, 0), 1);\n }\n\n t *= lineLen;\n var ox = out[0] = x1 + t * dx1;\n var oy = out[1] = y1 + t * dy1;\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\n if (width < 0) {\n x1 = x1 + width;\n width = -width;\n }\n\n if (height < 0) {\n y1 = y1 + height;\n height = -height;\n }\n\n var x2 = x1 + width;\n var y2 = y1 + height;\n var ox = out[0] = Math.min(Math.max(x, x1), x2);\n var oy = out[1] = Math.min(Math.max(y, y1), y2);\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nvar tmpPt = [];\n\nfunction nearestPointOnRect(pt, rect, out) {\n var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\n out.set(tmpPt[0], tmpPt[1]);\n return dist;\n}\n/**\n * Calculate min distance corresponding point.\n * This method won't evaluate if point is in the path.\n */\n\n\nfunction nearestPointOnPath(pt, path, out) {\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n var minDist = Infinity;\n var data = path.data;\n var x = pt.x;\n var y = pt.y;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n var d = minDist;\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i <= 1) {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\n break;\n\n case CMD.Z:\n d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\n xi = x0;\n yi = y0;\n break;\n }\n\n if (d < minDist) {\n minDist = d;\n out.set(tmpPt[0], tmpPt[1]);\n }\n }\n\n return minDist;\n} // Temporal varible for intermediate usage.\n\n\nvar pt0 = new Point();\nvar pt1 = new Point();\nvar pt2 = new Point();\nvar dir = new Point();\nvar dir2 = new Point();\n/**\n * Calculate a proper guide line based on the label position and graphic element definition\n * @param label\n * @param labelRect\n * @param target\n * @param targetRect\n */\n\nexport function updateLabelLinePoints(target, labelLineModel) {\n if (!target) {\n return;\n }\n\n var labelLine = target.getTextGuideLine();\n var label = target.getTextContent(); // Needs to create text guide in each charts.\n\n if (!(label && labelLine)) {\n return;\n }\n\n var labelGuideConfig = target.textGuideLineConfig || {};\n var points = [[0, 0], [0, 0], [0, 0]];\n var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\n var labelRect = label.getBoundingRect().clone();\n labelRect.applyTransform(label.getComputedTransform());\n var minDist = Infinity;\n var anchorPoint = labelGuideConfig.anchor;\n var targetTransform = target.getComputedTransform();\n var targetInversedTransform = targetTransform && invert([], targetTransform);\n var len = labelLineModel.get('length2') || 0;\n\n if (anchorPoint) {\n pt2.copy(anchorPoint);\n }\n\n for (var i = 0; i < searchSpace.length; i++) {\n var candidate = searchSpace[i];\n getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\n Point.scaleAndAdd(pt1, pt0, dir, len); // Transform to target coord space.\n\n pt1.transform(targetInversedTransform); // Note: getBoundingRect will ensure the `path` being created.\n\n var boundingRect = target.getBoundingRect();\n var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); // TODO pt2 is in the path\n\n if (dist < minDist) {\n minDist = dist; // Transform back to global space.\n\n pt1.transform(targetTransform);\n pt2.transform(targetTransform);\n pt2.toArray(points[0]);\n pt1.toArray(points[1]);\n pt0.toArray(points[2]);\n }\n }\n\n limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\n labelLine.setShape({\n points: points\n });\n} // Temporal variable for the limitTurnAngle function\n\nvar tmpArr = [];\nvar tmpProjPoint = new Point();\n/**\n * Reduce the line segment attached to the label to limit the turn angle between two segments.\n * @param linePoints\n * @param minTurnAngle Radian of minimum turn angle. 0 - 180\n */\n\nexport function limitTurnAngle(linePoints, minTurnAngle) {\n if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\n return;\n }\n\n minTurnAngle = minTurnAngle / 180 * Math.PI; // The line points can be\n // /pt1----pt2 (label)\n // /\n // pt0/\n\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt0, pt1);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(dir2);\n var minTurnAngleCos = Math.cos(minTurnAngle);\n\n if (minTurnAngleCos < angleCos) {\n // Smaller than minTurnAngle\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr); // Calculate new projected length with limited minTurnAngle and get the new connect point\n\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n if (isNaN(t)) {\n return;\n }\n\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n/**\n * Limit the angle of line and the surface\n * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite\n */\n\nexport function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\n if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\n return;\n }\n\n maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt1, pt0);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(surfaceNormal);\n var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\n\n if (angleCos < maxSurfaceAngleCos) {\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n var HALF_PI = Math.PI / 2;\n var angle2 = Math.acos(dir2.dot(surfaceNormal));\n var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\n\n if (newAngle >= HALF_PI) {\n // parallel\n Point.copy(tmpProjPoint, pt2);\n } else {\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n if (isNaN(t)) {\n return;\n }\n\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n }\n\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\n var isNormal = stateName === 'normal';\n var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); // Make sure display.\n\n stateObj.ignore = ignore; // Set smooth\n\n var smooth = stateModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.3;\n }\n\n stateObj.shape = stateObj.shape || {};\n\n if (smooth > 0) {\n stateObj.shape.smooth = smooth;\n }\n\n var styleObj = stateModel.getModel('lineStyle').getLineStyle();\n isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\n}\n\nfunction buildLabelLinePath(path, shape) {\n var smooth = shape.smooth;\n var points = shape.points;\n\n if (!points) {\n return;\n }\n\n path.moveTo(points[0][0], points[0][1]);\n\n if (smooth > 0 && points.length >= 3) {\n var len1 = vector.dist(points[0], points[1]);\n var len2 = vector.dist(points[1], points[2]);\n\n if (!len1 || !len2) {\n path.lineTo(points[1][0], points[1][1]);\n path.lineTo(points[2][0], points[2][1]);\n return;\n }\n\n var moveLen = Math.min(len1, len2) * smooth;\n var midPoint0 = vector.lerp([], points[1], points[0], moveLen / len1);\n var midPoint2 = vector.lerp([], points[1], points[2], moveLen / len2);\n var midPoint1 = vector.lerp([], midPoint0, midPoint2, 0.5);\n path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\n path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\n } else {\n for (var i = 1; i < points.length; i++) {\n path.lineTo(points[i][0], points[i][1]);\n }\n }\n}\n/**\n * Create a label line if necessary and set it's style.\n */\n\n\nexport function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\n var labelLine = targetEl.getTextGuideLine();\n var label = targetEl.getTextContent();\n\n if (!label) {\n // Not show label line if there is no label.\n if (labelLine) {\n targetEl.removeTextGuideLine();\n }\n\n return;\n }\n\n var normalModel = statesModels.normal;\n var showNormal = normalModel.get('show');\n var labelIgnoreNormal = label.ignore;\n\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\n var stateName = DISPLAY_STATES[i];\n var stateModel = statesModels[stateName];\n var isNormal = stateName === 'normal';\n\n if (stateModel) {\n var stateShow = stateModel.get('show');\n var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\n\n if (isLabelIgnored // Not show when label is not shown in this state.\n || !retrieve2(stateShow, showNormal) // Use normal state by default if not set.\n ) {\n var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];\n\n if (stateObj) {\n stateObj.ignore = true;\n }\n\n continue;\n } // Create labelLine if not exists\n\n\n if (!labelLine) {\n labelLine = new Polyline();\n targetEl.setTextGuideLine(labelLine); // Reset state of normal because it's new created.\n // NOTE: NORMAL should always been the first!\n\n if (!isNormal && (labelIgnoreNormal || !showNormal)) {\n setLabelLineState(labelLine, true, 'normal', statesModels.normal);\n } // Use same state proxy.\n\n\n if (targetEl.stateProxy) {\n labelLine.stateProxy = targetEl.stateProxy;\n }\n }\n\n setLabelLineState(labelLine, false, stateName, stateModel);\n }\n }\n\n if (labelLine) {\n defaults(labelLine.style, defaultStyle); // Not fill.\n\n labelLine.style.fill = null;\n var showAbove = normalModel.get('showAbove');\n var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};\n labelLineConfig.showAbove = showAbove || false; // Custom the buildPath.\n\n labelLine.buildPath = buildLabelLinePath;\n }\n}\nexport function getLabelLineStatesModels(itemModel, labelLineName) {\n labelLineName = labelLineName || 'labelLine';\n var statesModels = {\n normal: itemModel.getModel(labelLineName)\n };\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\n }\n\n return statesModels;\n}","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./compareDatanalysisView.vue?vue&type=style&index=0&id=43ceb91b&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Text } from '../util/graphic.js';\nexport function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\n var textEl = new Text({\n style: {\n text: text,\n font: font,\n align: align,\n verticalAlign: verticalAlign,\n padding: padding,\n rich: rich,\n overflow: truncate ? 'truncate' : null,\n lineHeight: lineHeight\n }\n });\n return textEl.getBoundingRect();\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5178a2d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"navTitle\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", null, \">\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h4\", null, _toDisplayString(_ctx.navlabel), 1),\n (_ctx.secondNavLabel)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(_toDisplayString(_ctx.secondNavLabel), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { defineComponent, toRefs, ref, watch } from \"vue\";\r\n// 引入第三方工具\r\n\r\n// 引入第三方组件\r\nimport { Search } from \"@element-plus/icons-vue\";\r\n// 引入公共组件\r\n\r\n// 引入路由独有组件\r\n\r\n// 引入接口函数\r\n\r\n// 引入公共函数\r\n\r\n// 引入常量\r\n\r\n// 引入变量\r\n\r\nexport default defineComponent({\r\n name: \"navTitle\",\r\n components: {},\r\n emits: {},\r\n props: {\r\n label: {\r\n type: String,\r\n default: \"\",\r\n },\r\n secondLabel: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const {label, secondLabel} = toRefs(props)\r\n const navlabel = ref(label.value)\r\n const secondNavLabel = ref(secondLabel.value)\r\n return {navlabel, secondNavLabel};\r\n },\r\n});\r\n","import { render } from \"./navTitle.vue?vue&type=template&id=5178a2d8&scoped=true&ts=true\"\nimport script from \"./navTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./navTitle.vue?vue&type=script&lang=ts\"\n\nimport \"./navTitle.vue?vue&type=style&index=0&id=5178a2d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5178a2d8\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4214f81b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"circle\" }\nconst _hoisted_2 = [\"src\", \"poster\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = {\n class: \"pointList\",\n ref: \"pointListRef\"\n}\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = {\n class: \"navBox\",\n ref: \"navBoxRef\"\n}\nconst _hoisted_7 = { class: \"nav\" }\nconst _hoisted_8 = { class: \"navItem\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"activeItemImgBox\" }\nconst _hoisted_11 = [\"src\"]\nconst _hoisted_12 = { class: \"activeItemContent\" }\nconst _hoisted_13 = { class: \"ml-25\" }\nconst _hoisted_14 = { class: \"mainColor\" }\nconst _hoisted_15 = {\n key: 1,\n class: \"ml-25\"\n}\nconst _hoisted_16 = { class: \"mainColor\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = { class: \"commonItemImgBox\" }\nconst _hoisted_19 = [\"src\"]\nconst _hoisted_20 = { class: \"commonItemContent ml-10\" }\nconst _hoisted_21 = { class: \"mainColor\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"brain\", { hasNav: _ctx.brainName === 'brain2' }]),\n style: _normalizeStyle({ width: _ctx.width }),\n ref: \"brainRef\"\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"video\", {\n class: \"brainImg\",\n autoplay: \"\",\n loop: \"\",\n muted: \"\",\n src: _ctx.ImgUrlFix+ 'images/brain/'+ _ctx.brainName +'.mp4',\n poster: _ctx.ImgUrlFix+ 'images/brain/'+ _ctx.brainName +'.gif'\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + 'images/brain/'+ _ctx.brainName +'.jpg'\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.pointList, (poin, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"poin\",\n onClick: ($event: any) => (_ctx.brainClickHandle(poin))\n }, [\n _createVNode(_component_el_tooltip, {\n class: \"box-item\",\n effect: \"dark\",\n content: poin.text,\n placement: \"top-start\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"oneLine\", 'poinItemText' + poin.level])\n }, _toDisplayString(poin.text), 3)\n ]),\n _: 2\n }, 1032, [\"content\"]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([poin.isActive ? 'poinItemActive' : '', 'poinItem' + poin.level])\n }, [\n _createElementVNode(\"div\", {\n class: \"poinItemCircle\",\n style: _normalizeStyle({ backgroundColor: poin.bgcolor })\n }, null, 4)\n ], 2)\n ], 8, _hoisted_5))\n }), 256))\n ], 512),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.navList, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n (item.isActive && item.info.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"activeItem pr-15\",\n onClick: ($event: any) => (_ctx.brainClickHandle(item))\n }, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + item.img\n }, null, 8, _hoisted_11)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"strong\", null, _toDisplayString(item.text), 1),\n (item.info.length > 1)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(item.info, (inner, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", null, _toDisplayString(inner.text), 1),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"span\", null, _toDisplayString(inner.count), 1),\n _createElementVNode(\"span\", null, _toDisplayString(inner.unit), 1)\n ])\n ]))\n }), 256))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, _toDisplayString(item.info[0].text), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", null, _toDisplayString(item.info[0].count), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.info[0].unit), 1)\n ])\n ]))\n ])\n ], 8, _hoisted_9))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"commonItem\",\n onClick: ($event: any) => (_ctx.brainClickHandle(item))\n }, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + item.img\n }, null, 8, _hoisted_19)\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", null, _toDisplayString(item.text), 1),\n _createElementVNode(\"div\", _hoisted_21, _toDisplayString(item.count) + \" \" + _toDisplayString(item.unit), 1)\n ])\n ], 8, _hoisted_17))\n ]))\n }), 256))\n ])\n ], 512)\n ])\n ], 6))\n}","\r\n\r\n/*\r\n\r\n使用方法\r\n\r\n*/\r\n\r\nimport { defineComponent, toRefs, ref, nextTick, watch } from 'vue';\r\nimport type {PropType} from \"vue\"\r\n\r\n// 引入公共函数\r\nimport { pbFn } from '@u/publicMethod'\r\n\r\n// 引入常量\r\nimport { ImgUrlFix } from '@u/contant'\r\n\r\nimport {IBrainPoint, IBrainNav} from '@u/interface/brain'\r\n\r\n// 引入变量\r\n\r\nconst st = 0.901639; // 比例缩小\r\n\r\n//位置坐标\r\ninterface IPoinStation {\r\n x: number,\r\n y: number,\r\n width?: number,\r\n height?: number,\r\n text?: string,\r\n}\r\n\r\nexport default defineComponent({\r\n name: \"brain\",\r\n components: {},\r\n emits: {\r\n 'brainClick': null\r\n },\r\n props: {\r\n navList: {\r\n //左边导航菜单\r\n type: Array as PropType,\r\n default: []\r\n },\r\n pointList: {\r\n //脑中的点\r\n type: Array as PropType,\r\n default: []\r\n },\r\n brainName:{\r\n type: String,\r\n default: 'brain1'\r\n },\r\n width: {\r\n type: String,\r\n default: '100%'\r\n },\r\n\r\n },\r\n setup(props, { emit }) {\r\n const { navList, pointList, width, brainName } = toRefs(props)\r\n\r\n const brainRef: any = ref(null)\r\n const navBoxRef: any = ref(null)\r\n const pointListRef: any = ref(null)\r\n\r\n let poinSitionList: IPoinStation[] = [];\r\n let poinMaxW = 0; // 脑点的最大宽度\r\n let poinH = 0; //脑点的高度\r\n\r\n\r\n //针对极端随机情况,xy都为0,的时候重设\r\n const reSetPoinStation = () => {\r\n let count = 0;\r\n poinSitionList.forEach((item)=>{\r\n if(item.x === 0){\r\n count++\r\n }\r\n })\r\n if(count >= 2){\r\n randomPoinStation()\r\n }\r\n }\r\n\r\n\r\n // 设置脑中点的位置\r\n const randomPoinStation = () => {\r\n poinSitionList = []\r\n setTimeout(() => {\r\n if (brainRef.value.offsetWidth < 40) {\r\n randomPoinStation()\r\n } else {\r\n if (brainName.value!=='brain1') {\r\n pointListRef.value.style.left = '31%';\r\n pointListRef.value.style.right = '22%';\r\n pointListRef.value.style.top = '20%';\r\n pointListRef.value.style.bottom = '31%';\r\n } else {\r\n pointListRef.value.style.left = '23%';\r\n pointListRef.value.style.right = '23%';\r\n pointListRef.value.style.top = '23%';\r\n pointListRef.value.style.bottom = '24%';\r\n }\r\n\r\n const width = pointListRef.value.offsetWidth - poinMaxW\r\n const height = pointListRef.value.offsetHeight - poinH\r\n const itemList = document.querySelectorAll('.pointList .poin')\r\n\r\n\r\n for (let i = 0; i < itemList.length; i++) {\r\n let poinSition: IPoinStation = {\r\n x: 0,\r\n y: 0,\r\n width: (itemList[i] as any).offsetWidth,\r\n height: (itemList[i] as any).offsetHeight\r\n }\r\n\r\n //限制次数,以免位置不够产生死循环\r\n let count = 0;\r\n\r\n\r\n do {\r\n poinSition.x = pbFn.getRandomInt(0, width);\r\n poinSition.y = pbFn.getRandomInt(0, height);\r\n count++\r\n if (count > 500) {\r\n break;\r\n }\r\n } while (isInArray(poinSition, poinSitionList))\r\n\r\n // poinSition.width = (itemList[i] as any).offsetWidth;\r\n // poinSition.height = (itemList[i] as any).offsetHeight;\r\n poinSitionList.push(poinSition);\r\n\r\n (itemList[i] as any).style.left = poinSition.x + \"px\";\r\n (itemList[i] as any).style.top = poinSition.y + \"px\";\r\n (itemList[i] as any).style.maxWidth = poinMaxW + \"px\";\r\n (itemList[i] as any).style.maxHeight = poinH + \"px\";\r\n }\r\n }\r\n\r\n reSetPoinStation()\r\n\r\n }, 100)\r\n }\r\n\r\n //设置导航位置\r\n const setNavStation = () => {\r\n if (brainRef.value.offsetWidth < 40) {\r\n setNavStation()\r\n } else {\r\n setTimeout(() => {\r\n const brainWidt = parseInt(brainRef.value.offsetWidth)\r\n let degSt = 12;\r\n if(brainWidt > 1200){\r\n degSt = 8;\r\n }else if (brainWidt > 1100){\r\n degSt = 9;\r\n }else if(brainWidt > 1000) {\r\n degSt = 10;\r\n }\r\n navBoxRef.value.style.top = (brainWidt * st) / 2 + 'px'\r\n navBoxRef.value.style.right = (brainWidt * st) / 2 + 'px'\r\n const radius = brainWidt / 2 - 20;\r\n const itemList = document.querySelectorAll('.navBox .navItem')\r\n for (let i = 0; i < itemList.length; i++) {\r\n const deg = i * degSt / 180 * Math.PI;\r\n\r\n if(i === 6){\r\n (itemList[i] as any).style.left = '-' + ((pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + 15) + \"px\";\r\n\r\n }else if(i === 5) {\r\n (itemList[i] as any).style.left = '-' + ((pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + 10) + \"px\";\r\n }else{\r\n (itemList[i] as any).style.left = '-' + (pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + \"px\";\r\n\r\n }\r\n \r\n if(i===0){\r\n (itemList[i] as any).style.top = - (pbFn.getLocation(radius, deg + 0.75).top) + \"px\";\r\n }else{\r\n (itemList[i] as any).style.top = - ((pbFn.getLocation(radius, deg + 0.75).top) - 20) + \"px\";\r\n }\r\n \r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n //万物的开始\r\n const start = () =>{\r\n if (pointList.value.length < 6) {\r\n poinMaxW = 120\r\n poinH = 80\r\n } else {\r\n poinMaxW = 80\r\n poinH = 80\r\n }\r\n\r\n //设置脑中框和点的位置\r\n nextTick(() => {\r\n randomPoinStation();\r\n })\r\n\r\n //设置 导航的位置\r\n if (brainName.value!=='brain1') {\r\n nextTick(() => {\r\n navBoxRef.value.style.display = 'block';\r\n setNavStation();\r\n })\r\n }else{\r\n nextTick(() => {\r\n navBoxRef.value.style.display = 'none';\r\n })\r\n \r\n }\r\n }\r\n\r\n watch(()=>props.pointList, start, { immediate: true, deep: true })\r\n watch(()=>props.navList, start, { immediate: true, deep: true })\r\n\r\n\r\n const brainClickHandle = (item: any) => {\r\n emit('brainClick', item)\r\n }\r\n return {\r\n ImgUrlFix,\r\n brainRef, navBoxRef, pointListRef, brainName,\r\n navList, pointList, width,\r\n brainClickHandle,\r\n }\r\n\r\n\r\n // 获得导航的X坐标\r\n function getX(i: number, degSt:number=12) {\r\n if(degSt === 12){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 6\r\n }else if(degSt === 8){\r\n return (Math.abs(6 - i) * 4) - 25 - i * 8\r\n }else if(degSt === 9){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 8\r\n }else if(degSt === 10){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 8\r\n }else{\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i)\r\n }\r\n }\r\n\r\n // 检查脑点是否已经在坐标内\r\n function isOverlap(rect1: any, rect2: any) {\r\n const l1 = { x: rect1.x, y: rect1.y }\r\n const r1 = { x: rect1.x + rect1.width, y: rect1.y + rect1.height }\r\n const l2 = { x: rect2.x, y: rect2.y }\r\n const r2 = { x: rect2.x + rect2.width, y: rect2.y + rect2.height }\r\n if (\r\n l1.x > r2.x ||\r\n l2.x > r1.x ||\r\n l1.y > r2.y ||\r\n l2.y > r1.y\r\n ) return false\r\n return true\r\n }\r\n\r\n function isInArray(poinSition: IPoinStation, poinSitionList: IPoinStation[]) {\r\n let flag = false;\r\n poinSitionList.forEach((item) => {\r\n if (isOverlap(poinSition, item)) {\r\n flag = true\r\n }\r\n })\r\n return flag;\r\n }\r\n },\r\n})\r\n\r\n\r\n\r\n","import { render } from \"./brain.vue?vue&type=template&id=4214f81b&scoped=true&ts=true\"\nimport script from \"./brain.vue?vue&type=script&lang=ts\"\nexport * from \"./brain.vue?vue&type=script&lang=ts\"\n\nimport \"./brain.vue?vue&type=style&index=0&id=4214f81b&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4214f81b\"]])\n\nexport default __exports__","import * as echart from 'echarts/core';\r\nimport {\r\n TooltipComponent,\r\n TooltipComponentOption,\r\n\r\n} from 'echarts/components';\r\nimport { PieChart, PieSeriesOption } from 'echarts/charts';\r\nimport { LabelLayout } from 'echarts/features';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\n\r\nechart.use([\r\n TooltipComponent,\r\n PieChart,\r\n CanvasRenderer,\r\n LabelLayout\r\n]);\r\nexport const echarts = echart;\r\nexport type EChartsOption = echart.ComposeOption<\r\n TooltipComponentOption | PieSeriesOption\r\n>;","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-719ef7a1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"templateprogress\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"完全入径\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"病案:50份\", -1))\n\nimport { reactive, onMounted, ref, watch, toRefs, watchEffect} from \"vue\";\r\n//import { treeData } from './treeData'\r\nimport { InfoFilled } from '@element-plus/icons-vue'\r\n\r\n\r\n// 规范\r\nimport { EChartsOption, echarts } from './pieTree';\r\n//接口\r\n// 数据\r\nimport {gaugeData} from \"@/assets/testdata/gaugeData\"\r\n\r\nimport { ImgUrlFix } from '@u/contant'\r\nimport { \r\n ElNotification\r\n } from 'element-plus'\r\n \r\n\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'templateprogress',\n props: {\n data: null\n },\n emits: ['copyConfirm','changeState','emitCheckAllid','emitCheckAllZzid'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n data: any\r\n };\n\r\n\r\n \r\n \r\n const cardData:any = reactive(props.data);\r\n const propType = ref(false);\r\n const content: any = ref(null);\r\n const newTmplData: any = reactive([]);\r\n const isChecked = ref(false);\r\n const loading1 = ref(false);\r\n \r\n // watch(() => props.data, (val) => {\r\n // cardData.value = props.data\r\n \r\n\r\n // },{immediate:true})\r\n\r\n\r\n onMounted(() => {\r\n var myChart = echarts.init(content.value);\r\n var option: EChartsOption = {\r\n title: {\r\n text: '疗效',\r\n left: 'center',\r\n top: '40%',\r\n textStyle: {\r\n color: '#2b9466',\r\n fontSize: 15,\r\n },\r\n subtext: '80%',\r\n subtextStyle: {\r\n fontWeight: 'blod',\r\n color: 'red',\r\n }\r\n },\r\n series: [\r\n {\r\n name: 'Access From',\r\n type: 'pie',\r\n radius: [50, 60],\r\n avoidLabelOverlap: false,\r\n itemStyle: {\r\n borderRadius: 50,\r\n borderColor: '#fff',\r\n borderWidth: 2\r\n },\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n emphasis: {\r\n label: {\r\n show: false,\r\n fontSize: '40',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n { value: 1048, name: 'Search Engine',\r\n itemStyle: {\r\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\r\n {\r\n offset: 0,\r\n color: 'rgba(58,77,233,0.8)'\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(58,77,233,0.3)'\r\n }\r\n ])\r\n } \r\n },\r\n { value: 735, name: 'Direct', itemStyle: {color: 'transparent' } },\r\n ],\r\n zlevel: 2\r\n },\r\n {\r\n name: 'Access From',\r\n type: 'pie',\r\n radius: [50, 60],\r\n avoidLabelOverlap: false,\r\n itemStyle: {\r\n borderRadius: 50,\r\n borderColor: '#fff',\r\n borderWidth: 2\r\n },\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n emphasis: {\r\n label: {\r\n show: false,\r\n fontSize: '40',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n { value: 735, name: 'Direct', itemStyle: {color: '#f4f4f4' } },\r\n ],\r\n zlevel: 1\r\n }\r\n ]\r\n }\r\n \r\n \r\n myChart.setOption(option); \r\n myChart.on('click', function(param){\r\n // if(param.dataIndex === 1){\r\n // emit('bingzhongClick', param.value);\r\n // }else{\r\n // emit('dialecticalClick', param.value);\r\n // }\r\n }) \r\n \r\n })\r\n \r\n \r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _hoisted_3,\n _createElementVNode(\"div\", {\n class: \"templateprogress-content\",\n ref_key: \"content\",\n ref: content\n }, null, 512)\n ]))\n}\n}\n\n})","import script from \"./templateprogress.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./templateprogress.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./templateprogress.vue?vue&type=style&index=0&id=719ef7a1&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-719ef7a1\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n */\nvar LegendVisualProvider =\n/** @class */\nfunction () {\n function LegendVisualProvider( // Function to get data after filtered. It stores all the encoding info\n getDataWithEncodedVisual, // Function to get raw data before filtered.\n getRawData) {\n this._getDataWithEncodedVisual = getDataWithEncodedVisual;\n this._getRawData = getRawData;\n }\n\n LegendVisualProvider.prototype.getAllNames = function () {\n var rawData = this._getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n\n return rawData.mapArray(rawData.getName);\n };\n\n LegendVisualProvider.prototype.containName = function (name) {\n var rawData = this._getRawData();\n\n return rawData.indexOfName(name) >= 0;\n };\n\n LegendVisualProvider.prototype.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n\n return LegendVisualProvider;\n}();\n\nexport default LegendVisualProvider;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { retrieveRawValue } from '../../data/helper/dataProvider.js';\nimport { isArray } from 'zrender/lib/core/util.js';\n/**\n * @return label string. Not null/undefined\n */\n\nexport function getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);\n return rawVal != null ? rawVal + '' : null;\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\n }\n\n return vals.join(' ');\n }\n}\nexport function getDefaultInterpolatedLabel(data, interpolatedValue) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n\n if (!isArray(interpolatedValue)) {\n return interpolatedValue + '';\n }\n\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var dimIndex = data.getDimensionIndex(labelDims[i]);\n\n if (dimIndex >= 0) {\n vals.push(interpolatedValue[dimIndex]);\n }\n }\n\n return vals.join(' ');\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderSlot as _renderSlot, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c619f182\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"emptyBox\" }\nconst _hoisted_2 = { class: \"emptyImgBox\" }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = { class: \"text\" }\n\n\r\nimport {ImgUrlFix} from '@u/contant'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'empty',\n props: {\n imgSrc: { default: ImgUrlFix + 'images/empty-bg.png' }\n },\n setup(__props: any, { emit }: { emit: ({\r\n\r\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { imgSrc: string };\n\r\n\r\n/**\r\n * 食用方法\r\n * \r\n * \r\n \r\n 描述文字\r\n \r\n\r\n \r\n * \r\n * \r\n */\r\n\r\n\r\n\r\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"img\", {\n src: props.imgSrc\n }, null, 8, _hoisted_3)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n _createTextVNode(\" 暂无数据 \")\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./empty.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./empty.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./empty.vue?vue&type=style&index=0&id=c619f182&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c619f182\"]])\n\nexport default __exports__","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./casstable.vue?vue&type=style&index=0&id=1faff333&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./templateprogress.vue?vue&type=style&index=0&id=719ef7a1&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./cSteps.vue?vue&type=style&index=0&id=1508654f&lang=scss&scoped=true\"","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createVNode as _createVNode, unref as _unref, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = [\"innerHTML\"]\nconst _hoisted_6 = { class: \"caseeffect-percentage\" }\nconst _hoisted_7 = { class: \"caseeffect-tableBox\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"tableLine background-color fontWeight tableLine\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a0 padding10\" }, \"临床表现\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a1 padding10\" }, \"好多了\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a2 padding10\" }, \"好了些\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a3 padding10\" }, \"未见效\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a4 padding10\" }, \"加重\")\n], -1)\nconst _hoisted_9 = { class: \"tableLine background-color fontWeight tableLine0\" }\nconst _hoisted_10 = { class: \"a0 checked-bg\" }\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = [\"src\"]\nconst _hoisted_13 = { key: 1 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = [\"src\"]\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = { key: 0 }\nconst _hoisted_18 = [\"src\"]\nconst _hoisted_19 = { key: 1 }\nconst _hoisted_20 = { key: 0 }\nconst _hoisted_21 = [\"src\"]\nconst _hoisted_22 = { key: 1 }\nconst _hoisted_23 = { class: \"dialog-footer\" }\n\nimport { reactive, ref, watch } from \"vue\";\r\n//接口\r\nimport { getQuestionnaire } from '@r/api/xingling'\r\n// 引入第三方组件\r\nimport { ElNotification, ElLoading } from \"element-plus\";\r\n\r\nimport { ImgUrlFix } from \"@u/contant\";\r\nimport { bg } from \"element-plus/lib/locale\";\r\nimport { Checked } from \"@element-plus/icons-vue/dist/types\";\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'caseeffect',\n props: {\n dialogVisible: null,\n caseeffectitem: null\n },\n emits: ['update:dialogVisible'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n dialogVisible: any,\r\n caseeffectitem: any\r\n};\n\r\n\r\n\r\n\r\nconst propcaseeffectitem = ref(0)\r\nconst radio = ref(true)\r\nconst dialogeffectVisible = ref(props.dialogVisible)\r\nconst effectData = ref([])\r\nconst topicData = ref([])\r\nconst checkboxSelect = ref([])\r\n//关闭\r\nconst onClose = () => {\r\n emit('update:dialogVisible', false)\r\n\r\n}\r\nconst getCisw = (id: any) => {\r\n const loading = ElLoading.service({\r\n lock: true,\r\n text: \"加载中...\",\r\n background: \"rgba(0, 0, 0, 0.4)\",\r\n });\r\n getQuestionnaire({\r\n data: {\r\n effcollId: id, \r\n //effcollId: '06da0f9d-8be7-4b64-90af-cebb541e47b1',\r\n _times: new Date().getTime()\r\n }\r\n }).then((data: any) => {\r\n topicData.value = [].concat(data.submitTopic)\r\n effectData.value= [].concat(data.effcollforms)\r\n var arr: any = []\r\n data.submitTopic.forEach((item:any) => {\r\n if(item.type){\r\n item.submitOption.forEach((e:any) => {\r\n if(e.selected){\r\n arr.push(e.content)\r\n console.log(arr)\r\n\r\n }\r\n });\r\n \r\n }\r\n });\r\n \r\n checkboxSelect.value = arr\r\n propcaseeffectitem.value = data.Score\r\n loading.close();\r\n }).catch(() => {\r\n topicData.value = []\r\n propcaseeffectitem.value = 0\r\n loading.close();\r\n })\r\n}\r\n\r\nwatch(() => props.dialogVisible, (val) => {\r\n dialogeffectVisible.value = val\r\n}, {\r\n immediate: true\r\n})\r\nwatch(() => props.caseeffectitem, (val) => {\r\n if (val && val.id) {\r\n getCisw(val.id)\r\n }\r\n\r\n}, {\r\n immediate: true\r\n})\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_radio = _resolveComponent(\"el-radio\")!\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\")!\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\")!\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\")!\n const _component_el_col = _resolveComponent(\"el-col\")!\n const _component_el_row = _resolveComponent(\"el-row\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _directive_key = _resolveDirective(\"key\")!\n\n return (_openBlock(), _createBlock(_component_el_dialog, {\n modelValue: dialogeffectVisible.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((dialogeffectVisible).value = $event)),\n title: __props.caseeffectitem.patName + '随访问卷',\n width: \"60%\",\n onClose: onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"custom-class\": \"caseeffect\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_23, [\n _createVNode(_component_el_button, {\n type: \"success\",\n onClick: onClose\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_el_row, { gutter: 20 }, {\n default: _withCtx(() => [\n _createVNode(_component_el_col, { span: 14 }, {\n default: _withCtx(() => [\n (!topicData.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"暂无问卷\"))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(topicData.value, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: idx }, [\n (item.type == 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h4\", {\n innerHTML: ((idx + 1) + '、' + item.name)\n }, null, 8, _hoisted_3),\n _createVNode(_component_el_radio_group, {\n modelValue: radio.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((radio).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.submitOption, (e, i) => {\n return (_openBlock(), _createBlock(_component_el_radio, {\n label: e.selected,\n name: i,\n key: i,\n disabled: true\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(e.content), 1)\n ]),\n _: 2\n }, 1032, [\"label\", \"name\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true),\n (item.type == 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"h4\", {\n innerHTML: ((idx + 1) + '、' + item.name)\n }, null, 8, _hoisted_5),\n _createVNode(_component_el_checkbox_group, {\n modelValue: checkboxSelect.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((checkboxSelect).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.submitOption, (e, i) => {\n return (_openBlock(), _createBlock(_component_el_checkbox, {\n label: e.content,\n key: i,\n disabled: true\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(e.content), 1)\n ]),\n _: 2\n }, 1032, [\"label\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_el_col, { span: 10 }, {\n default: _withCtx(() => [\n _createElementVNode(\"h3\", _hoisted_6, [\n _createTextVNode(\"疗效指数:\"),\n _createElementVNode(\"span\", null, _toDisplayString(__props.caseeffectitem.per) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(effectData.value, (item, idx) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(item.name), 1),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '好多了' ? 'checked-bg a1' : 'a1' )\n }, [\n (item.selectName == '好多了')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_12)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '好了些' ? 'checked-bg a2' : 'a2' )\n }, [\n (item.selectName == '好了些')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_15)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '未见效' ? 'checked-bg a3' : 'a3' )\n }, [\n (item.selectName == '未见效')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_18)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '加重' ? 'checked-bg a4' : 'a4' )\n }, [\n (item.selectName == '加重')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_21)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \" -- \"))\n ], 2)\n ])), [\n [_directive_key, idx]\n ])\n }), 256))\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]))\n}\n}\n\n})","import script from \"./caseeffect.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./caseeffect.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./caseeffect.vue?vue&type=style&index=0&id=68d29b8a&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO: move labels out of viewport.\nimport { BoundingRect, updateProps, initProps, isElementRemoved } from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { parsePercent } from '../util/number.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport { updateLabelLinePoints, setLabelLineStyle, getLabelLineStatesModels } from './labelGuideHelper.js';\nimport { makeInner } from '../util/model.js';\nimport { retrieve2, each, keys, isFunction, filter, indexOf } from 'zrender/lib/core/util.js';\nimport { prepareLayoutList, hideOverlap, shiftLayoutOnX, shiftLayoutOnY } from './labelLayoutHelper.js';\nimport { labelInner, animateLabelValue } from './labelStyle.js';\n\nfunction cloneArr(points) {\n if (points) {\n var newPoints = [];\n\n for (var i = 0; i < points.length; i++) {\n newPoints.push(points[i].slice());\n }\n\n return newPoints;\n }\n}\n\nfunction prepareLayoutCallbackParams(labelItem, hostEl) {\n var label = labelItem.label;\n var labelLine = hostEl && hostEl.getTextGuideLine();\n return {\n dataIndex: labelItem.dataIndex,\n dataType: labelItem.dataType,\n seriesIndex: labelItem.seriesModel.seriesIndex,\n text: labelItem.label.style.text,\n rect: labelItem.hostRect,\n labelRect: labelItem.rect,\n // x: labelAttr.x,\n // y: labelAttr.y,\n align: label.style.align,\n verticalAlign: label.style.verticalAlign,\n labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\n };\n}\n\nvar LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\nvar dummyTransformable = new Transformable();\nvar labelLayoutInnerStore = makeInner();\nvar labelLineAnimationStore = makeInner();\n\nfunction extendWithKeys(target, source, keys) {\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (source[key] != null) {\n target[key] = source[key];\n }\n }\n}\n\nvar LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\n\nvar LabelManager =\n/** @class */\nfunction () {\n function LabelManager() {\n this._labelList = [];\n this._chartViewList = [];\n }\n\n LabelManager.prototype.clearLabels = function () {\n this._labelList = [];\n this._chartViewList = [];\n };\n /**\n * Add label to manager\n */\n\n\n LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\n var labelStyle = label.style;\n var hostEl = label.__hostTarget;\n var textConfig = hostEl.textConfig || {}; // TODO: If label is in other state.\n\n var labelTransform = label.getComputedTransform();\n var labelRect = label.getBoundingRect().plain();\n BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\n\n if (labelTransform) {\n dummyTransformable.setLocalTransform(labelTransform);\n } else {\n // Identity transform.\n dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0;\n dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\n }\n\n var host = label.__hostTarget;\n var hostRect;\n\n if (host) {\n hostRect = host.getBoundingRect().plain();\n var transform = host.getComputedTransform();\n BoundingRect.applyTransform(hostRect, hostRect, transform);\n }\n\n var labelGuide = hostRect && host.getTextGuideLine();\n\n this._labelList.push({\n label: label,\n labelLine: labelGuide,\n seriesModel: seriesModel,\n dataIndex: dataIndex,\n dataType: dataType,\n layoutOption: layoutOption,\n computedLayoutOption: null,\n rect: labelRect,\n hostRect: hostRect,\n // Label with lower priority will be hidden when overlapped\n // Use rect size as default priority\n priority: hostRect ? hostRect.width * hostRect.height : 0,\n // Save default label attributes.\n // For restore if developers want get back to default value in callback.\n defaultAttr: {\n ignore: label.ignore,\n labelGuideIgnore: labelGuide && labelGuide.ignore,\n x: dummyTransformable.x,\n y: dummyTransformable.y,\n scaleX: dummyTransformable.scaleX,\n scaleY: dummyTransformable.scaleY,\n rotation: dummyTransformable.rotation,\n style: {\n x: labelStyle.x,\n y: labelStyle.y,\n align: labelStyle.align,\n verticalAlign: labelStyle.verticalAlign,\n width: labelStyle.width,\n height: labelStyle.height,\n fontSize: labelStyle.fontSize\n },\n cursor: label.cursor,\n attachedPos: textConfig.position,\n attachedRot: textConfig.rotation\n }\n });\n };\n\n LabelManager.prototype.addLabelsOfSeries = function (chartView) {\n var _this = this;\n\n this._chartViewList.push(chartView);\n\n var seriesModel = chartView.__model;\n var layoutOption = seriesModel.get('labelLayout');\n /**\n * Ignore layouting if it's not specified anything.\n */\n\n if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\n return;\n }\n\n chartView.group.traverse(function (child) {\n if (child.ignore) {\n return true; // Stop traverse descendants.\n } // Only support label being hosted on graphic elements.\n\n\n var textEl = child.getTextContent();\n var ecData = getECData(child); // Can only attach the text on the element with dataIndex\n\n if (textEl && !textEl.disableLabelLayout) {\n _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\n }\n });\n };\n\n LabelManager.prototype.updateLayoutConfig = function (api) {\n var width = api.getWidth();\n var height = api.getHeight();\n\n function createDragHandler(el, labelLineModel) {\n return function () {\n updateLabelLinePoints(el, labelLineModel);\n };\n }\n\n for (var i = 0; i < this._labelList.length; i++) {\n var labelItem = this._labelList[i];\n var label = labelItem.label;\n var hostEl = label.__hostTarget;\n var defaultLabelAttr = labelItem.defaultAttr;\n var layoutOption = void 0; // TODO A global layout option?\n\n if (isFunction(labelItem.layoutOption)) {\n layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\n } else {\n layoutOption = labelItem.layoutOption;\n }\n\n layoutOption = layoutOption || {};\n labelItem.computedLayoutOption = layoutOption;\n var degreeToRadian = Math.PI / 180; // TODO hostEl should always exists.\n // Or label should not have parent because the x, y is all in global space.\n\n if (hostEl) {\n hostEl.setTextConfig({\n // Force to set local false.\n local: false,\n // Ignore position and rotation config on the host el if x or y is changed.\n position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos,\n // Ignore rotation config on the host el if rotation is changed.\n rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\n offset: [layoutOption.dx || 0, layoutOption.dy || 0]\n });\n }\n\n var needsUpdateLabelLine = false;\n\n if (layoutOption.x != null) {\n // TODO width of chart view.\n label.x = parsePercent(layoutOption.x, width);\n label.setStyle('x', 0); // Ignore movement in style. TODO: origin.\n\n needsUpdateLabelLine = true;\n } else {\n label.x = defaultLabelAttr.x;\n label.setStyle('x', defaultLabelAttr.style.x);\n }\n\n if (layoutOption.y != null) {\n // TODO height of chart view.\n label.y = parsePercent(layoutOption.y, height);\n label.setStyle('y', 0); // Ignore movement in style.\n\n needsUpdateLabelLine = true;\n } else {\n label.y = defaultLabelAttr.y;\n label.setStyle('y', defaultLabelAttr.style.y);\n }\n\n if (layoutOption.labelLinePoints) {\n var guideLine = hostEl.getTextGuideLine();\n\n if (guideLine) {\n guideLine.setShape({\n points: layoutOption.labelLinePoints\n }); // Not update\n\n needsUpdateLabelLine = false;\n }\n }\n\n var labelLayoutStore = labelLayoutInnerStore(label);\n labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\n label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\n label.scaleX = defaultLabelAttr.scaleX;\n label.scaleY = defaultLabelAttr.scaleY;\n\n for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\n var key = LABEL_OPTION_TO_STYLE_KEYS[k];\n label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\n }\n\n if (layoutOption.draggable) {\n label.draggable = true;\n label.cursor = 'move';\n\n if (hostEl) {\n var hostModel = labelItem.seriesModel;\n\n if (labelItem.dataIndex != null) {\n var data = labelItem.seriesModel.getData(labelItem.dataType);\n hostModel = data.getItemModel(labelItem.dataIndex);\n }\n\n label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\n }\n } else {\n // TODO Other drag functions?\n label.off('drag');\n label.cursor = defaultLabelAttr.cursor;\n }\n }\n };\n\n LabelManager.prototype.layout = function (api) {\n var width = api.getWidth();\n var height = api.getHeight();\n var labelList = prepareLayoutList(this._labelList);\n var labelsNeedsAdjustOnX = filter(labelList, function (item) {\n return item.layoutOption.moveOverlap === 'shiftX';\n });\n var labelsNeedsAdjustOnY = filter(labelList, function (item) {\n return item.layoutOption.moveOverlap === 'shiftY';\n });\n shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\n shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\n var labelsNeedsHideOverlap = filter(labelList, function (item) {\n return item.layoutOption.hideOverlap;\n });\n hideOverlap(labelsNeedsHideOverlap);\n };\n /**\n * Process all labels. Not only labels with layoutOption.\n */\n\n\n LabelManager.prototype.processLabelsOverall = function () {\n var _this = this;\n\n each(this._chartViewList, function (chartView) {\n var seriesModel = chartView.__model;\n var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\n var animationEnabled = seriesModel.isAnimationEnabled();\n chartView.group.traverse(function (child) {\n if (child.ignore && !child.forceLabelAnimation) {\n return true; // Stop traverse descendants.\n }\n\n var needsUpdateLabelLine = !ignoreLabelLineUpdate;\n var label = child.getTextContent();\n\n if (!needsUpdateLabelLine && label) {\n needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\n }\n\n if (needsUpdateLabelLine) {\n _this._updateLabelLine(child, seriesModel);\n }\n\n if (animationEnabled) {\n _this._animateLabels(child, seriesModel);\n }\n });\n });\n };\n\n LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\n // Only support label being hosted on graphic elements.\n var textEl = el.getTextContent(); // Update label line style.\n\n var ecData = getECData(el);\n var dataIndex = ecData.dataIndex; // Only support labelLine on the labels represent data.\n\n if (textEl && dataIndex != null) {\n var data = seriesModel.getData(ecData.dataType);\n var itemModel = data.getItemModel(dataIndex);\n var defaultStyle = {};\n var visualStyle = data.getItemVisual(dataIndex, 'style');\n var visualType = data.getVisual('drawType'); // Default to be same with main color\n\n defaultStyle.stroke = visualStyle[visualType];\n var labelLineModel = itemModel.getModel('labelLine');\n setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\n updateLabelLinePoints(el, labelLineModel);\n }\n };\n\n LabelManager.prototype._animateLabels = function (el, seriesModel) {\n var textEl = el.getTextContent();\n var guideLine = el.getTextGuideLine(); // Animate\n\n if (textEl // `forceLabelAnimation` has the highest priority\n && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) {\n var layoutStore = labelLayoutInnerStore(textEl);\n var oldLayout = layoutStore.oldLayout;\n var ecData = getECData(el);\n var dataIndex = ecData.dataIndex;\n var newProps = {\n x: textEl.x,\n y: textEl.y,\n rotation: textEl.rotation\n };\n var data = seriesModel.getData(ecData.dataType);\n\n if (!oldLayout) {\n textEl.attr(newProps); // Disable fade in animation if value animation is enabled.\n\n if (!labelInner(textEl).valueAnimation) {\n var oldOpacity = retrieve2(textEl.style.opacity, 1); // Fade in animation\n\n textEl.style.opacity = 0;\n initProps(textEl, {\n style: {\n opacity: oldOpacity\n }\n }, seriesModel, dataIndex);\n }\n } else {\n textEl.attr(oldLayout); // Make sure the animation from is in the right status.\n\n var prevStates = el.prevStates;\n\n if (prevStates) {\n if (indexOf(prevStates, 'select') >= 0) {\n textEl.attr(layoutStore.oldLayoutSelect);\n }\n\n if (indexOf(prevStates, 'emphasis') >= 0) {\n textEl.attr(layoutStore.oldLayoutEmphasis);\n }\n }\n\n updateProps(textEl, newProps, seriesModel, dataIndex);\n }\n\n layoutStore.oldLayout = newProps;\n\n if (textEl.states.select) {\n var layoutSelect = layoutStore.oldLayoutSelect = {};\n extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\n extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\n }\n\n if (textEl.states.emphasis) {\n var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\n extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\n extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\n }\n\n animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel);\n }\n\n if (guideLine && !guideLine.ignore && !guideLine.invisible) {\n var layoutStore = labelLineAnimationStore(guideLine);\n var oldLayout = layoutStore.oldLayout;\n var newLayout = {\n points: guideLine.shape.points\n };\n\n if (!oldLayout) {\n guideLine.setShape(newLayout);\n guideLine.style.strokePercent = 0;\n initProps(guideLine, {\n style: {\n strokePercent: 1\n }\n }, seriesModel);\n } else {\n guideLine.attr({\n shape: oldLayout\n });\n updateProps(guideLine, {\n shape: newLayout\n }, seriesModel);\n }\n\n layoutStore.oldLayout = newLayout;\n }\n };\n\n return LabelManager;\n}();\n\nexport default LabelManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { makeInner } from '../util/model.js';\nimport LabelManager from './LabelManager.js';\nvar getLabelManager = makeInner();\nexport function installLabelLayout(registers) {\n registers.registerUpdateLifecycle('series:beforeupdate', function (ecModel, api, params) {\n // TODO api provide an namespace that can save stuff per instance\n var labelManager = getLabelManager(api).labelManager;\n\n if (!labelManager) {\n labelManager = getLabelManager(api).labelManager = new LabelManager();\n }\n\n labelManager.clearLabels();\n });\n registers.registerUpdateLifecycle('series:layoutlabels', function (ecModel, api, params) {\n var labelManager = getLabelManager(api).labelManager;\n params.updatedSeries.forEach(function (series) {\n labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series));\n });\n labelManager.updateLayoutConfig(api);\n labelManager.layout(api);\n labelManager.processLabelsOverall();\n });\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./empty.vue?vue&type=style&index=0&id=c619f182&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b767a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"prescriptanslysis-content-brain\"\n}\nconst _hoisted_2 = {\n key: 2,\n class: \"prescriptanslysis-content-analysis\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"no-data\"\n}\nconst _hoisted_4 = { class: \"prescriptanslysis-content-item\" }\nconst _hoisted_5 = { class: \"prescriptanslysis-content-box-title\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", null, null, -1))\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_nav_title = _resolveComponent(\"nav-title\")!\n const _component_picker_group = _resolveComponent(\"picker-group\")!\n const _component_el_form_item = _resolveComponent(\"el-form-item\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_search = _resolveComponent(\"search\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_form = _resolveComponent(\"el-form\")!\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_brain = _resolveComponent(\"brain\")!\n const _component_compare_datanalysis_view = _resolveComponent(\"compare-datanalysis-view\")!\n const _component_empty = _resolveComponent(\"empty\")!\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\")!\n const _component_c_cell = _resolveComponent(\"c-cell\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _component_rxanalysis = _resolveComponent(\"rxanalysis\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (!$setup.showCase)\n ? (_openBlock(), _createBlock(_component_el_container, {\n key: 0,\n class: \"prescriptanslysis\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, { class: \"prescriptanslysis-header\" }, {\n default: _withCtx(() => [\n _createVNode(_component_nav_title, {\n label: \"数据分析\",\n secondLabel: \"处方分析\"\n }),\n _createVNode(_component_el_form, {\n inline: true,\n class: \"prescriptanslysis-header-search demo-form-inline\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_picker_group, {\n startDate: $setup.startval,\n \"onUpdate:startDate\": _cache[0] || (_cache[0] = ($event: any) => (($setup.startval) = $event)),\n endDate: $setup.endval,\n \"onUpdate:endDate\": _cache[1] || (_cache[1] = ($event: any) => (($setup.endval) = $event))\n }, null, 8, [\"startDate\", \"endDate\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_select, {\n modelValue: $setup.mrType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($setup.mrType) = $event)),\n clearable: \"\",\n placeholder: \"Select\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.options, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.value,\n label: item.label,\n value: item.value\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_search, {\n onSearchHandle: $setup.getSearch,\n searchWord: $setup.keyword,\n \"onUpdate:searchWord\": _cache[3] || (_cache[3] = ($event: any) => (($setup.keyword) = $event)),\n placeholderText: \"请输入...\",\n btnText: \"查询\",\n style: {\"margin-right\":\"20px\"}\n }, null, 8, [\"onSearchHandle\", \"searchWord\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_button, {\n type: \"success\",\n onClick: $setup.compareRecipe\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($setup.isSHowCompareView ? '返回列表' : '处方比较'), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_el_main, {\n justify: \"space-between\",\n class: \"prescriptanslysis-content\"\n }, {\n default: _withCtx(() => [\n (!$setup.isSHowCompareView)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_brain, { pointList: $setup.pointList }, null, 8, [\"pointList\"])\n ]))\n : _createCommentVNode(\"\", true),\n ($setup.isSHowCompareView)\n ? (_openBlock(), _createBlock(_component_compare_datanalysis_view, {\n key: 1,\n graph: $setup.graph\n }, null, 8, [\"graph\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (!$setup.analysisData.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_empty, null, {\n default: _withCtx(() => [\n _createTextVNode(\" 暂无处方 \")\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.analysisData, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"prescriptanslysis-content-box\",\n key: idx\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_c_cell, null, {\n icon: _withCtx(() => [\n _hoisted_6\n ]),\n title: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"blockColor\",\n onClick: ($event: any) => ($setup.showCaseMethod(item, 0))\n }, _toDisplayString(item.fjName), 9, _hoisted_7)\n ]),\n tip: _withCtx(() => [\n _createVNode(_component_el_checkbox, {\n class: \"singlese-check\",\n name: \"recipe\",\n modelValue: item.isChecked,\n \"onUpdate:modelValue\": ($event: any) => ((item.isChecked) = $event),\n fill: \"#2b9466\",\n size: \"large\",\n onChange: ($event: any) => ($setup.onchecked($event,idx))\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])\n ]),\n _: 2\n }, 1024),\n _createElementVNode(\"div\", {\n onClick: ($event: any) => ($setup.showCaseMethod(item, 0))\n }, [\n _createElementVNode(\"p\", null, \"使用次数:\" + _toDisplayString(item.useCount) + \"次\", 1),\n _createElementVNode(\"p\", null, \"平均疗效:\" + _toDisplayString(item.avgEff > -1 ? item.avgEff + '%' : '--'), 1)\n ], 8, _hoisted_8)\n ])\n ]))\n }), 128))\n ])\n ])), [\n [_directive_loading, $setup.analysisLoading]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n ($setup.showCase)\n ? (_openBlock(), _createBlock(_component_rxanalysis, {\n key: 1,\n fjItem: $setup.fjItem,\n mrType: $setup.mrType,\n onEmitshowCase: $setup.emitshowCase\n }, null, 8, [\"fjItem\", \"mrType\", \"onEmitshowCase\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function categoryFilter(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var categoriesData = graphSeries.getCategoriesData();\n var graph = graphSeries.getGraph();\n var data = graph.data;\n var categoryNames = categoriesData.mapArray(categoriesData.getName);\n data.filterSelf(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (isNumber(category)) {\n category = categoryNames[category];\n } // If in any legend component the status is not selected.\n\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(category)) {\n return false;\n }\n }\n }\n\n return true;\n });\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { extend, isString } from 'zrender/lib/core/util.js';\nexport default function categoryVisual(ecModel) {\n var paletteScope = {};\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var categoriesData = seriesModel.getCategoriesData();\n var data = seriesModel.getData();\n var categoryNameIdxMap = {};\n categoriesData.each(function (idx) {\n var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n categoryNameIdxMap['ec-' + name] = idx;\n var itemModel = categoriesData.getItemModel(idx);\n var style = itemModel.getModel('itemStyle').getItemStyle();\n\n if (!style.fill) {\n // Get color from palette.\n style.fill = seriesModel.getColorFromPalette(name, paletteScope);\n }\n\n categoriesData.setItemVisual(idx, 'style', style);\n var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < symbolVisualList.length; i++) {\n var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);\n\n if (symbolVisual != null) {\n categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);\n }\n }\n }); // Assign category color to visual\n\n if (categoriesData.count()) {\n data.each(function (idx) {\n var model = data.getItemModel(idx);\n var categoryIdx = model.getShallow('category');\n\n if (categoryIdx != null) {\n if (isString(categoryIdx)) {\n categoryIdx = categoryNameIdxMap['ec-' + categoryIdx];\n }\n\n var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style');\n var style = data.ensureUniqueItemVisual(idx, 'style');\n extend(style, categoryStyle);\n var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < visualList.length; i++) {\n data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));\n }\n }\n });\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { extend } from 'zrender/lib/core/util.js';\n\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nexport default function graphEdgeVisual(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var edgeData = seriesModel.getEdgeData();\n var symbolType = normalize(seriesModel.get('edgeSymbol'));\n var symbolSize = normalize(seriesModel.get('edgeSymbolSize')); // const colorQuery = ['lineStyle', 'color'] as const;\n // const opacityQuery = ['lineStyle', 'opacity'] as const;\n\n edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n edgeData.setVisual('style', seriesModel.getModel('lineStyle').getLineStyle());\n edgeData.each(function (idx) {\n var itemModel = edgeData.getItemModel(idx);\n var edge = graph.getEdgeByIndex(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n var style = itemModel.getModel('lineStyle').getLineStyle();\n var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style');\n extend(existsStyle, style);\n\n switch (existsStyle.stroke) {\n case 'source':\n {\n var nodeStyle = edge.node1.getVisual('style');\n existsStyle.stroke = nodeStyle && nodeStyle.fill;\n break;\n }\n\n case 'target':\n {\n var nodeStyle = edge.node2.getVisual('style');\n existsStyle.stroke = nodeStyle && nodeStyle.fill;\n break;\n }\n }\n\n symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n });\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (zrUtil.isNumber(autoCurvenessParmas)) {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nexport function initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\nexport function createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\nexport function getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nexport function simpleLayout(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n var model = node.getModel();\n node.setLayout([+model.get('x'), +model.get('y')]);\n });\n simpleLayoutEdge(graph, seriesModel);\n}\nexport function simpleLayoutEdge(graph, seriesModel) {\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var points = [p1, p2];\n\n if (+curveness) {\n points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n }\n\n edge.setLayout(points);\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each } from 'zrender/lib/core/util.js';\nimport { simpleLayout, simpleLayoutEdge } from './simpleLayoutHelper.js';\nexport default function graphSimpleLayout(ecModel, api) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var layout = seriesModel.get('layout');\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n var data_1 = seriesModel.getData();\n var dimensions_1 = [];\n each(coordSys.dimensions, function (coordDim) {\n dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));\n });\n\n for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {\n var value = [];\n var hasValue = false;\n\n for (var i = 0; i < dimensions_1.length; i++) {\n var val = data_1.get(dimensions_1[i], dataIndex);\n\n if (!isNaN(val)) {\n hasValue = true;\n }\n\n value.push(val);\n }\n\n if (hasValue) {\n data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n } else {\n // Also {Array.}, not undefined to avoid if...else... statement\n data_1.setItemLayout(dataIndex, [NaN, NaN]);\n }\n }\n\n simpleLayoutEdge(data_1.graph, seriesModel);\n } else if (!layout || layout === 'none') {\n simpleLayout(seriesModel);\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport function getNodeGlobalScale(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n var groupZoom = coordSys.scaleX; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n}\nexport function getSymbolSize(node) {\n var symbolSize = node.getVisual('symbolSize');\n\n if (symbolSize instanceof Array) {\n symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n }\n\n return +symbolSize;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport { getSymbolSize, getNodeGlobalScale } from './graphHelper.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nvar PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\n * `basedOn` can be:\n * 'value':\n * This layout is not accurate and have same bad case. For example,\n * if the min value is very smaller than the max value, the nodes\n * with the min value probably overlap even though there is enough\n * space to layout them. So we only use this approach in the as the\n * init layout of the force layout.\n * FIXME\n * Probably we do not need this method any more but use\n * `basedOn: 'symbolSize'` in force layout if\n * delay its init operations to GraphView.\n * 'symbolSize':\n * This approach work only if all of the symbol size calculated.\n * That is, the progressive rendering is not applied to graph.\n * FIXME\n * If progressive rendering is applied to graph some day,\n * probably we have to use `basedOn: 'value'`.\n */\n\nexport function circularLayout(seriesModel, basedOn, draggingNode, pointer) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var rect = coordSys.getBoundingRect();\n var nodeData = seriesModel.getData();\n var graph = nodeData.graph;\n var cx = rect.width / 2 + rect.x;\n var cy = rect.height / 2 + rect.y;\n var r = Math.min(rect.width, rect.height) / 2;\n var count = nodeData.count();\n nodeData.setLayout({\n cx: cx,\n cy: cy\n });\n\n if (!count) {\n return;\n }\n\n if (draggingNode) {\n var _a = coordSys.pointToData(pointer),\n tempX = _a[0],\n tempY = _a[1];\n\n var v = [tempX - cx, tempY - cy];\n vec2.normalize(v, v);\n vec2.scale(v, v, r);\n draggingNode.setLayout([cx + v[0], cy + v[1]], true);\n var circularRotateLabel = seriesModel.get(['circular', 'rotateLabel']);\n rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy);\n }\n\n _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count);\n\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), getCurvenessForEdge(edge, seriesModel, index), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var cp1;\n var x12 = (p1[0] + p2[0]) / 2;\n var y12 = (p1[1] + p2[1]) / 2;\n\n if (+curveness) {\n curveness *= 3;\n cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n }\n\n edge.setLayout([p1, p2, cp1]);\n });\n}\nvar _layoutNodesBasedOn = {\n value: function (seriesModel, graph, nodeData, r, cx, cy, count) {\n var angle = 0;\n var sum = nodeData.getSum('value');\n var unitAngle = Math.PI * 2 / (sum || count);\n graph.eachNode(function (node) {\n var value = node.getValue('value');\n var radianHalf = unitAngle * (sum ? value : 1) / 2;\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n },\n symbolSize: function (seriesModel, graph, nodeData, r, cx, cy, count) {\n var sumRadian = 0;\n _symbolRadiansHalf.length = count;\n var nodeScale = getNodeGlobalScale(seriesModel);\n graph.eachNode(function (node) {\n var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n // some the defensive code (2px is an arbitrary value).\n\n isNaN(symbolSize) && (symbolSize = 2);\n symbolSize < 0 && (symbolSize = 0);\n symbolSize *= nodeScale;\n var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n sumRadian += symbolRadianHalf * 2;\n });\n var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n var angle = 0;\n graph.eachNode(function (node) {\n var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n angle += radianHalf; // init circular layout for\n // 1. layout undefined node\n // 2. not fixed node\n\n (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n }\n};\nexport function rotateNodeLabel(node, circularRotateLabel, cx, cy) {\n var el = node.getGraphicEl(); // need to check if el exists. '-' value may not create node element.\n\n if (!el) {\n return;\n }\n\n var nodeModel = node.getModel();\n var labelRotate = nodeModel.get(['label', 'rotate']) || 0;\n var symbolPath = el.getSymbolPath();\n\n if (circularRotateLabel) {\n var pos = node.getLayout();\n var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n var isLeft = pos[0] < cx;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n\n var textPosition = isLeft ? 'left' : 'right';\n symbolPath.setTextConfig({\n rotation: -rad,\n position: textPosition,\n origin: 'center'\n });\n var emphasisState = symbolPath.ensureState('emphasis');\n zrUtil.extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {\n position: textPosition\n });\n } else {\n symbolPath.setTextConfig({\n rotation: labelRotate *= Math.PI / 180\n });\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { circularLayout } from './circularLayoutHelper.js';\nexport default function graphCircularLayout(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n if (seriesModel.get('layout') === 'circular') {\n circularLayout(seriesModel, 'symbolSize');\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* Some formulas were originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment of the method \"step\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n// return e.n1 === n ? e.n2 : e.n1;\n// }\n\nexport function forceLayout(inNodes, inEdges, opts) {\n var nodes = inNodes;\n var edges = inEdges;\n var rect = opts.rect;\n var width = rect.width;\n var height = rect.height;\n var center = [rect.x + width / 2, rect.y + height / 2]; // let scale = opts.scale || 1;\n\n var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (let i = 0; i < edges.length; i++) {\n // let e = edges[i];\n // let n1 = e.n1;\n // let n2 = e.n2;\n // n1.edges = n1.edges || [];\n // n2.edges = n2.edges || [];\n // n1.edges.push(e);\n // n2.edges.push(e);\n // }\n // Init position\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.p) {\n n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n }\n\n n.pp = vec2.clone(n.p);\n n.edges = null;\n } // Formula in 'Graph Drawing by Force-directed Placement'\n // let k = scale * Math.sqrt(width * height / nodes.length);\n // let k2 = k * k;\n\n\n var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n var friction = initialFriction;\n var beforeStepCallback;\n var afterStepCallback;\n return {\n warmUp: function () {\n friction = initialFriction * 0.8;\n },\n setFixed: function (idx) {\n nodes[idx].fixed = true;\n },\n setUnfixed: function (idx) {\n nodes[idx].fixed = false;\n },\n\n /**\n * Before step hook\n */\n beforeStep: function (cb) {\n beforeStepCallback = cb;\n },\n\n /**\n * After step hook\n */\n afterStep: function (cb) {\n afterStepCallback = cb;\n },\n\n /**\n * Some formulas were originally copied from \"d3.js\"\n * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\n * with some modifications made for this project.\n * See the license statement at the head of this file.\n */\n step: function (cb) {\n beforeStepCallback && beforeStepCallback(nodes, edges);\n var v12 = [];\n var nLen = nodes.length;\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n\n if (e.ignoreForceLayout) {\n continue;\n }\n\n var n1 = e.n1;\n var n2 = e.n2;\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12) - e.d;\n var w = n2.w / (n1.w + n2.w);\n\n if (isNaN(w)) {\n w = 0;\n }\n\n vec2.normalize(v12, v12);\n !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n } // Gravity\n\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v12, center, n.p); // let d = vec2.len(v12);\n // vec2.scale(v12, v12, 1 / d);\n // let gravityFactor = gravity;\n\n scaleAndAdd(n.p, n.p, v12, gravity * friction);\n }\n } // Repulsive\n // PENDING\n\n\n for (var i = 0; i < nLen; i++) {\n var n1 = nodes[i];\n\n for (var j = i + 1; j < nLen; j++) {\n var n2 = nodes[j];\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12);\n\n if (d === 0) {\n // Random repulse\n vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n d = 1;\n }\n\n var repFact = (n1.rep + n2.rep) / d / d;\n !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n }\n }\n\n var v = [];\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v, n.p, n.pp);\n scaleAndAdd(n.p, n.p, v, friction);\n vec2.copy(n.pp, n.p);\n }\n }\n\n friction = friction * 0.992;\n var finished = friction < 0.01;\n afterStepCallback && afterStepCallback(nodes, edges, finished);\n cb && cb(finished);\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { forceLayout } from './forceHelper.js';\nimport { simpleLayout } from './simpleLayoutHelper.js';\nimport { circularLayout } from './circularLayoutHelper.js';\nimport { linearMap } from '../../util/number.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nexport default function graphForceLayout(ecModel) {\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var coordSys = graphSeries.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n if (graphSeries.get('layout') === 'force') {\n var preservedPoints_1 = graphSeries.preservedPoints || {};\n var graph_1 = graphSeries.getGraph();\n var nodeData_1 = graph_1.data;\n var edgeData = graph_1.edgeData;\n var forceModel = graphSeries.getModel('force');\n var initLayout = forceModel.get('initLayout');\n\n if (graphSeries.preservedPoints) {\n nodeData_1.each(function (idx) {\n var id = nodeData_1.getId(idx);\n nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);\n });\n } else if (!initLayout || initLayout === 'none') {\n simpleLayout(graphSeries);\n } else if (initLayout === 'circular') {\n circularLayout(graphSeries, 'value');\n }\n\n var nodeDataExtent_1 = nodeData_1.getDataExtent('value');\n var edgeDataExtent_1 = edgeData.getDataExtent('value'); // let edgeDataExtent = edgeData.getDataExtent('value');\n\n var repulsion = forceModel.get('repulsion');\n var edgeLength = forceModel.get('edgeLength');\n var repulsionArr_1 = zrUtil.isArray(repulsion) ? repulsion : [repulsion, repulsion];\n var edgeLengthArr_1 = zrUtil.isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength]; // Larger value has smaller length\n\n edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];\n var nodes_1 = nodeData_1.mapArray('value', function (value, idx) {\n var point = nodeData_1.getItemLayout(idx);\n var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);\n\n if (isNaN(rep)) {\n rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;\n }\n\n return {\n w: rep,\n rep: rep,\n fixed: nodeData_1.getItemModel(idx).get('fixed'),\n p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n };\n });\n var edges = edgeData.mapArray('value', function (value, idx) {\n var edge = graph_1.getEdgeByIndex(idx);\n var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);\n\n if (isNaN(d)) {\n d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;\n }\n\n var edgeModel = edge.getModel();\n var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\n return {\n n1: nodes_1[edge.node1.dataIndex],\n n2: nodes_1[edge.node2.dataIndex],\n d: d,\n curveness: curveness,\n ignoreForceLayout: edgeModel.get('ignoreForceLayout')\n };\n }); // let coordSys = graphSeries.coordinateSystem;\n\n var rect = coordSys.getBoundingRect();\n var forceInstance = forceLayout(nodes_1, edges, {\n rect: rect,\n gravity: forceModel.get('gravity'),\n friction: forceModel.get('friction')\n });\n forceInstance.beforeStep(function (nodes, edges) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].fixed) {\n // Write back to layout instance\n vec2.copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());\n }\n }\n });\n forceInstance.afterStep(function (nodes, edges, stopped) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (!nodes[i].fixed) {\n graph_1.getNodeByIndex(i).setLayout(nodes[i].p);\n }\n\n preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;\n }\n\n for (var i = 0, l = edges.length; i < l; i++) {\n var e = edges[i];\n var edge = graph_1.getEdgeByIndex(i);\n var p1 = e.n1.p;\n var p2 = e.n2.p;\n var points = edge.getLayout();\n points = points ? points.slice() : [];\n points[0] = points[0] || [];\n points[1] = points[1] || [];\n vec2.copy(points[0], p1);\n vec2.copy(points[1], p2);\n\n if (+e.curveness) {\n points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n }\n\n edge.setLayout(points);\n }\n });\n graphSeries.forceLayout = forceInstance;\n graphSeries.preservedPoints = preservedPoints_1; // Step to get the layout\n\n forceInstance.step();\n } else {\n // Remove prev injected forceLayout instance\n graphSeries.forceLayout = null;\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\n\nimport * as vector from 'zrender/lib/core/vector.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport { parsePercent } from '../util/number.js';\nvar v2ApplyTransform = vector.applyTransform;\n\nvar View =\n/** @class */\nfunction (_super) {\n __extends(View, _super);\n\n function View(name) {\n var _this = _super.call(this) || this;\n\n _this.type = 'view';\n _this.dimensions = ['x', 'y'];\n /**\n * Represents the transform brought by roam/zoom.\n * If `View['_viewRect']` applies roam transform,\n * we can get the final displayed rect.\n */\n\n _this._roamTransformable = new Transformable();\n /**\n * Represents the transform from `View['_rect']` to `View['_viewRect']`.\n */\n\n _this._rawTransformable = new Transformable();\n _this.name = name;\n return _this;\n }\n\n View.prototype.setBoundingRect = function (x, y, width, height) {\n this._rect = new BoundingRect(x, y, width, height);\n return this._rect;\n };\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n\n\n View.prototype.getBoundingRect = function () {\n return this._rect;\n };\n\n View.prototype.setViewRect = function (x, y, width, height) {\n this._transformTo(x, y, width, height);\n\n this._viewRect = new BoundingRect(x, y, width, height);\n };\n /**\n * Transformed to particular position and size\n */\n\n\n View.prototype._transformTo = function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var rawTransform = this._rawTransformable;\n rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n var rawParent = rawTransform.parent;\n rawTransform.parent = null;\n rawTransform.decomposeTransform();\n rawTransform.parent = rawParent;\n\n this._updateTransform();\n };\n /**\n * Set center of view\n */\n\n\n View.prototype.setCenter = function (centerCoord, api) {\n if (!centerCoord) {\n return;\n }\n\n this._center = [parsePercent(centerCoord[0], api.getWidth()), parsePercent(centerCoord[1], api.getHeight())];\n\n this._updateCenterAndZoom();\n };\n\n View.prototype.setZoom = function (zoom) {\n zoom = zoom || 1;\n var zoomLimit = this.zoomLimit;\n\n if (zoomLimit) {\n if (zoomLimit.max != null) {\n zoom = Math.min(zoomLimit.max, zoom);\n }\n\n if (zoomLimit.min != null) {\n zoom = Math.max(zoomLimit.min, zoom);\n }\n }\n\n this._zoom = zoom;\n\n this._updateCenterAndZoom();\n };\n /**\n * Get default center without roam\n */\n\n\n View.prototype.getDefaultCenter = function () {\n // Rect before any transform\n var rawRect = this.getBoundingRect();\n var cx = rawRect.x + rawRect.width / 2;\n var cy = rawRect.y + rawRect.height / 2;\n return [cx, cy];\n };\n\n View.prototype.getCenter = function () {\n return this._center || this.getDefaultCenter();\n };\n\n View.prototype.getZoom = function () {\n return this._zoom || 1;\n };\n\n View.prototype.getRoamTransform = function () {\n return this._roamTransformable.getLocalTransform();\n };\n /**\n * Remove roam\n */\n\n\n View.prototype._updateCenterAndZoom = function () {\n // Must update after view transform updated\n var rawTransformMatrix = this._rawTransformable.getLocalTransform();\n\n var roamTransform = this._roamTransformable;\n var defaultCenter = this.getDefaultCenter();\n var center = this.getCenter();\n var zoom = this.getZoom();\n center = vector.applyTransform([], center, rawTransformMatrix);\n defaultCenter = vector.applyTransform([], defaultCenter, rawTransformMatrix);\n roamTransform.originX = center[0];\n roamTransform.originY = center[1];\n roamTransform.x = defaultCenter[0] - center[0];\n roamTransform.y = defaultCenter[1] - center[1];\n roamTransform.scaleX = roamTransform.scaleY = zoom;\n\n this._updateTransform();\n };\n /**\n * Update transform props on `this` based on the current\n * `this._roamTransformable` and `this._rawTransformable`.\n */\n\n\n View.prototype._updateTransform = function () {\n var roamTransformable = this._roamTransformable;\n var rawTransformable = this._rawTransformable;\n rawTransformable.parent = roamTransformable;\n roamTransformable.updateTransform();\n rawTransformable.updateTransform();\n matrix.copy(this.transform || (this.transform = []), rawTransformable.transform || matrix.create());\n this._rawTransform = rawTransformable.getLocalTransform();\n this.invTransform = this.invTransform || [];\n matrix.invert(this.invTransform, this.transform);\n this.decomposeTransform();\n };\n\n View.prototype.getTransformInfo = function () {\n var rawTransformable = this._rawTransformable;\n var roamTransformable = this._roamTransformable; // Becuase roamTransformabel has `originX/originY` modified,\n // but the caller of `getTransformInfo` can not handle `originX/originY`,\n // so need to recalcualte them.\n\n var dummyTransformable = new Transformable();\n dummyTransformable.transform = roamTransformable.transform;\n dummyTransformable.decomposeTransform();\n return {\n roam: {\n x: dummyTransformable.x,\n y: dummyTransformable.y,\n scaleX: dummyTransformable.scaleX,\n scaleY: dummyTransformable.scaleY\n },\n raw: {\n x: rawTransformable.x,\n y: rawTransformable.y,\n scaleX: rawTransformable.scaleX,\n scaleY: rawTransformable.scaleY\n }\n };\n };\n\n View.prototype.getViewRect = function () {\n return this._viewRect;\n };\n /**\n * Get view rect after roam transform\n */\n\n\n View.prototype.getViewRectAfterRoam = function () {\n var rect = this.getBoundingRect().clone();\n rect.applyTransform(this.transform);\n return rect;\n };\n /**\n * Convert a single (lon, lat) data item to (x, y) point.\n */\n\n\n View.prototype.dataToPoint = function (data, noRoam, out) {\n var transform = noRoam ? this._rawTransform : this.transform;\n out = out || [];\n return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n };\n /**\n * Convert a (x, y) point to (lon, lat) data\n */\n\n\n View.prototype.pointToData = function (point) {\n var invTransform = this.invTransform;\n return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n };\n\n View.prototype.convertToPixel = function (ecModel, finder, value) {\n var coordSys = getCoordSys(finder);\n return coordSys === this ? coordSys.dataToPoint(value) : null;\n };\n\n View.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n var coordSys = getCoordSys(finder);\n return coordSys === this ? coordSys.pointToData(pixel) : null;\n };\n /**\n * @implements\n */\n\n\n View.prototype.containPoint = function (point) {\n return this.getViewRectAfterRoam().contain(point[0], point[1]);\n };\n\n View.dimensions = ['x', 'y'];\n return View;\n}(Transformable);\n\nfunction getCoordSys(finder) {\n var seriesModel = finder.seriesModel;\n return seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n}\n\nexport default View;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Where to create the simple view coordinate system\nimport View from '../../coord/View.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport * as bbox from 'zrender/lib/core/bbox.js';\nimport { extend } from 'zrender/lib/core/util.js';\n\nfunction getViewRect(seriesModel, api, aspect) {\n var option = extend(seriesModel.getBoxLayoutParams(), {\n aspect: aspect\n });\n return getLayoutRect(option, {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nexport default function createViewCoordSys(ecModel, api) {\n var viewList = [];\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var coordSysType = seriesModel.get('coordinateSystem');\n\n if (!coordSysType || coordSysType === 'view') {\n var data_1 = seriesModel.getData();\n var positions = data_1.mapArray(function (idx) {\n var itemModel = data_1.getItemModel(idx);\n return [+itemModel.get('x'), +itemModel.get('y')];\n });\n var min = [];\n var max = [];\n bbox.fromPoints(positions, min, max); // If width or height is 0\n\n if (max[0] - min[0] === 0) {\n max[0] += 1;\n min[0] -= 1;\n }\n\n if (max[1] - min[1] === 0) {\n max[1] += 1;\n min[1] -= 1;\n }\n\n var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n if (isNaN(aspect)) {\n min = [viewRect.x, viewRect.y];\n max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n }\n\n var bbWidth = max[0] - min[0];\n var bbHeight = max[1] - min[1];\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var viewCoordSys = seriesModel.coordinateSystem = new View();\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n viewCoordSys.setCenter(seriesModel.get('center'), api);\n viewCoordSys.setZoom(seriesModel.get('zoom'));\n viewList.push(viewCoordSys);\n }\n });\n return viewList;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport { getDefaultLabel } from './labelHelper.js';\nimport { extend } from 'zrender/lib/core/util.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar Symbol =\n/** @class */\nfunction (_super) {\n __extends(Symbol, _super);\n\n function Symbol(data, idx, seriesScope, opts) {\n var _this = _super.call(this) || this;\n\n _this.updateData(data, idx, seriesScope, opts);\n\n return _this;\n }\n\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll(); // let symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n };\n /**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(null, toLastFrame);\n };\n\n Symbol.prototype.getSymbolType = function () {\n return this._symbolType;\n };\n /**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\n Symbol.prototype.getSymbolPath = function () {\n return this.childAt(0);\n };\n /**\n * Highlight symbol\n */\n\n\n Symbol.prototype.highlight = function () {\n enterEmphasis(this.childAt(0));\n };\n /**\n * Downplay symbol\n */\n\n\n Symbol.prototype.downplay = function () {\n leaveEmphasis(this.childAt(0));\n };\n /**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\n Symbol.prototype.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n };\n\n Symbol.prototype.setDraggable = function (draggable, hasCursorOption) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor;\n };\n /**\n * Update symbol properties\n */\n\n\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = Symbol.getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n var disableAnimation = opts && opts.disableAnimation;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n var target = {\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n };\n disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n saveOldStyle(symbolPath);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n\n if (!disableAnimation) {\n var target = {\n scaleX: this._sizeX,\n scaleY: this._sizeY,\n style: {\n // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n opacity: symbolPath.style.opacity\n }\n };\n symbolPath.scaleX = symbolPath.scaleY = 0;\n symbolPath.style.opacity = 0;\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n }\n\n if (disableAnimation) {\n // Must stop leave transition manually if don't call initProps or updateProps.\n this.childAt(0).stopAnimation('leave');\n }\n };\n\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var emphasisItemStyle;\n var blurItemStyle;\n var selectItemStyle;\n var focus;\n var blurScope;\n var emphasisDisabled;\n var labelStatesModels;\n var hoverScale;\n var cursorStyle;\n\n if (seriesScope) {\n emphasisItemStyle = seriesScope.emphasisItemStyle;\n blurItemStyle = seriesScope.blurItemStyle;\n selectItemStyle = seriesScope.selectItemStyle;\n focus = seriesScope.focus;\n blurScope = seriesScope.blurScope;\n labelStatesModels = seriesScope.labelStatesModels;\n hoverScale = seriesScope.hoverScale;\n cursorStyle = seriesScope.cursorStyle;\n emphasisDisabled = seriesScope.emphasisDisabled;\n }\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n emphasisDisabled = emphasisModel.get('disabled');\n labelStatesModels = getLabelStatesModels(itemModel);\n hoverScale = emphasisModel.getShallow('scale');\n cursorStyle = itemModel.getShallow('cursor');\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n\n if (symbolOffset) {\n symbolPath.x = symbolOffset[0];\n symbolPath.y = symbolOffset[1];\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\n var symbolStyle = data.getItemVisual(idx, 'style');\n var visualColor = symbolStyle.fill;\n\n if (symbolPath instanceof ZRImage) {\n var pathStyle = symbolPath.style;\n symbolPath.useStyle(extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, symbolStyle));\n } else {\n if (symbolPath.__isEmptyBrush) {\n // fill and stroke will be swapped if it's empty.\n // So we cloned a new style to avoid it affecting the original style in visual storage.\n // TODO Better implementation. No empty logic!\n symbolPath.useStyle(extend({}, symbolStyle));\n } else {\n symbolPath.useStyle(symbolStyle);\n } // Disable decal because symbol scale will been applied on the decal.\n\n\n symbolPath.style.decal = null;\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n symbolPath.style.strokeNoScale = true;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = this._z2;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n this._z2 = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n this._z2 = null;\n }\n\n var useNameLabel = opts && opts.useNameLabel;\n setLabelStyle(symbolPath, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n inheritColor: visualColor,\n defaultOpacity: symbolStyle.opacity\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n this._sizeX = symbolSize[0] / 2;\n this._sizeY = symbolSize[1] / 2;\n var emphasisState = symbolPath.ensureState('emphasis');\n emphasisState.style = emphasisItemStyle;\n symbolPath.ensureState('select').style = selectItemStyle;\n symbolPath.ensureState('blur').style = blurItemStyle; // null / undefined / true means to use default strategy.\n // 0 / false / negative number / NaN / Infinity means no scale.\n\n var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down\n : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; // always set scale to allow resetting\n\n emphasisState.scaleX = this._sizeX * scaleRatio;\n emphasisState.scaleY = this._sizeY * scaleRatio;\n this.setSymbolScale(1);\n toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n };\n\n Symbol.prototype.setSymbolScale = function (scale) {\n this.scaleX = this.scaleY = scale;\n };\n\n Symbol.prototype.fadeOut = function (cb, seriesModel, opt) {\n var symbolPath = this.childAt(0);\n var dataIndex = getECData(this).dataIndex;\n var animationOpt = opt && opt.animation; // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n if (opt && opt.fadeLabel) {\n var textContent = symbolPath.getTextContent();\n\n if (textContent) {\n graphic.removeElement(textContent, {\n style: {\n opacity: 0\n }\n }, seriesModel, {\n dataIndex: dataIndex,\n removeOpt: animationOpt,\n cb: function () {\n symbolPath.removeTextContent();\n }\n });\n }\n } else {\n symbolPath.removeTextContent();\n }\n\n graphic.removeElement(symbolPath, {\n style: {\n opacity: 0\n },\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: dataIndex,\n cb: cb,\n removeOpt: animationOpt\n });\n };\n\n Symbol.getSymbolSize = function (data, idx) {\n return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n };\n\n return Symbol;\n}(graphic.Group);\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nexport default Symbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic.js';\nimport SymbolClz from './Symbol.js';\nimport { isObject } from 'zrender/lib/core/util.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n var emphasisModel = seriesModel.getModel('emphasis');\n return {\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n focus: emphasisModel.get('focus'),\n blurScope: emphasisModel.get('blurScope'),\n emphasisDisabled: emphasisModel.get('disabled'),\n hoverScale: emphasisModel.get('scale'),\n labelStatesModels: getLabelStatesModels(seriesModel),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar SymbolDraw =\n/** @class */\nfunction () {\n function SymbolDraw(SymbolCtor) {\n this.group = new graphic.Group();\n this._SymbolCtor = SymbolCtor || SymbolClz;\n }\n /**\n * Update symbols draw by new data\n */\n\n\n SymbolDraw.prototype.updateData = function (data, opt) {\n // Remove progressive els.\n this._progressiveEls = null;\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._SymbolCtor;\n var disableAnimation = opt.disableAnimation;\n var seriesScope = makeSeriesScope(data);\n var symbolUpdateOpt = {\n disableAnimation: disableAnimation\n };\n\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n return data.getItemLayout(idx);\n }; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = getSymbolPoint(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = getSymbolPoint(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle';\n var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();\n\n if (!symbolEl // Create a new if symbol type changed.\n || oldSymbolType && oldSymbolType !== newSymbolType) {\n group.remove(symbolEl);\n symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n var target = {\n x: point[0],\n y: point[1]\n };\n disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n }, seriesModel);\n }).execute();\n this._getSymbolPoint = getSymbolPoint;\n this._data = data;\n };\n\n ;\n\n SymbolDraw.prototype.updateLayout = function () {\n var _this = this;\n\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = _this._getSymbolPoint(idx);\n\n el.setPosition(point);\n el.markRedraw();\n });\n }\n };\n\n ;\n\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n };\n\n ;\n /**\n * Update symbols draw by new data\n */\n\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n // Clear\n this._progressiveEls = [];\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.setPosition(point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n\n this._progressiveEls.push(el);\n }\n }\n };\n\n ;\n\n SymbolDraw.prototype.eachRendered = function (cb) {\n graphic.traverseElements(this._progressiveEls || this.group, cb);\n };\n\n SymbolDraw.prototype.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n }, data.hostModel);\n });\n } else {\n group.removeAll();\n }\n };\n\n ;\n return SymbolDraw;\n}();\n\nexport default SymbolDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Line path for bezier and straight line draw\n */\n\nimport * as graphic from '../../util/graphic.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nvar StraightLineShape =\n/** @class */\nfunction () {\n function StraightLineShape() {\n // Start point\n this.x1 = 0;\n this.y1 = 0; // End point\n\n this.x2 = 0;\n this.y2 = 0;\n this.percent = 1;\n }\n\n return StraightLineShape;\n}();\n\nvar CurveShape =\n/** @class */\nfunction (_super) {\n __extends(CurveShape, _super);\n\n function CurveShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return CurveShape;\n}(StraightLineShape);\n\nfunction isStraightLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar ECLinePath =\n/** @class */\nfunction (_super) {\n __extends(ECLinePath, _super);\n\n function ECLinePath(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'ec-line';\n return _this;\n }\n\n ECLinePath.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n\n ECLinePath.prototype.getDefaultShape = function () {\n return new StraightLineShape();\n };\n\n ECLinePath.prototype.buildPath = function (ctx, shape) {\n if (isStraightLine(shape)) {\n straightLineProto.buildPath.call(this, ctx, shape);\n } else {\n bezierCurveProto.buildPath.call(this, ctx, shape);\n }\n };\n\n ECLinePath.prototype.pointAt = function (t) {\n if (isStraightLine(this.shape)) {\n return straightLineProto.pointAt.call(this, t);\n } else {\n return bezierCurveProto.pointAt.call(this, t);\n }\n };\n\n ECLinePath.prototype.tangentAt = function (t) {\n var shape = this.shape;\n var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t);\n return vec2.normalize(p, p);\n };\n\n return ECLinePath;\n}(graphic.Path);\n\nexport default ECLinePath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { isArray, each } from 'zrender/lib/core/util.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport * as symbolUtil from '../../util/symbol.js';\nimport ECLinePath from './LinePath.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis, enterEmphasis, leaveEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { getLabelStatesModels, setLabelStyle } from '../../label/labelStyle.js';\nimport { round } from '../../util/number.js';\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n var symbolOffset = lineData.getItemVisual(idx, name + 'Offset');\n var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect');\n var symbolSizeArr = symbolUtil.normalizeSymbolSize(symbolSize);\n var symbolOffsetArr = symbolUtil.normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect);\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new ECLinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nvar Line =\n/** @class */\nfunction (_super) {\n __extends(Line, _super);\n\n function Line(lineData, idx, seriesScope) {\n var _this = _super.call(this) || this;\n\n _this._createLine(lineData, idx, seriesScope);\n\n return _this;\n }\n\n Line.prototype._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n }; // TODO More strict on the List type in parameters?\n\n\n Line.prototype.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n };\n\n ;\n\n Line.prototype.getLinePath = function () {\n return this.childAt(0);\n };\n\n Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\n var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\n var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\n var labelStatesModels = seriesScope && seriesScope.labelStatesModels;\n var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;\n var focus = seriesScope && seriesScope.focus;\n var blurScope = seriesScope && seriesScope.blurScope; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle();\n blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\n selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\n emphasisDisabled = emphasisModel.get('disabled');\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n labelStatesModels = getLabelStatesModels(itemModel);\n }\n\n var lineStyle = lineData.getItemVisual(idx, 'style');\n var visualColor = lineStyle.stroke;\n line.useStyle(lineStyle);\n line.style.fill = null;\n line.style.strokeNoScale = true;\n line.ensureState('emphasis').style = emphasisLineStyle;\n line.ensureState('blur').style = blurLineStyle;\n line.ensureState('select').style = selectLineStyle; // Update symbol\n\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n // Share opacity and color with line.\n symbol.setColor(visualColor);\n symbol.style.opacity = lineStyle.opacity;\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n var lineState = line.getState(stateName);\n\n if (lineState) {\n var lineStateStyle = lineState.style || {};\n var state = symbol.ensureState(stateName);\n var stateStyle = state.style || (state.style = {});\n\n if (lineStateStyle.stroke != null) {\n stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\n }\n\n if (lineStateStyle.opacity != null) {\n stateStyle.opacity = lineStateStyle.opacity;\n }\n }\n }\n\n symbol.markRedraw();\n }\n }, this);\n var rawVal = seriesModel.getRawValue(idx);\n setLabelStyle(this, labelStatesModels, {\n labelDataIndex: idx,\n labelFetcher: {\n getFormattedLabel: function (dataIndex, stateName) {\n return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\n }\n },\n inheritColor: visualColor || '#000',\n defaultOpacity: lineStyle.opacity,\n defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + ''\n });\n var label = this.getTextContent(); // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (label) {\n var labelNormalModel = labelStatesModels.normal;\n label.__align = label.style.align;\n label.__verticalAlign = label.style.verticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelNormalModel.get('position') || 'middle';\n var distance = labelNormalModel.get('distance');\n\n if (!isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n this.setTextConfig({\n position: null,\n local: true,\n inside: false // Can't be inside for stroke element.\n\n });\n toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n };\n\n Line.prototype.highlight = function () {\n enterEmphasis(this);\n };\n\n Line.prototype.downplay = function () {\n leaveEmphasis(this);\n };\n\n Line.prototype.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n };\n\n Line.prototype.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n };\n\n Line.prototype.beforeUpdate = function () {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.getTextContent(); // Quick reject\n\n if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scaleX) {\n invScale /= parentNode.scaleX;\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n function setSymbolRotation(symbol, percent) {\n // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n var specifiedRotation = symbol.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(percent);\n symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbol.attr('rotation', specifiedRotation);\n }\n }\n\n if (symbolFrom) {\n symbolFrom.setPosition(fromPos);\n setSymbolRotation(symbolFrom, 0);\n symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\n symbolFrom.markRedraw();\n }\n\n if (symbolTo) {\n symbolTo.setPosition(toPos);\n setSymbolRotation(symbolTo, 1);\n symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\n symbolTo.markRedraw();\n }\n\n if (label && !label.ignore) {\n label.x = label.y = 0;\n label.originX = label.originY = 0;\n var textAlign = void 0;\n var textVerticalAlign = void 0;\n var distance = label.__labelDistance;\n var distanceX = distance[0] * invScale;\n var distanceY = distance[1] * invScale;\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n var dir = tangent[0] < 0 ? -1 : 1;\n\n if (label.__position !== 'start' && label.__position !== 'end') {\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.rotation = rotation;\n }\n\n var dy = void 0;\n\n switch (label.__position) {\n case 'insideStartTop':\n case 'insideMiddleTop':\n case 'insideEndTop':\n case 'middle':\n dy = -distanceY;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideStartBottom':\n case 'insideMiddleBottom':\n case 'insideEndBottom':\n dy = distanceY;\n textVerticalAlign = 'top';\n break;\n\n default:\n dy = 0;\n textVerticalAlign = 'middle';\n }\n\n switch (label.__position) {\n case 'end':\n label.x = d[0] * distanceX + toPos[0];\n label.y = d[1] * distanceY + toPos[1];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n break;\n\n case 'start':\n label.x = -d[0] * distanceX + fromPos[0];\n label.y = -d[1] * distanceY + fromPos[1];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n break;\n\n case 'insideStartTop':\n case 'insideStart':\n case 'insideStartBottom':\n label.x = distanceX * dir + fromPos[0];\n label.y = fromPos[1] + dy;\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n label.originX = -distanceX * dir;\n label.originY = -dy;\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n label.x = cp[0];\n label.y = cp[1] + dy;\n textAlign = 'center';\n label.originY = -dy;\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n label.x = -distanceX * dir + toPos[0];\n label.y = toPos[1] + dy;\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n label.originX = distanceX * dir;\n label.originY = -dy;\n break;\n }\n\n label.scaleX = label.scaleY = invScale;\n label.setStyle({\n // Use the user specified text align and baseline first\n verticalAlign: label.__verticalAlign || textVerticalAlign,\n align: label.__align || textAlign\n });\n }\n };\n\n return Line;\n}(graphic.Group);\n\nexport default Line;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic.js';\nimport LineGroup from './Line.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\n\nvar LineDraw =\n/** @class */\nfunction () {\n function LineDraw(LineCtor) {\n this.group = new graphic.Group();\n this._LineCtor = LineCtor || LineGroup;\n }\n\n LineDraw.prototype.updateData = function (lineData) {\n var _this = this; // Remove progressive els.\n\n\n this._progressiveEls = null;\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n _this._doAdd(lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n };\n\n ;\n\n LineDraw.prototype.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n };\n\n ;\n\n LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n };\n\n ;\n\n LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\n this._progressiveEls = [];\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._LineCtor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n\n this._progressiveEls.push(el);\n }\n }\n };\n\n ;\n\n LineDraw.prototype.remove = function () {\n this.group.removeAll();\n };\n\n ;\n\n LineDraw.prototype.eachRendered = function (cb) {\n graphic.traverseElements(this._progressiveEls || this.group, cb);\n };\n\n LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new this._LineCtor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n this.group.add(el);\n };\n\n LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n this.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n this.group.add(itemEl);\n };\n\n return LineDraw;\n}();\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n var emphasisModel = hostModel.getModel('emphasis');\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n emphasisLineStyle: emphasisModel.getModel(['lineStyle']).getLineStyle(),\n blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\n selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\n emphasisDisabled: emphasisModel.get('disabled'),\n blurScope: emphasisModel.get('blurScope'),\n focus: emphasisModel.get('focus'),\n labelStatesModels: getLabelStatesModels(hostModel)\n };\n}\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nexport default LineDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport * as echarts from '../../core/echarts.js';\nimport { noop } from 'zrender/lib/core/util.js';\nvar ATTR = '\\0_ec_interaction_mutex';\nexport function take(zr, resourceKey, userKey) {\n var store = getStore(zr);\n store[resourceKey] = userKey;\n}\nexport function release(zr, resourceKey, userKey) {\n var store = getStore(zr);\n var uKey = store[resourceKey];\n\n if (uKey === userKey) {\n store[resourceKey] = null;\n }\n}\nexport function isTaken(zr, resourceKey) {\n return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n * type: 'takeGlobalCursor',\n * key: 'dataZoomSelect', or 'brush', or ...,\n * If no userKey, release global cursor.\n * }\n */\n// TODO: SELF REGISTERED.\n\n\necharts.registerAction({\n type: 'takeGlobalCursor',\n event: 'globalCursorTaken',\n update: 'update'\n}, noop);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as interactionMutex from './interactionMutex.js';\nimport { isString, bind, defaults, clone } from 'zrender/lib/core/util.js';\n;\n\nvar RoamController =\n/** @class */\nfunction (_super) {\n __extends(RoamController, _super);\n\n function RoamController(zr) {\n var _this = _super.call(this) || this;\n\n _this._zr = zr; // Avoid two roamController bind the same handler\n\n var mousedownHandler = bind(_this._mousedownHandler, _this);\n var mousemoveHandler = bind(_this._mousemoveHandler, _this);\n var mouseupHandler = bind(_this._mouseupHandler, _this);\n var mousewheelHandler = bind(_this._mousewheelHandler, _this);\n var pinchHandler = bind(_this._pinchHandler, _this);\n /**\n * Notice: only enable needed types. For example, if 'zoom'\n * is not needed, 'zoom' should not be enabled, otherwise\n * default mousewheel behaviour (scroll page) will be disabled.\n */\n\n _this.enable = function (controlType, opt) {\n // Disable previous first\n this.disable();\n this._opt = defaults(clone(opt) || {}, {\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n // By default, wheel do not trigger move.\n moveOnMouseWheel: false,\n preventDefaultMouseMove: true\n });\n\n if (controlType == null) {\n controlType = true;\n }\n\n if (controlType === true || controlType === 'move' || controlType === 'pan') {\n zr.on('mousedown', mousedownHandler);\n zr.on('mousemove', mousemoveHandler);\n zr.on('mouseup', mouseupHandler);\n }\n\n if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n zr.on('mousewheel', mousewheelHandler);\n zr.on('pinch', pinchHandler);\n }\n };\n\n _this.disable = function () {\n zr.off('mousedown', mousedownHandler);\n zr.off('mousemove', mousemoveHandler);\n zr.off('mouseup', mouseupHandler);\n zr.off('mousewheel', mousewheelHandler);\n zr.off('pinch', pinchHandler);\n };\n\n return _this;\n }\n\n RoamController.prototype.isDragging = function () {\n return this._dragging;\n };\n\n RoamController.prototype.isPinching = function () {\n return this._pinching;\n };\n\n RoamController.prototype.setPointerChecker = function (pointerChecker) {\n this.pointerChecker = pointerChecker;\n };\n\n RoamController.prototype.dispose = function () {\n this.disable();\n };\n\n RoamController.prototype._mousedownHandler = function (e) {\n if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n return;\n }\n\n var el = e.target;\n\n while (el) {\n if (el.draggable) {\n return;\n } // check if host is draggable\n\n\n el = el.__hostTarget || el.parent;\n }\n\n var x = e.offsetX;\n var y = e.offsetY; // Only check on mosedown, but not mousemove.\n // Mouse can be out of target when mouse moving.\n\n if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n this._x = x;\n this._y = y;\n this._dragging = true;\n }\n };\n\n RoamController.prototype._mousemoveHandler = function (e) {\n if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY;\n var oldX = this._x;\n var oldY = this._y;\n var dx = x - oldX;\n var dy = y - oldY;\n this._x = x;\n this._y = y;\n this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n trigger(this, 'pan', 'moveOnMouseMove', e, {\n dx: dx,\n dy: dy,\n oldX: oldX,\n oldY: oldY,\n newX: x,\n newY: y,\n isAvailableBehavior: null\n });\n };\n\n RoamController.prototype._mouseupHandler = function (e) {\n if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n this._dragging = false;\n }\n };\n\n RoamController.prototype._mousewheelHandler = function (e) {\n var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n var wheelDelta = e.wheelDelta;\n var absWheelDeltaDelta = Math.abs(wheelDelta);\n var originX = e.offsetX;\n var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n return;\n } // If both `shouldZoom` and `shouldMove` is true, trigger\n // their event both, and the final behavior is determined\n // by event listener themselves.\n\n\n if (shouldZoom) {\n // Convenience:\n // Mac and VM Windows on Mac: scroll up: zoom out.\n // Windows: scroll up: zoom in.\n // FIXME: Should do more test in different environment.\n // wheelDelta is too complicated in difference nvironment\n // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n // although it has been normallized by zrender.\n // wheelDelta of mouse wheel is bigger than touch pad.\n var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n var scale = wheelDelta > 0 ? factor : 1 / factor;\n checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n scale: scale,\n originX: originX,\n originY: originY,\n isAvailableBehavior: null\n });\n }\n\n if (shouldMove) {\n // FIXME: Should do more test in different environment.\n var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n scrollDelta: scrollDelta,\n originX: originX,\n originY: originY,\n isAvailableBehavior: null\n });\n }\n };\n\n RoamController.prototype._pinchHandler = function (e) {\n if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n checkPointerAndTrigger(this, 'zoom', null, e, {\n scale: scale,\n originX: e.pinchX,\n originY: e.pinchY,\n isAvailableBehavior: null\n });\n };\n\n return RoamController;\n}(Eventful);\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n // When mouse is out of roamController rect,\n // default befavoius should not be be disabled, otherwise\n // page sliding is disabled, contrary to expectation.\n eventTool.stop(e.event);\n trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n // Also provide behavior checker for event listener, for some case that\n // multiple components share one listener.\n contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e); // TODO should not have type issue.\n\n controller.trigger(eventName, contollerEvent);\n} // settings: {\n// zoomOnMouseWheel\n// moveOnMouseMove\n// moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n var setting = settings[behaviorToCheck];\n return !behaviorToCheck || setting && (!isString(setting) || e.event[setting + 'Key']);\n}\n\nexport default RoamController;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For geo and graph.\n */\nexport function updateViewOnPan(controllerHost, dx, dy) {\n var target = controllerHost.target;\n target.x += dx;\n target.y += dy;\n target.dirty();\n}\n/**\n * For geo and graph.\n */\n\nexport function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n var target = controllerHost.target;\n var zoomLimit = controllerHost.zoomLimit;\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n newZoom *= zoomDelta;\n\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n }\n\n var zoomScale = newZoom / controllerHost.zoom;\n controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n target.x -= (zoomX - target.x) * (zoomScale - 1);\n target.y -= (zoomY - target.y) * (zoomScale - 1);\n target.scaleX *= zoomScale;\n target.scaleY *= zoomScale;\n target.dirty();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar IRRELEVANT_EXCLUDES = {\n 'axisPointer': 1,\n 'tooltip': 1,\n 'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nexport function onIrrelevantElement(e, api, targetCoordSysModel) {\n var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n var coordSys = model && model.coordinateSystem;\n return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as curveTool from 'zrender/lib/core/curve.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport { getSymbolSize } from './graphHelper.js';\nvar v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n var p0 = curvePoints[0];\n var p1 = curvePoints[1];\n var p2 = curvePoints[2];\n var d = Infinity;\n var t;\n var radiusSquare = radius * radius;\n var interval = 0.1;\n\n for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n if (diff < d) {\n d = diff;\n t = _t;\n }\n } // Assume the segment is monotone,Find root through Bisection method\n // At most 32 iteration\n\n\n for (var i = 0; i < 32; i++) {\n // let prev = t - interval;\n var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n var diff = v2DistSquare(v2, center) - radiusSquare;\n\n if (mathAbs(diff) < 1e-2) {\n break;\n } // let prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n interval /= 2;\n\n if (diff < 0) {\n if (nextDiff >= 0) {\n t = t + interval;\n } else {\n t = t - interval;\n }\n } else {\n if (nextDiff >= 0) {\n t = t - interval;\n } else {\n t = t + interval;\n }\n }\n }\n\n return t;\n} // Adjust edge to avoid\n\n\nexport default function adjustEdge(graph, scale) {\n var tmp0 = [];\n var quadraticSubdivide = curveTool.quadraticSubdivide;\n var pts = [[], [], []];\n var pts2 = [[], []];\n var v = [];\n scale /= 2;\n graph.eachEdge(function (edge, idx) {\n var linePoints = edge.getLayout();\n var fromSymbol = edge.getVisual('fromSymbol');\n var toSymbol = edge.getVisual('toSymbol');\n\n if (!linePoints.__original) {\n linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n if (linePoints[2]) {\n linePoints.__original.push(vec2.clone(linePoints[2]));\n }\n }\n\n var originalPoints = linePoints.__original; // Quadratic curve\n\n if (linePoints[2] != null) {\n vec2.copy(pts[0], originalPoints[0]);\n vec2.copy(pts[1], originalPoints[2]);\n vec2.copy(pts[2], originalPoints[1]);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[0][0] = tmp0[3];\n pts[1][0] = tmp0[4];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[0][1] = tmp0[3];\n pts[1][1] = tmp0[4];\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[1][0] = tmp0[1];\n pts[2][0] = tmp0[2];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[1][1] = tmp0[1];\n pts[2][1] = tmp0[2];\n } // Copy back to layout\n\n\n vec2.copy(linePoints[0], pts[0]);\n vec2.copy(linePoints[1], pts[2]);\n vec2.copy(linePoints[2], pts[1]);\n } // Line\n else {\n vec2.copy(pts2[0], originalPoints[0]);\n vec2.copy(pts2[1], originalPoints[1]);\n vec2.sub(v, pts2[1], pts2[0]);\n vec2.normalize(v, v);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n }\n\n vec2.copy(linePoints[0], pts2[0]);\n vec2.copy(linePoints[1], pts2[1]);\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport LineDraw from '../helper/LineDraw.js';\nimport RoamController from '../../component/helper/RoamController.js';\nimport * as roamHelper from '../../component/helper/roamHelper.js';\nimport { onIrrelevantElement } from '../../component/helper/cursorHelper.js';\nimport * as graphic from '../../util/graphic.js';\nimport adjustEdge from './adjustEdge.js';\nimport { getNodeGlobalScale } from './graphHelper.js';\nimport ChartView from '../../view/Chart.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { simpleLayoutEdge } from './simpleLayoutHelper.js';\nimport { circularLayout, rotateNodeLabel } from './circularLayoutHelper.js';\n\nfunction isViewCoordSys(coordSys) {\n return coordSys.type === 'view';\n}\n\nvar GraphView =\n/** @class */\nfunction (_super) {\n __extends(GraphView, _super);\n\n function GraphView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = GraphView.type;\n return _this;\n }\n\n GraphView.prototype.init = function (ecModel, api) {\n var symbolDraw = new SymbolDraw();\n var lineDraw = new LineDraw();\n var group = this.group;\n this._controller = new RoamController(api.getZr());\n this._controllerHost = {\n target: group\n };\n group.add(symbolDraw.group);\n group.add(lineDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineDraw = lineDraw;\n this._firstRender = true;\n };\n\n GraphView.prototype.render = function (seriesModel, ecModel, api) {\n var _this = this;\n\n var coordSys = seriesModel.coordinateSystem;\n this._model = seriesModel;\n var symbolDraw = this._symbolDraw;\n var lineDraw = this._lineDraw;\n var group = this.group;\n\n if (isViewCoordSys(coordSys)) {\n var groupNewProp = {\n x: coordSys.x,\n y: coordSys.y,\n scaleX: coordSys.scaleX,\n scaleY: coordSys.scaleY\n };\n\n if (this._firstRender) {\n group.attr(groupNewProp);\n } else {\n graphic.updateProps(group, groupNewProp, seriesModel);\n }\n } // Fix edge contact point with node\n\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n var data = seriesModel.getData();\n symbolDraw.updateData(data);\n var edgeData = seriesModel.getEdgeData(); // TODO: TYPE\n\n lineDraw.updateData(edgeData);\n\n this._updateNodeAndLinkScale();\n\n this._updateController(seriesModel, ecModel, api);\n\n clearTimeout(this._layoutTimeout);\n var forceLayout = seriesModel.forceLayout;\n var layoutAnimation = seriesModel.get(['force', 'layoutAnimation']);\n\n if (forceLayout) {\n this._startForceLayoutIteration(forceLayout, layoutAnimation);\n }\n\n var layout = seriesModel.get('layout');\n data.graph.eachNode(function (node) {\n var idx = node.dataIndex;\n var el = node.getGraphicEl();\n var itemModel = node.getModel();\n\n if (!el) {\n return;\n } // Update draggable\n\n\n el.off('drag').off('dragend');\n var draggable = itemModel.get('draggable');\n\n if (draggable) {\n el.on('drag', function (e) {\n switch (layout) {\n case 'force':\n forceLayout.warmUp();\n !_this._layouting && _this._startForceLayoutIteration(forceLayout, layoutAnimation);\n forceLayout.setFixed(idx); // Write position back to layout\n\n data.setItemLayout(idx, [el.x, el.y]);\n break;\n\n case 'circular':\n data.setItemLayout(idx, [el.x, el.y]); // mark node fixed\n\n node.setLayout({\n fixed: true\n }, true); // recalculate circular layout\n\n circularLayout(seriesModel, 'symbolSize', node, [e.offsetX, e.offsetY]);\n\n _this.updateLayout(seriesModel);\n\n break;\n\n case 'none':\n default:\n data.setItemLayout(idx, [el.x, el.y]); // update edge\n\n simpleLayoutEdge(seriesModel.getGraph(), seriesModel);\n\n _this.updateLayout(seriesModel);\n\n break;\n }\n }).on('dragend', function () {\n if (forceLayout) {\n forceLayout.setUnfixed(idx);\n }\n });\n }\n\n el.setDraggable(draggable && !!forceLayout, !!itemModel.get('cursor'));\n var focus = itemModel.get(['emphasis', 'focus']);\n\n if (focus === 'adjacency') {\n getECData(el).focus = node.getAdjacentDataIndices();\n }\n });\n data.graph.eachEdge(function (edge) {\n var el = edge.getGraphicEl();\n var focus = edge.getModel().get(['emphasis', 'focus']);\n\n if (!el) {\n return;\n }\n\n if (focus === 'adjacency') {\n getECData(el).focus = {\n edge: [edge.dataIndex],\n node: [edge.node1.dataIndex, edge.node2.dataIndex]\n };\n }\n });\n var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get(['circular', 'rotateLabel']);\n var cx = data.getLayout('cx');\n var cy = data.getLayout('cy');\n data.graph.eachNode(function (node) {\n rotateNodeLabel(node, circularRotateLabel, cx, cy);\n });\n this._firstRender = false;\n };\n\n GraphView.prototype.dispose = function () {\n this._controller && this._controller.dispose();\n this._controllerHost = null;\n };\n\n GraphView.prototype._startForceLayoutIteration = function (forceLayout, layoutAnimation) {\n var self = this;\n\n (function step() {\n forceLayout.step(function (stopped) {\n self.updateLayout(self._model);\n (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n });\n })();\n };\n\n GraphView.prototype._updateController = function (seriesModel, ecModel, api) {\n var _this = this;\n\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n var group = this.group;\n controller.setPointerChecker(function (e, x, y) {\n var rect = group.getBoundingRect();\n rect.applyTransform(group.transform);\n return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n });\n\n if (!isViewCoordSys(seriesModel.coordinateSystem)) {\n controller.disable();\n return;\n }\n\n controller.enable(seriesModel.get('roam'));\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n controller.off('pan').off('zoom').on('pan', function (e) {\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n dx: e.dx,\n dy: e.dy\n });\n }).on('zoom', function (e) {\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n });\n\n _this._updateNodeAndLinkScale();\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n _this._lineDraw.updateLayout(); // Only update label layout on zoom\n\n\n api.updateLabelLayout();\n });\n };\n\n GraphView.prototype._updateNodeAndLinkScale = function () {\n var seriesModel = this._model;\n var data = seriesModel.getData();\n var nodeScale = getNodeGlobalScale(seriesModel);\n data.eachItemGraphicEl(function (el, idx) {\n el && el.setSymbolScale(nodeScale);\n });\n };\n\n GraphView.prototype.updateLayout = function (seriesModel) {\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n this._symbolDraw.updateLayout();\n\n this._lineDraw.updateLayout();\n };\n\n GraphView.prototype.remove = function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove();\n this._lineDraw && this._lineDraw.remove();\n };\n\n GraphView.type = 'graph';\n return GraphView;\n}(ChartView);\n\nexport default GraphView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js'; // id may be function name of Object, add a prefix to avoid this problem.\n\nfunction generateNodeKey(id) {\n return '_EC_' + id;\n}\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(directed) {\n this.type = 'graph';\n this.nodes = [];\n this.edges = [];\n this._nodesMap = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._edgesMap = {};\n this._directed = directed || false;\n }\n /**\n * If is directed graph\n */\n\n\n Graph.prototype.isDirected = function () {\n return this._directed;\n };\n\n ;\n /**\n * Add a new node\n */\n\n Graph.prototype.addNode = function (id, dataIndex) {\n id = id == null ? '' + dataIndex : '' + id;\n var nodesMap = this._nodesMap;\n\n if (nodesMap[generateNodeKey(id)]) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Graph nodes have duplicate name or id');\n }\n\n return;\n }\n\n var node = new GraphNode(id, dataIndex);\n node.hostGraph = this;\n this.nodes.push(node);\n nodesMap[generateNodeKey(id)] = node;\n return node;\n };\n\n ;\n /**\n * Get node by data index\n */\n\n Graph.prototype.getNodeByIndex = function (dataIndex) {\n var rawIdx = this.data.getRawIndex(dataIndex);\n return this.nodes[rawIdx];\n };\n\n ;\n /**\n * Get node by id\n */\n\n Graph.prototype.getNodeById = function (id) {\n return this._nodesMap[generateNodeKey(id)];\n };\n\n ;\n /**\n * Add a new edge\n */\n\n Graph.prototype.addEdge = function (n1, n2, dataIndex) {\n var nodesMap = this._nodesMap;\n var edgesMap = this._edgesMap; // PNEDING\n\n if (zrUtil.isNumber(n1)) {\n n1 = this.nodes[n1];\n }\n\n if (zrUtil.isNumber(n2)) {\n n2 = this.nodes[n2];\n }\n\n if (!(n1 instanceof GraphNode)) {\n n1 = nodesMap[generateNodeKey(n1)];\n }\n\n if (!(n2 instanceof GraphNode)) {\n n2 = nodesMap[generateNodeKey(n2)];\n }\n\n if (!n1 || !n2) {\n return;\n }\n\n var key = n1.id + '-' + n2.id;\n var edge = new GraphEdge(n1, n2, dataIndex);\n edge.hostGraph = this;\n\n if (this._directed) {\n n1.outEdges.push(edge);\n n2.inEdges.push(edge);\n }\n\n n1.edges.push(edge);\n\n if (n1 !== n2) {\n n2.edges.push(edge);\n }\n\n this.edges.push(edge);\n edgesMap[key] = edge;\n return edge;\n };\n\n ;\n /**\n * Get edge by data index\n */\n\n Graph.prototype.getEdgeByIndex = function (dataIndex) {\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\n return this.edges[rawIdx];\n };\n\n ;\n /**\n * Get edge by two linked nodes\n */\n\n Graph.prototype.getEdge = function (n1, n2) {\n if (n1 instanceof GraphNode) {\n n1 = n1.id;\n }\n\n if (n2 instanceof GraphNode) {\n n2 = n2.id;\n }\n\n var edgesMap = this._edgesMap;\n\n if (this._directed) {\n return edgesMap[n1 + '-' + n2];\n } else {\n return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n }\n };\n\n ;\n /**\n * Iterate all nodes\n */\n\n Graph.prototype.eachNode = function (cb, context) {\n var nodes = this.nodes;\n var len = nodes.length;\n\n for (var i = 0; i < len; i++) {\n if (nodes[i].dataIndex >= 0) {\n cb.call(context, nodes[i], i);\n }\n }\n };\n\n ;\n /**\n * Iterate all edges\n */\n\n Graph.prototype.eachEdge = function (cb, context) {\n var edges = this.edges;\n var len = edges.length;\n\n for (var i = 0; i < len; i++) {\n if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n cb.call(context, edges[i], i);\n }\n }\n };\n\n ;\n /**\n * Breadth first traverse\n * Return true to stop traversing\n */\n\n Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) {\n if (!(startNode instanceof GraphNode)) {\n startNode = this._nodesMap[generateNodeKey(startNode)];\n }\n\n if (!startNode) {\n return;\n }\n\n var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n for (var i = 0; i < this.nodes.length; i++) {\n this.nodes[i].__visited = false;\n }\n\n if (cb.call(context, startNode, null)) {\n return;\n }\n\n var queue = [startNode];\n\n while (queue.length) {\n var currentNode = queue.shift();\n var edges = currentNode[edgeType];\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n if (!otherNode.__visited) {\n if (cb.call(context, otherNode, currentNode)) {\n // Stop traversing\n return;\n }\n\n queue.push(otherNode);\n otherNode.__visited = true;\n }\n }\n }\n };\n\n ; // TODO\n // depthFirstTraverse(\n // cb, startNode, direction, context\n // ) {\n // };\n // Filter update\n\n Graph.prototype.update = function () {\n var data = this.data;\n var edgeData = this.edgeData;\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n\n edgeData.filterSelf(function (idx) {\n var edge = edges[edgeData.getRawIndex(idx)];\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n }); // Update edge\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edges[i].dataIndex = -1;\n }\n\n for (var i = 0, len = edgeData.count(); i < len; i++) {\n edges[edgeData.getRawIndex(i)].dataIndex = i;\n }\n };\n\n ;\n /**\n * @return {module:echarts/data/Graph}\n */\n\n Graph.prototype.clone = function () {\n var graph = new Graph(this._directed);\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\n }\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n }\n\n return graph;\n };\n\n ;\n return Graph;\n}();\n\nvar GraphNode =\n/** @class */\nfunction () {\n function GraphNode(id, dataIndex) {\n this.inEdges = [];\n this.outEdges = [];\n this.edges = [];\n this.dataIndex = -1;\n this.id = id == null ? '' : id;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n }\n /**\n * @return {number}\n */\n\n\n GraphNode.prototype.degree = function () {\n return this.edges.length;\n };\n /**\n * @return {number}\n */\n\n\n GraphNode.prototype.inDegree = function () {\n return this.inEdges.length;\n };\n /**\n * @return {number}\n */\n\n\n GraphNode.prototype.outDegree = function () {\n return this.outEdges.length;\n };\n\n GraphNode.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n };\n\n GraphNode.prototype.getAdjacentDataIndices = function () {\n var dataIndices = {\n edge: [],\n node: []\n };\n\n for (var i = 0; i < this.edges.length; i++) {\n var adjacentEdge = this.edges[i];\n\n if (adjacentEdge.dataIndex < 0) {\n continue;\n }\n\n dataIndices.edge.push(adjacentEdge.dataIndex);\n dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);\n }\n\n return dataIndices;\n };\n\n return GraphNode;\n}();\n\nvar GraphEdge =\n/** @class */\nfunction () {\n function GraphEdge(n1, n2, dataIndex) {\n this.dataIndex = -1;\n this.node1 = n1;\n this.node2 = n2;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n } // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n GraphEdge.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n };\n\n GraphEdge.prototype.getAdjacentDataIndices = function () {\n return {\n edge: [this.dataIndex],\n node: [this.node1.dataIndex, this.node2.dataIndex]\n };\n };\n\n return GraphEdge;\n}();\n\nfunction createGraphDataProxyMixin(hostName, dataName) {\n return {\n /**\n * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n */\n getValue: function (dimension) {\n var data = this[hostName][dataName];\n return data.getStore().get(data.getDimensionIndex(dimension || 'value'), this.dataIndex);\n },\n // TODO: TYPE stricter type.\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n },\n getVisual: function (key) {\n return this[hostName][dataName].getItemVisual(this.dataIndex, key);\n },\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n },\n getLayout: function () {\n return this[hostName][dataName].getItemLayout(this.dataIndex);\n },\n getGraphicEl: function () {\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n },\n getRawIndex: function () {\n return this[hostName][dataName].getRawIndex(this.dataIndex);\n }\n };\n}\n\n;\n;\n;\nzrUtil.mixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nexport default Graph;\nexport { GraphNode, GraphEdge };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Link lists and struct (graph or tree)\n */\nimport { curry, each, assert, extend, map, keys } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\n\nfunction linkSeriesData(opt) {\n var mainData = opt.mainData;\n var datas = opt.datas;\n\n if (!datas) {\n datas = {\n main: mainData\n };\n opt.datasAttr = {\n main: 'data'\n };\n }\n\n opt.datas = opt.mainData = null;\n linkAll(mainData, datas, opt); // Porxy data original methods.\n\n each(datas, function (data) {\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, curry(transferInjection, opt));\n });\n }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n // another changable methods, which may bring about dead lock.\n\n each(mainData.CHANGABLE_METHODS, function (methodName) {\n mainData.wrapMethod(methodName, curry(changeInjection, opt));\n }); // Make sure datas contains mainData.\n\n assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n if (isMainData(this)) {\n // Transfer datas to new main data.\n var datas = extend({}, inner(this).datas);\n datas[this.dataType] = res;\n linkAll(res, datas, opt);\n } else {\n // Modify the reference in main data to point newData.\n linkSingle(res, this.dataType, inner(this).mainData, opt);\n }\n\n return res;\n}\n\nfunction changeInjection(opt, res) {\n opt.struct && opt.struct.update();\n return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n // cloneShallow, which brings about some fragilities, may be inappropriate\n // to be exposed as an API. So for implementation simplicity we can make\n // the restriction that cloneShallow of not-mainData should not be invoked\n // outside, but only be invoked here.\n each(inner(res).datas, function (data, dataType) {\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n });\n return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param [dataType] If not specified, return mainData.\n */\n\n\nfunction getLinkedData(dataType) {\n var mainData = inner(this).mainData;\n return dataType == null || mainData == null ? mainData : inner(mainData).datas[dataType];\n}\n/**\n * Get list of all linked data\n */\n\n\nfunction getLinkedDataAll() {\n var mainData = inner(this).mainData;\n return mainData == null ? [{\n data: mainData\n }] : map(keys(inner(mainData).datas), function (type) {\n return {\n type: type,\n data: inner(mainData).datas[type]\n };\n });\n}\n\nfunction isMainData(data) {\n return inner(data).mainData === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n inner(mainData).datas = {};\n each(datas, function (data, dataType) {\n linkSingle(data, dataType, mainData, opt);\n });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n inner(mainData).datas[dataType] = data;\n inner(data).mainData = mainData;\n data.dataType = dataType;\n\n if (opt.struct) {\n data[opt.structAttr] = opt.struct;\n opt.struct[opt.datasAttr[dataType]] = data;\n } // Supplement method.\n\n\n data.getLinkedData = getLinkedData;\n data.getLinkedDataAll = getLinkedDataAll;\n}\n\nexport default linkSeriesData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport Graph from '../../data/Graph.js';\nimport linkSeriesData from '../../data/helper/linkSeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport createSeriesData from './createSeriesData.js';\nimport { convertOptionIdName } from '../../util/model.js';\nexport default function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(convertOptionIdName(link.id, null), source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createSeriesData(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensions = prepareSeriesDataSchema(nodes, {\n coordDimensions: coordDimensions,\n encodeDefine: seriesModel.getEncode()\n }).dimensions;\n nodeData = new SeriesData(dimensions, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new SeriesData(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkSeriesData({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport SeriesData from '../../data/SeriesData.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { defaultEmphasis } from '../../util/model.js';\nimport Model from '../../model/Model.js';\nimport createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nimport { defaultSeriesFormatTooltip } from '../../component/tooltip/seriesFormatTooltip.js';\nimport { initCurvenessList, createEdgeMapForCurveness } from '../helper/multipleGraphEdgeHelper.js';\n\nvar GraphSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(GraphSeriesModel, _super);\n\n function GraphSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = GraphSeriesModel.type;\n _this.hasSymbolVisual = true;\n return _this;\n }\n\n GraphSeriesModel.prototype.init = function (option) {\n _super.prototype.init.apply(this, arguments);\n\n var self = this;\n\n function getCategoriesData() {\n return self._categoriesData;\n } // Provide data for legend select\n\n\n this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n };\n\n GraphSeriesModel.prototype.mergeOption = function (option) {\n _super.prototype.mergeOption.apply(this, arguments);\n\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n };\n\n GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) {\n _super.prototype.mergeDefaultAndTheme.apply(this, arguments);\n\n defaultEmphasis(option, 'edgeLabel', ['show']);\n };\n\n GraphSeriesModel.prototype.getInitialData = function (option, ecModel) {\n var edges = option.edges || option.links || [];\n var nodes = option.data || option.nodes || [];\n var self = this;\n\n if (nodes && edges) {\n // auto curveness\n initCurvenessList(this);\n var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\n zrUtil.each(graph.edges, function (edge) {\n createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\n }, this);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n // Overwrite nodeData.getItemModel to\n nodeData.wrapMethod('getItemModel', function (model) {\n var categoriesModels = self._categoriesModels;\n var categoryIdx = model.getShallow('category');\n var categoryModel = categoriesModels[categoryIdx];\n\n if (categoryModel) {\n categoryModel.parentModel = model.parentModel;\n model.parentModel = categoryModel;\n }\n\n return model;\n }); // TODO Inherit resolveParentPath by default in Model#getModel?\n\n var oldGetModel = Model.prototype.getModel;\n\n function newGetModel(path, parentModel) {\n var model = oldGetModel.call(this, path, parentModel);\n model.resolveParentPath = resolveParentPath;\n return model;\n }\n\n edgeData.wrapMethod('getItemModel', function (model) {\n model.resolveParentPath = resolveParentPath;\n model.getModel = newGetModel;\n return model;\n });\n\n function resolveParentPath(pathArr) {\n if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) {\n var newPathArr = pathArr.slice();\n\n if (pathArr[0] === 'label') {\n newPathArr[0] = 'edgeLabel';\n } else if (pathArr[1] === 'label') {\n newPathArr[1] = 'edgeLabel';\n }\n\n return newPathArr;\n }\n\n return pathArr;\n }\n }\n };\n\n GraphSeriesModel.prototype.getGraph = function () {\n return this.getData().graph;\n };\n\n GraphSeriesModel.prototype.getEdgeData = function () {\n return this.getGraph().edgeData;\n };\n\n GraphSeriesModel.prototype.getCategoriesData = function () {\n return this._categoriesData;\n };\n\n GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n if (dataType === 'edge') {\n var nodeData = this.getData();\n var params = this.getDataParams(dataIndex, dataType);\n var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n var sourceName = nodeData.getName(edge.node1.dataIndex);\n var targetName = nodeData.getName(edge.node2.dataIndex);\n var nameArr = [];\n sourceName != null && nameArr.push(sourceName);\n targetName != null && nameArr.push(targetName);\n return createTooltipMarkup('nameValue', {\n name: nameArr.join(' > '),\n value: params.value,\n noValue: params.value == null\n });\n } // dataType === 'node' or empty\n\n\n var nodeMarkup = defaultSeriesFormatTooltip({\n series: this,\n dataIndex: dataIndex,\n multipleSeries: multipleSeries\n });\n return nodeMarkup;\n };\n\n GraphSeriesModel.prototype._updateCategoriesData = function () {\n var categories = zrUtil.map(this.option.categories || [], function (category) {\n // Data must has value\n return category.value != null ? category : zrUtil.extend({\n value: 0\n }, category);\n });\n var categoriesData = new SeriesData(['value'], this);\n categoriesData.initData(categories);\n this._categoriesData = categoriesData;\n this._categoriesModels = categoriesData.mapArray(function (idx) {\n return categoriesData.getItemModel(idx);\n });\n };\n\n GraphSeriesModel.prototype.setZoom = function (zoom) {\n this.option.zoom = zoom;\n };\n\n GraphSeriesModel.prototype.setCenter = function (center) {\n this.option.center = center;\n };\n\n GraphSeriesModel.prototype.isAnimationEnabled = function () {\n return _super.prototype.isAnimationEnabled.call(this) // Not enable animation when do force layout\n && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation']));\n };\n\n GraphSeriesModel.type = 'series.graph';\n GraphSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\n GraphSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // Default option for all coordinate systems\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // geoIndex: 0,\n legendHoverLink: true,\n layout: null,\n // Configuration of circular layout\n circular: {\n rotateLabel: false\n },\n // Configuration of force directed layout\n force: {\n initLayout: null,\n // Node repulsion. Can be an array to represent range.\n repulsion: [0, 50],\n gravity: 0.1,\n // Initial friction\n friction: 0.6,\n // Edge length. Can be an array to represent range.\n edgeLength: 30,\n layoutAnimation: true\n },\n left: 'center',\n top: 'center',\n // right: null,\n // bottom: null,\n // width: '80%',\n // height: '80%',\n symbol: 'circle',\n symbolSize: 10,\n edgeSymbol: ['none', 'none'],\n edgeSymbolSize: 10,\n edgeLabel: {\n position: 'middle',\n distance: 5\n },\n draggable: false,\n roam: false,\n // Default on center of graph\n center: null,\n zoom: 1,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.6,\n // cursor: null,\n // categories: [],\n // data: []\n // Or\n // nodes: []\n //\n // links: []\n // Or\n // edges: []\n label: {\n show: false,\n formatter: '{b}'\n },\n itemStyle: {},\n lineStyle: {\n color: '#aaa',\n width: 1,\n opacity: 0.5\n },\n emphasis: {\n scale: true,\n label: {\n show: true\n }\n },\n select: {\n itemStyle: {\n borderColor: '#212121'\n }\n }\n };\n return GraphSeriesModel;\n}(SeriesModel);\n\nexport default GraphSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getCenterCoord(view, point) {\n // Use projected coord as center because it's linear.\n return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point);\n}\n\nexport function updateCenterAndZoom(view, payload, zoomLimit, api) {\n var previousZoom = view.getZoom();\n var center = view.getCenter();\n var zoom = payload.zoom;\n var point = view.projectedToPoint ? view.projectedToPoint(center) : view.dataToPoint(center);\n\n if (payload.dx != null && payload.dy != null) {\n point[0] -= payload.dx;\n point[1] -= payload.dy;\n view.setCenter(getCenterCoord(view, point), api);\n }\n\n if (zoom != null) {\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n } // Zoom on given point(originX, originY)\n\n\n view.scaleX *= zoom;\n view.scaleY *= zoom;\n var fixX = (payload.originX - view.x) * (zoom - 1);\n var fixY = (payload.originY - view.y) * (zoom - 1);\n view.x -= fixX;\n view.y -= fixY;\n view.updateTransform(); // Get the new center\n\n view.setCenter(getCenterCoord(view, point), api);\n view.setZoom(zoom * previousZoom);\n }\n\n return {\n center: view.getCenter(),\n zoom: view.getZoom()\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport categoryFilter from './categoryFilter.js';\nimport categoryVisual from './categoryVisual.js';\nimport edgeVisual from './edgeVisual.js';\nimport simpleLayout from './simpleLayout.js';\nimport circularLayout from './circularLayout.js';\nimport forceLayout from './forceLayout.js';\nimport createView from './createView.js';\nimport View from '../../coord/View.js';\nimport GraphView from './GraphView.js';\nimport GraphSeriesModel from './GraphSeries.js';\nimport { updateCenterAndZoom } from '../../action/roamHelper.js';\nimport { noop } from 'zrender/lib/core/util.js';\nvar actionInfo = {\n type: 'graphRoam',\n event: 'graphRoam',\n update: 'none'\n};\nexport function install(registers) {\n registers.registerChartView(GraphView);\n registers.registerSeriesModel(GraphSeriesModel);\n registers.registerProcessor(categoryFilter);\n registers.registerVisual(categoryVisual);\n registers.registerVisual(edgeVisual);\n registers.registerLayout(simpleLayout);\n registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\n registers.registerLayout(forceLayout);\n registers.registerCoordinateSystem('graphView', {\n dimensions: View.dimensions,\n create: createView\n }); // Register legacy focus actions\n\n registers.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n }, noop);\n registers.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n }, noop); // Register roam action.\n\n registers.registerAction(actionInfo, function (payload, ecModel, api) {\n ecModel.eachComponent({\n mainType: 'series',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload, undefined, api);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n });\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f6dba93e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"rxanalysis\" }\nconst _hoisted_2 = { class: \"rxanalysis-sum\" }\nconst _hoisted_3 = { class: \"rxanalysis-recipeDetail\" }\n\nimport { onMounted, reactive, ref, Ref, watch } from \"vue\";\r\n\timport { ArrowRight } from \"@element-plus/icons-vue\";\r\n\timport emrDetail from \"@c/page/emrDetail/emrDetail.vue\";\r\n\timport { caseTableHeader } from \"@/util/contant\";\r\n\timport { ImgUrlFix } from \"@u/contant\";\r\n\timport breadnav from \"./breadnav.vue\";\r\n\timport caseeffect from \"./caseeffect.vue\";\r\n\timport casemodel from \"./casemodel.vue\";\r\n\timport cassTable from \"./casstable.vue\";\r\n\t//接口\r\n\timport { getSingleRx, getSingleRxView } from \"@r/api/xingling\";\r\n\t\r\n\t//模拟数据\r\n\timport { setTmplData } from \"@/assets/testdata/setTmplData\";\r\n\t\r\n\t//echarts\r\n\timport * as echarts from 'echarts/core';\r\nimport {\r\n TitleComponent,\r\n TitleComponentOption,\r\n TooltipComponent,\r\n TooltipComponentOption,\r\n LegendComponent,\r\n LegendComponentOption\r\n} from 'echarts/components';\r\nimport { GraphChart, GraphSeriesOption } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\n\r\ntype EChartsOption = echarts.ComposeOption<\r\n | TitleComponentOption\r\n | TooltipComponentOption\r\n | LegendComponentOption\r\n | GraphSeriesOption\r\n>;\r\n\t//echarts\r\n\t\r\n\tinterface graphRole {\r\n nodes: any[]\r\n links: {\r\n source?: string\r\n target?: string\r\n }[]\r\n }\r\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'rxanalysis',\n props: {\n fjItem: null,\n mrType: null\n },\n emits: [\"emitshowCase\"],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n\t\tfjItem: any\r\n\t\tmrType: any\r\n\t};\n\r\n\techarts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphChart,\r\n CanvasRenderer\r\n]);\r\n\r\nconst isViewForm: Ref = ref(true);\r\n\tvar viewsDom: any = ref(null);\r\n\t\r\n\t\r\n\t\r\n\t\r\n\tconst propfjItem = reactive(props.fjItem);\r\n\tconst mrType = ref(props.mrType);\r\n\r\n\tconst rxLoading = ref(false);\r\n\tconst bingliShow = ref(false); //是否显示病例\r\n\tconst caseeffectShow = ref(false); //是否显示疗效率\r\n\tconst caseeffectitem = ref({});\r\n\tconst mainDrugStr = ref(\"\");\r\n\tconst totalScore: any = ref(0); //求份数总和\r\n\tconst myAverage: any = ref(0);\r\n\tconst compArr: any = ref([]);\r\n\t\r\n\t//点击面包屑\r\n\tconst showCaseBack = () => {\r\n\t\temit(\"emitshowCase\");\r\n\t};\r\n\t//显示病案弹窗\r\n\tconst emitshowCaseNo = (row: any) => {\r\n\t\tbingliShow.value = true;\r\n\t\tcaseeffectitem.value = row.data;\r\n\t};\r\n\t\r\n\t//显示效率弹窗\r\n\tconst emitshowEffect = (row: any) => {\r\n\t\tcaseeffectShow.value = true;\r\n\t\tcaseeffectitem.value = row;\r\n\t};\r\n\tconst tableList = reactive([\r\n\t\t{ title: \"病案\" },\r\n\t\t{ title: \"疗效\" },\r\n\t\t{ title: \"中医诊断\" },\r\n\t\t{ title: \"中医辨证\" },\r\n\t\t{ title: \"诊断要素\" },\r\n\t\t{ title: \"辨证要点\" },\r\n\t\t//{title: '未匹配词'},\r\n\t\t{ title: \"伴随证\" },\r\n\t\t{ title: \"方药\" },\r\n\t\t{ title: \"组方\" },\r\n\t]);\r\n\t//查询处方分析-单处方\r\n\tconst getDiffMeth = () => {\r\n\t\trxLoading.value = true;\r\n\t\tgetSingleRx({\r\n\t\t\tdata: {\r\n\t\t\t\tstime: propfjItem.startval,\r\n \tetime: propfjItem.endval,\r\n\t\t\t\tfj_name: propfjItem.fjName ? propfjItem.fjName : \"\", //方名\r\n\t\t\t\tmrType: mrType.value,\r\n\t\t\t\t_times: new Date().getTime(),\r\n\t\t\t},\r\n\t\t})\r\n\t\t\t.then((data: any) => {\r\n\t\t\t\tvar drugStr = \"\";\r\n\t\t\t\tdata.drugs.forEach((t: any, idx: any) => {\r\n\t\t\t\t\tdrugStr += t.drugName + t.qty + t.unit + \",\";\r\n\t\t\t\t});\r\n\t\t\t\tmainDrugStr.value = drugStr.slice(0, drugStr.length - 1);\r\n\t\r\n\t\t\t\tcompArr.value = data.mrs;\r\n\t\t\t\tconst arr = compArr.value.length ? compArr.value : [];\r\n\t\r\n\t\t\t\t\r\n\t\t\t\tcompArr.value.map((item: any) => {\r\n\t\t\t\t\tvar zidrugStr = \"\";\r\n\t\t\t\t\titem.drug.forEach((t: any, idx: any) => {\r\n\t\t\t\t\t\tzidrugStr += t.drugName + t.qty + t.unit + \",\";\r\n\t\t\t\t\t});\r\n\t\t\t\t\titem.drugStr = zidrugStr.slice(0, drugStr.length - 1);\r\n\t\t\t\t});\r\n\t\t\t\tvar keyList: string[] = [\r\n\t\t\t\t\t\"mdtrtNo\",\r\n\t\t\t\t\t\"curEff\",\r\n\t\t\t\t\t\"tcmDiseName\",\r\n\t\t\t\t\t\"tcmSympName\",\r\n\t\t\t\t\t\"els\",\r\n\t\t\t\t\t\"mainPoints\",\r\n\t\t\t\t\t\"cmitSynd\",\r\n\t\t\t\t\t\"fjName\",\r\n\t\t\t\t\t\"drugStr\",\r\n\t\t\t\t\t\"id\",\r\n\t\t\t\t\t\"patnId\",\r\n\t\t\t\t];\r\n\t\t\t\tarr.forEach((t: any, i: any) => {\r\n\t\t\t\t\ttableList.map((e: any, idx) => {\r\n\t\t\t\t\t\tif (idx == 0) {\r\n\t\t\t\t\t\t\te[\"column\" + i] = t.patnRemarks ? t[keyList[idx]] + '(' + t.patnRemarks + ')' : t[keyList[idx]] ;\r\n\t\t\t\t\t\t\te[\"id\" + i] = t.id;\r\n\t\t\t\t\t\t\te[\"patnId\" + i] = t.patnId;\r\n\t\t\t\t\t\t\te['effcollId' + i] = t.effcollId\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t\telse if (idx == 1) {\r\n\t\t\t\t\t\t\te[\"column\" + i] = t[keyList[idx]];\r\n\t\t\t\t\t\t\te[\"id\" + i] = t.id;\r\n\t\t\t\t\t\t\te[\"patnId\" + i] = t.patnId;\r\n\t\t\t\t\t\t\te['effcollId' + i] = t.effcollId\r\n\t\t\t\t\t\t} else if (idx == 2) {\r\n\t\t\t\t\t\t\te[\"column\" + i] = t.alias ? t[keyList[idx]] + '(' + t.alias + ')' : t[keyList[idx]];\r\n\t\t\t\t\t\t} else if (idx == 3) {\r\n\t\t\t\t\t\t\te[\"column\" + i] = t.synDiffAlias ? t[keyList[idx]] + '(' + t.synDiffAlias + ')' : t[keyList[idx]];\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif(idx == 8) {\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\te[\"column\" + i] = t[keyList[idx]];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\trxLoading.value = false;\r\n\t\t\t})\r\n\t\t\t.catch(() => { });\r\n\t};\r\n\tgetDiffMeth();\r\n\tconst changeView = () => {\r\n\t\tisViewForm.value = !isViewForm.value;\r\n\t\tif (!isViewForm.value) {\r\n\t\t\tgetSingleRxView({\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tstime: propfjItem.startval,\r\n \t\tetime: propfjItem.endval,\r\n\t\t\t\t\tfj_name: propfjItem.fjName ? propfjItem.fjName : \"\", //方名\r\n\t\t\t\t\t_times: new Date().getTime(),\r\n\t\t\t\t},\r\n\t\t\t}).then((requestData: any) => {\r\n\t\t\t\tvar myChart = echarts.init(viewsDom.value);\r\n\t\t\t\tmyChart.showLoading();\r\n\t\t\t\tvar option: EChartsOption;\r\n\t\t\t\tvar size = requestData.fjName.length * 20 + 10;\r\n\t\t\t\tsize = size < 120 ? 120 : (size > 140 ? 140 : size);\r\n\t\t\t\tconst graph: graphRole = reactive({\r\n\t\t\t\t\tnodes: [],\r\n\t\t\t\t\tlinks: []\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tgraph.nodes.push({\r\n\t\t\t\t\tid: requestData.fjId,\r\n\t\t\t\t\tname: requestData.fjName,\r\n\t\t\t\t\tvalue: requestData.fjName,\r\n\t\t\t\t\tuseCount: requestData.useCount, //病案个数\r\n\t\t\t\t\tavgEff: requestData.avgEff < 0 ? '--' : requestData.avgEff,\r\n\t\t\t\t\tbgColor: '#3b87cc',\r\n\t\t\t\t\tsymbolSize: 150,\r\n\t\t\t\t})\r\n\t\t\t\trequestData.dxs.forEach((t: any, idx: number) => {\r\n\t\t\t\t\tvar size = t.dxName.length * 20 + 10;\r\n\t\t\t\t\tsize = size < 120 ? 120 : (size > 140 ? 140 : size)\r\n\t\t\t\t\tgraph.nodes.push({\r\n\t\t\t\t\t\tid: t.dxId,\r\n\t\t\t\t\t\tname: t.dxName,\r\n\t\t\t\t\t\tvalue: t.dxName,\r\n\t\t\t\t\t\tuseCount: t.useCount, //病案个数\r\n\t\t\t\t\t\tavgEff: t.avgEff < 0 ? '--' : t.avgEff,\r\n\t\t\t\t\t\tbgColor: '#0b5947',\r\n\t\t\t\t\t\tsymbolSize: size,\r\n\t\t\t\t\t})\r\n\t\t\t\t\tgraph.links.push({\r\n\t\t\t\t\t\tsource: t.dxId,\r\n\t\t\t\t\t\ttarget: requestData.fjId,\r\n\t\t\t\t\t})\r\n\t\t\t\t\tt.synDiff.forEach((e: any, i: number) => {\r\n\t\t\t\t\t\tvar size = e.synDiffName.length * 20 + 10;\r\n\t\t\t\t\t\tsize = size < 120 ? 120 : (size > 140 ? 140 : size)\r\n\t\t\t\t\t\tgraph.nodes.push({\r\n\t\t\t\t\t\t\tid: e.synDiffId,\r\n\t\t\t\t\t\t\tname: e.synDiffName,\r\n\t\t\t\t\t\t\tvalue: e.synDiffName,\r\n\t\t\t\t\t\t\tuseCount: e.useCount, //病案个数\r\n\t\t\t\t\t\t\tavgEff: e.avgEff < 0 ? '--' : e.avgEff,\r\n\t\t\t\t\t\t\tsymbolSize: size,\r\n\t\t\t\t\t\t\tbgColor: '#2b9466',\r\n\t\t\t\t\t\t\tcolor: '#333',\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tgraph.links.push({\r\n\t\t\t\t\t\t\tsource: e.synDiffId,\r\n\t\t\t\t\t\t\ttarget: t.dxId,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\tmyChart.hideLoading();\r\n\t\r\n\t\t\t\toption = {\r\n\t\t\t\t\ttooltip: {\r\n\t\t\t\t\t\tformatter(val: any) {\r\n\t\t\t\t\t\t\treturn val.dataType == 'node' ? val.name : ''\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlegend: [],\r\n\t\t\t\t\tseries: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: \"\",\r\n\t\t\t\t\t\t\ttype: \"graph\",\r\n\t\t\t\t\t\t\tlayout: \"force\",\r\n\t\t\t\t\t\t\tdata: graph.nodes,\r\n\t\t\t\t\t\t\tlinks: graph.links,\r\n\t\t\t\t\t\t\troam: true,\r\n\t\t\t\t\t\t\tdraggable: true,\r\n\t\t\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\t\t\tshow: true,\r\n\t\t\t\t\t\t\t\ttextBorderColor: '#fff',\r\n\t\t\t\t\t\t\t\tcolor: '#fff',\r\n\t\t\t\t\t\t\t\tfontSize: '16px',\r\n\t\t\t\t\t\t\t\tposition: 'inside',\r\n\t\t\t\t\t\t\t\tformatter: ({ data }: {data: any}) => {\r\n\t\t\t\t\t\t\t\t\treturn `${data.name}\\n病案:${data.useCount}份\\n疗效:${data.avgEff == '--' ? '--' : data.avgEff + '%'}`;\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t// fixed:true,\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\titemStyle: {\r\n\t\t\t\t\t\t\t\tcolor: (params: any) => {\r\n\t\t\t\t\t\t\t\t\treturn params.data.bgColor || '#9FE080'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t// labelLayout: {\r\n\t\t\t\t\t\t\t// \thideOverlap: true,\r\n\t\t\t\t\t\t\t// },\r\n\t\t\t\t\t\t\tforce: {\r\n\t\t\t\t\t\t\t\trepulsion: 6000\r\n\t\t\t\t\t\t\t},\t\r\n\t\t\t\t\t\t\t// scaleLimit: {\r\n\t\t\t\t\t\t\t// \tmin: 0.5,\r\n\t\t\t\t\t\t\t// \tmax: 2,\r\n\t\t\t\t\t\t\t// },\r\n\t\t\t\t\t\t\tlineStyle: {\r\n\t\t\t\t\t\t\t\tcolor: \"#2b9466\",\r\n \t\ttype: 'solid',\r\n\t\t\t\t\t\t\t\twidth: 2,\r\n\t\t\t\t\t\t\t\tcurveness: 0.3\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t};\r\n\t\r\n\t\t\t\tmyChart.setOption(option);\r\n\t\t\t})\r\n\t\t\t\t\r\n\t\r\n\t\t}\r\n\t};\r\n\t\nreturn (_ctx: any,_cache: any) => {\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_col = _resolveComponent(\"el-col\")!\n const _component_el_row = _resolveComponent(\"el-row\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_container, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, null, {\n default: _withCtx(() => [\n _createVNode(breadnav, {\n onEmitshowNav: showCaseBack,\n firsttitle: \"处方分析\",\n secondtitle: propfjItem.fjName\n }, null, 8, [\"secondtitle\"])\n ]),\n _: 1\n }),\n _withDirectives((_openBlock(), _createBlock(_component_el_main, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createTextVNode(_toDisplayString(propfjItem.fjName) + \",使用次数: \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(propfjItem.useCount) + \"次\", 1),\n _createTextVNode(\"平均疗效: \"),\n _createElementVNode(\"span\", null, _toDisplayString(propfjItem.avgEff > -1 ? propfjItem.avgEff + '%' : '--'), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_el_button, {\n type: \"success\",\n onClick: changeView\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"切换视图\")\n ]),\n _: 1\n })\n ])\n ]),\n _createVNode(_component_el_row, {\n class: \"rxanalysis-content\",\n gutter: 10\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_col, { span: 24 }, {\n default: _withCtx(() => [\n (isViewForm.value)\n ? (_openBlock(), _createBlock(cassTable, {\n key: 0,\n tableType: \"2\",\n tableData: tableList,\n arrlenth: compArr.value.length,\n onEmitshowEffect: emitshowEffect,\n onEmitshowCaseNo: emitshowCaseNo\n }, null, 8, [\"tableData\", \"arrlenth\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"rxanalysis-views\",\n ref_key: \"viewsDom\",\n ref: viewsDom\n }, null, 512))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n })), [\n [_directive_loading, rxLoading.value]\n ]),\n _createVNode(emrDetail, {\n modelValue: bingliShow.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((bingliShow).value = $event)),\n dataId: caseeffectitem.value.id,\n patnId: caseeffectitem.value.patnId\n }, null, 8, [\"modelValue\", \"dataId\", \"patnId\"]),\n _createVNode(caseeffect, {\n dialogVisible: caseeffectShow.value,\n \"onUpdate:dialogVisible\": _cache[1] || (_cache[1] = ($event: any) => ((caseeffectShow).value = $event)),\n caseeffectitem: caseeffectitem.value\n }, null, 8, [\"dialogVisible\", \"caseeffectitem\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./rxanalysis.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./rxanalysis.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./rxanalysis.vue?vue&type=style&index=0&id=f6dba93e&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f6dba93e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-43ceb91b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"canvas\",\n ref: \"canvas\"\n}\n\nimport { withDefaults, defineComponent,nextTick, reactive } from 'vue'\r\nimport * as echarts from 'echarts/core';\r\nimport {\r\n TitleComponent,\r\n TitleComponentOption,\r\n TooltipComponent,\r\n TooltipComponentOption,\r\n LegendComponent,\r\n LegendComponentOption\r\n} from 'echarts/components';\r\nimport { GraphChart, GraphSeriesOption } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\n\r\ntype EChartsOption = echarts.ComposeOption<\r\n | TitleComponentOption\r\n | TooltipComponentOption\r\n | LegendComponentOption\r\n | GraphSeriesOption\r\n>;\r\n\r\n\r\n interface graphRole {\r\n nodes?: any[]\r\n links?: {\r\n source?: string\r\n target?: string\r\n }[]\r\n }\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'compareDatanalysisView',\n props: {\n graph: null\n },\n setup(__props: any) {\n\nconst props = __props as {\r\n graph: graphRole\r\n };\n\r\necharts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphChart,\r\n CanvasRenderer\r\n]);\r\n\r\n\r\n const graph: graphRole = reactive(props.graph || {\r\n nodes: [],\r\n links: []\r\n })\r\n const renderView = () => {\r\n \r\n nextTick(() => {\r\n var chartDom = document.getElementById('canvas')!;\r\n var myChart = echarts.init(chartDom);\r\n var option: EChartsOption;\r\n\r\n \r\n option = {\r\n // title: {\r\n // text: '',\r\n // subtext: 'Default layout',\r\n // top: 'bottom',\r\n // left: 'right'\r\n // },\r\n tooltip: {\r\n formatter: data => {\r\n var str = '';\r\n if(data.data.value) {\r\n str += data.data.value\r\n }\r\n if(data.data.useCount) {\r\n str += '
病案:' + data.data.useCount\r\n }\r\n if(data.data.avgEff != undefined) {\r\n str += '
疗效:' + (data.data.avgEff == -1 ? '--' : (data.data.avgEff + '%'))\r\n }\r\n // useCount: t.useCount,\r\n // avgEff: t.avgEff,\r\n // if(data.ba)\r\n return str\r\n },\r\n },\r\n legend: [],\r\n series: [\r\n {\r\n name: '',\r\n type: 'graph',\r\n layout: 'force',\r\n data: graph.nodes,\r\n links: graph.links,\r\n roam: true,\r\n draggable: true,\r\n label: {\r\n show: true,\r\n position: 'inside',\r\n color: '#000',\r\n formatter: data => {\r\n var str = data.name;\r\n if(data.data.qty != undefined) {\r\n // data.value.split('').forEach((t, i) => {\r\n str += '\\n' + (data.data.qty || '') + (data.data.unit || '')\r\n // if((i + 1) % 3 == 0 && data.value.length != (i + 1)) {\r\n // str += '\\n'\r\n // }\r\n // })\r\n }\r\n if(data.data.useCount) {\r\n str += '\\n病案:' + data.data.useCount\r\n }\r\n if(data.data.avgEff != undefined) {\r\n str += '\\n疗效:' + (data.data.avgEff == -1 ? '--' : (data.data.avgEff + '%'))\r\n }\r\n \r\n return str\r\n }\r\n },\r\n itemStyle: {\r\n color: (params: any) => {\r\n return params.data.bgColor || '#9FE080'\r\n }\r\n },\r\n emphasis: {\r\n focus: 'adjacency',\r\n scale: true,\r\n lineStyle: {\r\n width: 3,\r\n opacity: 1\r\n }\r\n },\r\n force: {\r\n repulsion: 1500\r\n },\r\n lineStyle: {\r\n type: 'solid',\r\n curveness: 0.3,\r\n width: 3,\r\n color: '#333'\r\n }\r\n }\r\n ]\r\n };\r\n\r\n myChart.setOption(option);\r\n // });\r\n\r\n myChart.setOption(option);\r\n\r\n })\r\n }\r\n renderView()\r\n \r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_container = _resolveComponent(\"el-container\")!\n\n return (_openBlock(), _createBlock(_component_el_container, { class: \"compareDatanalysisView\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, null, 512)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./compareDatanalysisView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./compareDatanalysisView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./compareDatanalysisView.vue?vue&type=style&index=0&id=43ceb91b&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-43ceb91b\"]])\n\nexport default __exports__","\r\n\r\nimport {Ref, ref, reactive, toRefs, nextTick, watch, getCurrentInstance} from 'vue';\r\nimport {\r\n Search\r\n} from '@element-plus/icons-vue';\r\n// 引入公共组件\r\nimport search from '@c/public/search/search.vue'\r\nimport navTitle from '@c/public/navTitle/navTitle.vue'\r\nimport templateProgress from '../components/templateprogress.vue'\r\nimport cCell from '@c/public/cCell/cCell.vue'\r\nimport rxanalysis from '../components/rxanalysis.vue'\r\nimport pickerGroup from '@c/public/pickerGroup/pickerGroup.vue'\r\nimport compareDatanalysisView from '../components/compareDatanalysisView.vue'\r\nimport empty from '@c/public/empty/empty.vue'\r\nimport brain from '@c/public/brain/brain.vue'\r\n\r\nimport { ImgUrlFix } from '@u/contant'\r\n//接口\r\nimport { getRxAnalysis, getSingleRx, getSingleRxView } from '@r/api/xingling'\r\n\r\nimport { pbFn } from '@u/publicMethod'\r\nconst options = [\r\n {\r\n value: '',\r\n label: '全部病案',\r\n },\r\n {\r\n value: '0',\r\n label: '精选病案',\r\n },\r\n {\r\n value: '1',\r\n label: '存疑病案',\r\n },\r\n \r\n]\r\nexport default {\r\n name: 'PersonalTemplate',\r\n components: { \r\n templateProgress,\r\n rxanalysis,\r\n cCell,\r\n pickerGroup,\r\n compareDatanalysisView,\r\n search,\r\n navTitle,\r\n brain,\r\n empty,\r\n },\r\n\r\n setup() {\r\n const analysisLoading = ref(false)\r\n const mrType = ref('')\r\n const keyword = ref('')\r\n const fjItem = ref()\r\n const analysisData: any = ref([])\r\n const isSHowCompareView: Ref = ref(false)\r\n const pointList: any = ref([]) //脑中点\r\n \r\n const startval = ref(pbFn.changeTimeToUse(new Date().getTime() - 60*60*24*180*1000).split(' ')[0]);\r\n const endval = ref(pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0]);\r\n const echartflag = ref(false)\r\n const showCase = ref(false)\r\n const changepicker = (val:any) => {\r\n\r\n }\r\n const showCaseMethod = (item:any, idx:string) => {\r\n fjItem.value = {fjName:item.fjName, useCount:item.useCount, avgEff:item.avgEff, startval:startval.value, endval:endval.value}\r\n showCase.value = true\r\n }\r\n const emitshowCase = () =>{\r\n showCase.value = false\r\n }\r\n \r\n\r\n const stopDefault= (e:any) =>{\r\n e.stopPropagation()\r\n }\r\n const getSearch = () =>{\r\n //查询的接口\r\n analysisLoading.value = true\r\n getRxAnalysis({\r\n data:{\r\n stime: startval.value, \r\n etime: endval.value,\r\n mrType:mrType.value,\t//数字(可空)\t病历类型。空:全部,0:精选病案,1:存疑病案\r\n keyword:keyword.value,\r\n _times: new Date().getTime()\r\n }\r\n }).then((data:any)=>{\r\n \r\n analysisLoading.value = false\r\n\r\n const temList:any[] = []\r\n var arr:any = [], arr1:any = []\r\n data.forEach((item:any,index:number) => {\r\n //查询时,勾选重置为false\r\n const s_tem = {\r\n isChecked : false\r\n }\r\n arr1.push(Object.assign({}, item, s_tem))\r\n //脑图只显示前10条数据\r\n if(index<10){\r\n const tem = {\r\n bgcolor: 'green', \r\n level: item.avgEff > 100 ? 4 : (item.avgEff > 50 ? 3 : item.avgEff > 20 ? 2 : 1), \r\n text: item.fjName, \r\n }\r\n temList.push(tem)\r\n }\r\n \r\n }) \r\n pointList.value = temList\r\n //查询的列表数据\r\n analysisData.value = arr1\r\n //pointList.splice(0, pointList.length, ...arr);\r\n }).catch(()=>{\r\n \r\n })\r\n }\r\n getSearch()\r\n \r\n const onchecked = (e: any,idx: number) => {\r\n analysisData.value[idx].isChecked = e;\r\n }\r\n\r\n const recipeList: any[] = [];\r\n interface graphRole {\r\n nodes: any[]\r\n links: {\r\n source?: string\r\n target?: string\r\n }[]\r\n }\r\n const graph: graphRole = reactive({\r\n nodes: [],\r\n links: []\r\n });\r\n var index = -1;\r\n const compareRecipe = async () => {\r\n const checkedList: string[] = [];\r\n analysisData.value.forEach((t: any, i: any) => {\r\n if(t.isChecked) {\r\n checkedList.push(t.fjName)\r\n }\r\n })\r\n if(isSHowCompareView.value) {\r\n isSHowCompareView.value = false;\r\n return;\r\n }\r\n if(!checkedList.length) return;\r\n // checkedList\r\n graph.nodes.length = 0;\r\n graph.links.length = 0;\r\n recipeList.length = 0;\r\n await getRecipeDetail(checkedList);\r\n\r\n const drugList: any[] = [];\r\n const dxList: string[] = [];\r\n const bzList: string[] = [];\r\n \r\n recipeList.forEach((t, i) => {\r\n t.drug.forEach((e: any) => {\r\n var isIn = drugList.filter(s => s.name == e.drugName.replace('[','').replace(']',''))[0]\r\n if(!isIn) {\r\n drugList.push({\r\n name: e.drugName.replace('[','').replace(']',''),\r\n qty: e.qty,\r\n unit: e.unit\r\n })\r\n }\r\n })\r\n // t.fjData.forEach((t: any) => {\r\n // dxList.push(t.dxName)\r\n // t.synDiff.forEach((it: any) => {\r\n // bzList.push(it.synDiffName)\r\n // })\r\n \r\n // })\r\n });\r\n drugList.forEach(t => {\r\n graph.nodes?.push({\r\n name: t.name,\r\n id: t.name,\r\n value: t.name, \r\n symbolSize: 60, \r\n bgColor: '#3BA272',\r\n qty: t.qty,\r\n unit: t.unit\r\n })\r\n })\r\n recipeList.forEach((t, i) => {\r\n index++;\r\n var targetId = t.fjName + index\r\n graph.nodes?.push({\r\n name: t.fjName,\r\n id: targetId,\r\n value: t.fjName, \r\n useCount: t.useCount,\r\n avgEff: t.avgEff,\r\n symbolSize: 100, \r\n bgColor: '#7ED3F4'\r\n })\r\n drugList.forEach(e => {\r\n t.drug.forEach((s: any) => {\r\n \r\n if(s.drugName.replace('[','').replace(']','') == e.name) {\r\n graph.links?.push({\r\n source: s.drugName.replace('[','').replace(']',''),\r\n target: targetId\r\n })\r\n }\r\n })\r\n })\r\n t.fjData.forEach((e: any) => {\r\n index++;\r\n var targetDxName = e.dxName + index\r\n graph.nodes?.push({\r\n name: e.dxName,\r\n id: targetDxName,\r\n value: e.dxName, \r\n symbolSize: 70, \r\n bgColor: '#FF915A',\r\n useCount: e.useCount,\r\n avgEff: e.avgEff,\r\n })\r\n graph.links?.push({\r\n source: targetDxName,\r\n target: targetId\r\n })\r\n e.synDiff.forEach((s: any) => {\r\n index++;\r\n graph.nodes?.push({\r\n name: s.synDiffName,\r\n id: s.synDiffId + index,\r\n value: s.synDiffName, \r\n symbolSize: 80, \r\n useCount: s.useCount,\r\n avgEff: s.avgEff,\r\n })\r\n graph.links?.push({\r\n source: s.synDiffId + index,\r\n target: targetDxName\r\n })\r\n })\r\n })\r\n });\r\n \r\n \r\n \r\n isSHowCompareView.value = true;\r\n }\r\n const getRecipeDetail = async (list: string[]) => {\r\n const item = list.shift();\r\n const data = await getSingleRx({\r\n data: {\r\n stime: startval.value,\r\n etime: endval.value,\r\n fj_name: item, //方名\r\n mrType: mrType.value,\r\n _times: new Date().getTime(),\r\n },\r\n })\r\n const fjData = await getFjDetail(item)\r\n recipeList.push({\r\n fjName: item,\r\n drug: pbFn.simpleUnique(data.drugs, 'fjbDrugName'),\r\n fjData: fjData.dxs,\r\n avgEff: fjData.avgEff,\r\n useCount: fjData.useCount\r\n });\r\n if(list.length) {\r\n await getRecipeDetail(list)\r\n }\r\n \r\n }\r\n const getFjDetail = async (fjName: string | undefined) => {\r\n const data = await getSingleRxView({\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tstime: startval.value,\r\n etime: endval.value,\r\n\t\t\t\t\tfj_name: fjName, //方名\r\n\t\t\t\t\t_times: new Date().getTime(),\r\n\t\t\t\t},\r\n\t\t\t})\r\n return data\r\n \r\n }\r\n return {\r\n isSHowCompareView,\r\n graph,\r\n mrType,\r\n options,\r\n keyword,\r\n Search,\r\n echartflag,\r\n showCase,\r\n analysisData,\r\n fjItem,\r\n ImgUrlFix,\r\n analysisLoading,\r\n startval,\r\n endval,\r\n pointList,\r\n //方法\r\n // dateChange,\r\n showCaseMethod,\r\n emitshowCase,\r\n getSearch,\r\n onchecked,\r\n compareRecipe,\r\n stopDefault,\r\n\r\n }\r\n }\r\n}\r\n","import { render } from \"./prescriptanslysis.vue?vue&type=template&id=0b767a65&scoped=true&ts=true\"\nimport script from \"./prescriptanslysis.vue?vue&type=script&lang=ts\"\nexport * from \"./prescriptanslysis.vue?vue&type=script&lang=ts\"\n\nimport \"./prescriptanslysis.vue?vue&type=style&index=0&id=0b767a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0b767a65\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from '../../model/Model.js';\nimport { isNameSpecified } from '../../util/model.js';\nimport ComponentModel from '../../model/Component.js';\n\nvar getDefaultSelectorOptions = function (ecModel, type) {\n if (type === 'all') {\n return {\n type: 'all',\n title: ecModel.getLocaleModel().get(['legend', 'selector', 'all'])\n };\n } else if (type === 'inverse') {\n return {\n type: 'inverse',\n title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse'])\n };\n }\n};\n\nvar LegendModel =\n/** @class */\nfunction (_super) {\n __extends(LegendModel, _super);\n\n function LegendModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = LegendModel.type;\n _this.layoutMode = {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n };\n return _this;\n }\n\n LegendModel.prototype.init = function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n };\n\n LegendModel.prototype.mergeOption = function (option, ecModel) {\n _super.prototype.mergeOption.call(this, option, ecModel);\n\n this._updateSelector(option);\n };\n\n LegendModel.prototype._updateSelector = function (option) {\n var selector = option.selector;\n var ecModel = this.ecModel;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, getDefaultSelectorOptions(ecModel, item.type));\n });\n }\n };\n\n LegendModel.prototype.optionUpdated = function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name_1 = legendData[i].get('name');\n\n if (this.isSelected(name_1)) {\n // Force to unselect others\n this.select(name_1);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n };\n\n LegendModel.prototype._updateData = function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (zrUtil.isString(dataItem) || zrUtil.isNumber(dataItem)) {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n };\n\n LegendModel.prototype.getData = function () {\n return this._data;\n };\n\n LegendModel.prototype.select = function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n };\n\n LegendModel.prototype.unSelect = function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n };\n\n LegendModel.prototype.toggleSelected = function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n };\n\n LegendModel.prototype.allSelect = function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n };\n\n LegendModel.prototype.inverseSelect = function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n };\n\n LegendModel.prototype.isSelected = function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n };\n\n LegendModel.prototype.getOrient = function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n };\n\n LegendModel.type = 'legend.plain';\n LegendModel.dependencies = ['series'];\n LegendModel.defaultOption = {\n // zlevel: 0,\n z: 4,\n show: true,\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n borderRadius: 0,\n borderWidth: 0,\n padding: 5,\n itemGap: 10,\n itemWidth: 25,\n itemHeight: 14,\n symbolRotate: 'inherit',\n symbolKeepAspect: true,\n inactiveColor: '#ccc',\n inactiveBorderColor: '#ccc',\n inactiveBorderWidth: 'auto',\n itemStyle: {\n color: 'inherit',\n opacity: 'inherit',\n borderColor: 'inherit',\n borderWidth: 'auto',\n borderCap: 'inherit',\n borderJoin: 'inherit',\n borderDashOffset: 'inherit',\n borderMiterLimit: 'inherit'\n },\n lineStyle: {\n width: 'auto',\n color: 'inherit',\n inactiveColor: '#ccc',\n inactiveWidth: 2,\n opacity: 'inherit',\n type: 'inherit',\n cap: 'inherit',\n join: 'inherit',\n dashOffset: 'inherit',\n miterLimit: 'inherit'\n },\n textStyle: {\n color: '#333'\n },\n selectedMode: true,\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: 'sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n tooltip: {\n show: false\n }\n };\n return LegendModel;\n}(ComponentModel);\n\nexport default LegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport { getLayoutRect, box as layoutBox, positionElement } from '../../util/layout.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as graphic from '../../util/graphic.js';\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\n\nexport function layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\nexport function makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parse, stringify } from 'zrender/lib/tool/color.js';\nimport * as graphic from '../../util/graphic.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, createTextStyle } from '../../label/labelStyle.js';\nimport { makeBackground } from '../helper/listComponent.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport ComponentView from '../../view/Component.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar LegendView =\n/** @class */\nfunction (_super) {\n __extends(LegendView, _super);\n\n function LegendView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = LegendView.type;\n _this.newlineDisabled = false;\n return _this;\n }\n\n LegendView.prototype.init = function () {\n this.group.add(this._contentGroup = new Group());\n this.group.add(this._selectorGroup = new Group());\n this._isFirstRender = true;\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.getContentGroup = function () {\n return this._contentGroup;\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.getSelectorGroup = function () {\n return this._selectorGroup;\n };\n /**\n * @override\n */\n\n\n LegendView.prototype.render = function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n } // selector has been normalized to an array in model\n\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.x = layoutRect.x - mainRect.x;\n this.group.y = layoutRect.y - mainRect.y;\n this.group.markRedraw(); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n };\n\n LegendView.prototype.resetInner = function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n };\n\n LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (legendItemModel, dataIndex) {\n var name = legendItemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n var g = new Group(); // @ts-ignore\n\n g.newline = true;\n contentGroup.add(g);\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var lineVisualStyle = data.getVisual('legendLineStyle') || {};\n var legendIcon = data.getVisual('legendIcon');\n /**\n * `data.getVisual('style')` may be the color from the register\n * in series. For example, for line series,\n */\n\n var style = data.getVisual('style');\n\n var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var style = provider.getItemVisual(idx, 'style');\n var legendIcon = provider.getItemVisual(idx, 'legendIcon');\n var colorArr = parse(style.fill); // Color may be set to transparent in visualMap when data is out of range.\n // Do not show nothing.\n\n if (colorArr && colorArr[3] === 0) {\n colorArr[3] = 0.2; // TODO color is set to 0, 0, 0, 0. Should show correct RGBA\n\n style = zrUtil.extend(zrUtil.extend({}, style), {\n fill: stringify(colorArr, 'rgba')\n });\n }\n\n var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style, legendIcon, selectMode, api); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!legendDrawnMap.get(name)) {\n console.warn(name + ' series not exists. Legend data should be same with series name or data name.');\n }\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n };\n\n LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']);\n setLabelStyle(labelText, {\n normal: labelModel,\n emphasis: emphasisLabelModel\n }, {\n defaultText: selectorItem.title\n });\n enableHoverEmphasis(labelText);\n });\n };\n\n LegendView.prototype._createItem = function (seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) {\n var drawType = seriesModel.visualDrawType;\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var isSelected = legendModel.isSelected(name);\n var iconRotate = legendItemModel.get('symbolRotate');\n var symbolKeepAspect = legendItemModel.get('symbolKeepAspect');\n var legendIconType = legendItemModel.get('icon');\n legendIcon = legendIconType || legendIcon || 'roundRect';\n var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api);\n var itemGroup = new Group();\n var textStyleModel = legendItemModel.getModel('textStyle');\n\n if (zrUtil.isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === 'inherit')) {\n // Series has specific way to define legend icon\n itemGroup.add(seriesModel.getLegendIcon({\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n icon: legendIcon,\n iconRotate: iconRotate,\n itemStyle: style.itemStyle,\n lineStyle: style.lineStyle,\n symbolKeepAspect: symbolKeepAspect\n }));\n } else {\n // Use default legend icon policy for most series\n var rotate = legendIconType === 'inherit' && seriesModel.getData().getVisual('symbol') ? iconRotate === 'inherit' ? seriesModel.getData().getVisual('symbolRotate') : iconRotate : 0; // No rotation for no icon\n\n itemGroup.add(getDefaultLegendIcon({\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n icon: legendIcon,\n iconRotate: rotate,\n itemStyle: style.itemStyle,\n lineStyle: style.lineStyle,\n symbolKeepAspect: symbolKeepAspect\n }));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (zrUtil.isString(formatter) && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (zrUtil.isFunction(formatter)) {\n content = formatter(name);\n }\n\n var inactiveColor = legendItemModel.get('inactiveColor');\n itemGroup.add(new graphic.Text({\n style: createTextStyle(textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n fill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n align: textAlign,\n verticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true\n });\n var tooltipModel = legendItemModel.getModel('tooltip');\n\n if (tooltipModel.get('show')) {\n graphic.setTooltipConfig({\n el: hitRect,\n componentModel: legendModel,\n itemName: name,\n itemTooltipOption: tooltipModel.option\n });\n }\n\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n enableHoverEmphasis(itemGroup); // @ts-ignore\n\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n };\n\n LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n selectorGroup.markRedraw();\n contentGroup.markRedraw();\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.x = selectorPos[0];\n selectorGroup.y = selectorPos[1];\n contentGroup.x = contentPos[0];\n contentGroup.y = contentPos[1];\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.x = contentPos[0];\n contentGroup.y = contentPos[1];\n return this.group.getBoundingRect();\n }\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.remove = function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n };\n\n LegendView.type = 'legend.plain';\n return LegendView;\n}(ComponentView);\n\nfunction getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) {\n /**\n * Use series style if is inherit;\n * elsewise, use legend style\n */\n function handleCommonProps(style, visualStyle) {\n // If lineStyle.width is 'auto', it is set to be 2 if series has border\n if (style.lineWidth === 'auto') {\n style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0;\n }\n\n each(style, function (propVal, propName) {\n style[propName] === 'inherit' && (style[propName] = visualStyle[propName]);\n });\n } // itemStyle\n\n\n var itemStyleModel = legendItemModel.getModel('itemStyle');\n var itemStyle = itemStyleModel.getItemStyle();\n var iconBrushType = iconType.lastIndexOf('empty', 0) === 0 ? 'fill' : 'stroke';\n var decalStyle = itemStyleModel.getShallow('decal');\n itemStyle.decal = !decalStyle || decalStyle === 'inherit' ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api);\n\n if (itemStyle.fill === 'inherit') {\n /**\n * Series with visualDrawType as 'stroke' should have\n * series stroke as legend fill\n */\n itemStyle.fill = itemVisualStyle[drawType];\n }\n\n if (itemStyle.stroke === 'inherit') {\n /**\n * icon type with \"emptyXXX\" should use fill color\n * in visual style\n */\n itemStyle.stroke = itemVisualStyle[iconBrushType];\n }\n\n if (itemStyle.opacity === 'inherit') {\n /**\n * Use lineStyle.opacity if drawType is stroke\n */\n itemStyle.opacity = (drawType === 'fill' ? itemVisualStyle : lineVisualStyle).opacity;\n }\n\n handleCommonProps(itemStyle, itemVisualStyle); // lineStyle\n\n var legendLineModel = legendItemModel.getModel('lineStyle');\n var lineStyle = legendLineModel.getLineStyle();\n handleCommonProps(lineStyle, lineVisualStyle); // Fix auto color to real color\n\n itemStyle.fill === 'auto' && (itemStyle.fill = itemVisualStyle.fill);\n itemStyle.stroke === 'auto' && (itemStyle.stroke = itemVisualStyle.fill);\n lineStyle.stroke === 'auto' && (lineStyle.stroke = itemVisualStyle.fill);\n\n if (!isSelected) {\n var borderWidth = legendItemModel.get('inactiveBorderWidth');\n /**\n * Since stroke is set to be inactiveBorderColor, it may occur that\n * there is no border in series but border in legend, so we need to\n * use border only when series has border if is set to be auto\n */\n\n var visualHasBorder = itemStyle[iconBrushType];\n itemStyle.lineWidth = borderWidth === 'auto' ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth;\n itemStyle.fill = legendItemModel.get('inactiveColor');\n itemStyle.stroke = legendItemModel.get('inactiveBorderColor');\n lineStyle.stroke = legendLineModel.get('inactiveColor');\n lineStyle.lineWidth = legendLineModel.get('inactiveWidth');\n }\n\n return {\n itemStyle: itemStyle,\n lineStyle: lineStyle\n };\n}\n\nfunction getDefaultLegendIcon(opt) {\n var symboType = opt.icon || 'roundRect';\n var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect);\n icon.setStyle(opt.itemStyle);\n icon.rotation = (opt.iconRotate || 0) * Math.PI / 180;\n icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n\n if (symboType.indexOf('empty') > -1) {\n icon.style.stroke = icon.style.fill;\n icon.style.fill = '#fff';\n icon.style.lineWidth = 2;\n }\n\n return icon;\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n // TODO higlight immediately may cause animation loss.\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction isUseHoverLayer(api) {\n var list = api.getZr().storage.getDisplayList();\n var emphasisState;\n var i = 0;\n var len = list.length;\n\n while (i < len && !(emphasisState = list[i].states.emphasis)) {\n i++;\n }\n\n return emphasisState && emphasisState.hoverLayer;\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n if (!isUseHoverLayer(api)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n if (!isUseHoverLayer(api)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nexport default LegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function legendFilter(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (legendModels && legendModels.length) {\n ecModel.filterSeries(function (series) {\n // If in any legend component the status is not selected.\n // Because in legend series is assumed selected when it is not in the legend data.\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(series.name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport { curry, each } from 'zrender/lib/core/util.js';\n\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n\nexport function installLegendAction(registers) {\n /**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n registers.registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\n registers.registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\n registers.registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\n /**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\n registers.registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\n /**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\n registers.registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport LegendModel from './LegendModel.js';\nimport LegendView from './LegendView.js';\nimport legendFilter from './legendFilter.js';\nimport { installLegendAction } from './legendAction.js';\nexport function install(registers) {\n registers.registerComponentModel(LegendModel);\n registers.registerComponentView(LegendView);\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\n registers.registerSubTypeDefaulter('legend', function () {\n return 'plain';\n });\n installLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport LegendModel from './LegendModel.js';\nimport { mergeLayoutParam, getLayoutParams } from '../../util/layout.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar ScrollableLegendModel =\n/** @class */\nfunction (_super) {\n __extends(ScrollableLegendModel, _super);\n\n function ScrollableLegendModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = ScrollableLegendModel.type;\n return _this;\n }\n /**\n * @param {number} scrollDataIndex\n */\n\n\n ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\n this.option.scrollDataIndex = scrollDataIndex;\n };\n\n ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\n var inputPositionParams = getLayoutParams(option);\n\n _super.prototype.init.call(this, option, parentModel, ecModel);\n\n mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n };\n /**\n * @override\n */\n\n\n ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) {\n _super.prototype.mergeOption.call(this, option, ecModel);\n\n mergeAndNormalizeLayoutParams(this, this.option, option);\n };\n\n ScrollableLegendModel.type = 'legend.scroll';\n ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\n scrollDataIndex: 0,\n pageButtonItemGap: 5,\n pageButtonGap: null,\n pageButtonPosition: 'end',\n pageFormatter: '{current}/{total}',\n pageIcons: {\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n },\n pageIconColor: '#2f4554',\n pageIconInactiveColor: '#aaa',\n pageIconSize: 15,\n pageTextStyle: {\n color: '#333'\n },\n animationDurationUpdate: 800\n });\n return ScrollableLegendModel;\n}(LegendModel);\n\n; // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n var orient = legendModel.getOrient();\n var ignoreSize = [1, 1];\n ignoreSize[orient.index] = 0;\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: !!ignoreSize\n });\n}\n\nexport default ScrollableLegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Separate legend and scrollable legend to reduce package size.\n */\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport LegendView from './LegendView.js';\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\n\nvar ScrollableLegendView =\n/** @class */\nfunction (_super) {\n __extends(ScrollableLegendView, _super);\n\n function ScrollableLegendView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = ScrollableLegendView.type;\n _this.newlineDisabled = true;\n _this._currentIndex = 0;\n return _this;\n }\n\n ScrollableLegendView.prototype.init = function () {\n _super.prototype.init.call(this);\n\n this.group.add(this._containerGroup = new Group());\n\n this._containerGroup.add(this.getContentGroup());\n\n this.group.add(this._controllerGroup = new Group());\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.resetInner = function () {\n _super.prototype.resetInner.call(this);\n\n this._controllerGroup.removeAll();\n\n this._containerGroup.removeClipPath();\n\n this._containerGroup.__rectSize = null;\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var self = this; // Render content items.\n\n _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n\n var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n // e.g., '3/12345' should not overlap with the control arrow button.\n\n var pageIconSize = legendModel.get('pageIconSize', true);\n var pageIconSizeArr = zrUtil.isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize];\n createPageButton('pagePrev', 0);\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n controllerGroup.add(new graphic.Text({\n name: 'pageText',\n style: {\n // Placeholder to calculate a proper layout.\n text: 'xx/xx',\n fill: pageTextStyleModel.getTextColor(),\n font: pageTextStyleModel.getFont(),\n verticalAlign: 'middle',\n align: 'center'\n },\n silent: true\n }));\n createPageButton('pageNext', 1);\n\n function createPageButton(name, iconIdx) {\n var pageDataIndexName = name + 'DataIndex';\n var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n // Buttons will be created in each render, so we do not need\n // to worry about avoiding using legendModel kept in scope.\n onclick: zrUtil.bind(self._pageGo, self, pageDataIndexName, legendModel, api)\n }, {\n x: -pageIconSizeArr[0] / 2,\n y: -pageIconSizeArr[1] / 2,\n width: pageIconSizeArr[0],\n height: pageIconSizeArr[1]\n });\n icon.name = name;\n controllerGroup.add(icon);\n }\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n var hw = WH[1 - orientIdx];\n var yx = XY[1 - orientIdx];\n selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var processMaxSize = zrUtil.clone(maxSize);\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);\n\n if (selector) {\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n } else {\n var offset = selectorRect[wh] + selectorButtonGap;\n selectorPos[orientIdx] -= offset;\n mainRect[xy] -= offset;\n }\n\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n selectorGroup.x = selectorPos[0];\n selectorGroup.y = selectorPos[1];\n selectorGroup.markRedraw();\n }\n\n return mainRect;\n };\n\n ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {\n var contentGroup = this.getContentGroup();\n var containerGroup = this._containerGroup;\n var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n layoutUtil.box( // Buttons in controller are layout always horizontally.\n 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n var contentRect = contentGroup.getBoundingRect();\n var controllerRect = controllerGroup.getBoundingRect();\n var showController = this._showController = contentRect[wh] > maxSize[wh]; // In case that the inner elements of contentGroup layout do not based on [0, 0]\n\n var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n // If first rendering, `contentGroup.position` is [0, 0], which\n // does not make sense and may cause unexepcted animation if adopted.\n\n if (!isFirstRender) {\n contentPos[orientIdx] = contentGroup[xy];\n } // Layout container group based on 0.\n\n\n var containerPos = [0, 0];\n var controllerPos = [-controllerRect.x, -controllerRect.y];\n var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n if (showController) {\n var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n if (pageButtonPosition === 'end') {\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n } // controller is on the left / top.\n else {\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n }\n } // Always align controller to content as 'middle'.\n\n\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n contentGroup.setPosition(contentPos);\n containerGroup.setPosition(containerPos);\n controllerGroup.setPosition(controllerPos); // Calculate `mainRect` and set `clipPath`.\n // mainRect should not be calculated by `this.group.getBoundingRect()`\n // for sake of the overflow.\n\n var mainRect = {\n x: 0,\n y: 0\n }; // Consider content may be overflow (should be clipped).\n\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n containerGroup.__rectSize = maxSize[wh];\n\n if (showController) {\n var clipShape = {\n x: 0,\n y: 0\n };\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n clipShape[hw] = mainRect[hw];\n containerGroup.setClipPath(new graphic.Rect({\n shape: clipShape\n })); // Consider content may be larger than container, container rect\n // can not be obtained from `containerGroup.getBoundingRect()`.\n\n containerGroup.__rectSize = clipShape[wh];\n } else {\n // Do not remove or ignore controller. Keep them set as placeholders.\n controllerGroup.eachChild(function (child) {\n child.attr({\n invisible: true,\n silent: true\n });\n });\n } // Content translate animation.\n\n\n var pageInfo = this._getPageInfo(legendModel);\n\n pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n x: pageInfo.contentPosition[0],\n y: pageInfo.contentPosition[1]\n }, // When switch from \"show controller\" to \"not show controller\", view should be\n // updated immediately without animation, otherwise causes weird effect.\n showController ? legendModel : null);\n\n this._updatePageInfoView(legendModel, pageInfo);\n\n return mainRect;\n };\n\n ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) {\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n scrollDataIndex != null && api.dispatchAction({\n type: 'legendScroll',\n scrollDataIndex: scrollDataIndex,\n legendId: legendModel.id\n });\n };\n\n ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) {\n var controllerGroup = this._controllerGroup;\n zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n var key = name + 'DataIndex';\n var canJump = pageInfo[key] != null;\n var icon = controllerGroup.childOfName(name);\n\n if (icon) {\n icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n icon.cursor = canJump ? 'pointer' : 'default';\n }\n });\n var pageText = controllerGroup.childOfName('pageText');\n var pageFormatter = legendModel.get('pageFormatter');\n var pageIndex = pageInfo.pageIndex;\n var current = pageIndex != null ? pageIndex + 1 : 0;\n var total = pageInfo.pageCount;\n pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current == null ? '' : current + '').replace('{total}', total == null ? '' : total + '') : pageFormatter({\n current: current,\n total: total\n }));\n };\n /**\n * contentPosition: Array., null when data item not found.\n * pageIndex: number, null when data item not found.\n * pageCount: number, always be a number, can be 0.\n * pagePrevDataIndex: number, null when no previous page.\n * pageNextDataIndex: number, null when no next page.\n * }\n */\n\n\n ScrollableLegendView.prototype._getPageInfo = function (legendModel) {\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n var contentGroup = this.getContentGroup();\n var containerRectSize = this._containerGroup.__rectSize;\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n var children = contentGroup.children();\n var targetItem = children[targetItemIndex];\n var itemCount = children.length;\n var pCount = !itemCount ? 0 : 1;\n var result = {\n contentPosition: [contentGroup.x, contentGroup.y],\n pageCount: pCount,\n pageIndex: pCount - 1,\n pagePrevDataIndex: null,\n pageNextDataIndex: null\n };\n\n if (!targetItem) {\n return result;\n }\n\n var targetItemInfo = getItemInfo(targetItem);\n result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n // (1) Always align based on the left/top most item.\n // (2) It is user-friendly that the last item shown in the\n // current window is shown at the begining of next window.\n // Otherwise if half of the last item is cut by the window,\n // it will have no chance to display entirely.\n // (3) Consider that item size probably be different, we\n // have calculate pageIndex by size rather than item index,\n // and we can not get page index directly by division.\n // (4) The window is to narrow to contain more than\n // one item, we should make sure that the page can be fliped.\n\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // Half of the last item is out of the window.\n !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n // can be started at the current item or the last item.\n currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n if (winEndItemInfo.i > winStartItemInfo.i) {\n winStartItemInfo = winEndItemInfo;\n } else {\n // e.g., when page size is smaller than item size.\n winStartItemInfo = currItemInfo;\n }\n\n if (winStartItemInfo) {\n if (result.pageNextDataIndex == null) {\n result.pageNextDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n }\n }\n\n winEndItemInfo = currItemInfo;\n }\n\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // If the the end item does not intersect with the window started\n // from the current item, a page can be settled.\n (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n winStartItemInfo.i < winEndItemInfo.i) {\n winEndItemInfo = winStartItemInfo;\n\n if (result.pagePrevDataIndex == null) {\n result.pagePrevDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n ++result.pageIndex;\n }\n\n winStartItemInfo = currItemInfo;\n }\n\n return result;\n\n function getItemInfo(el) {\n if (el) {\n var itemRect = el.getBoundingRect();\n var start = itemRect[xy] + el[xy];\n return {\n s: start,\n e: start + itemRect[wh],\n i: el.__legendDataIndex\n };\n }\n }\n\n function intersect(itemInfo, winStart) {\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n }\n };\n\n ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\n if (!this._showController) {\n return 0;\n }\n\n var index;\n var contentGroup = this.getContentGroup();\n var defaultIndex;\n contentGroup.eachChild(function (child, idx) {\n var legendDataIdx = child.__legendDataIndex; // FIXME\n // If the given targetDataIndex (from model) is illegal,\n // we use defaultIndex. But the index on the legend model and\n // action payload is still illegal. That case will not be\n // changed until some scenario requires.\n\n if (defaultIndex == null && legendDataIdx != null) {\n defaultIndex = idx;\n }\n\n if (legendDataIdx === targetDataIndex) {\n index = idx;\n }\n });\n return index != null ? index : defaultIndex;\n };\n\n ScrollableLegendView.type = 'legend.scroll';\n return ScrollableLegendView;\n}(LegendView);\n\nexport default ScrollableLegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function installScrollableLegendAction(registers) {\n /**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\n registers.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n var scrollDataIndex = payload.scrollDataIndex;\n scrollDataIndex != null && ecModel.eachComponent({\n mainType: 'legend',\n subType: 'scroll',\n query: payload\n }, function (legendModel) {\n legendModel.setScrollDataIndex(scrollDataIndex);\n });\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport ScrollableLegendModel from './ScrollableLegendModel.js';\nimport ScrollableLegendView from './ScrollableLegendView.js';\nimport installScrollableLegendAction from './scrollableLegendAction.js';\nexport function install(registers) {\n use(installLegendPlain);\n registers.registerComponentModel(ScrollableLegendModel);\n registers.registerComponentView(ScrollableLegendView);\n installScrollableLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport { install as installLegendScroll } from './installLegendScroll.js';\nexport function install(registers) {\n use(installLegendPlain);\n use(installLegendScroll);\n}"],"sourceRoot":""}